diff --git a/0liverkong_ip_master/authorship.json b/0liverkong_ip_master/authorship.json index 9669a131..1966338d 100644 --- a/0liverkong_ip_master/authorship.json +++ b/0liverkong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String doBy;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" Deadline(String name, String doBy) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" this.doBy \u003d doBy;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.doBy);","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":13}},{"path":"src/main/java/Dook.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"public class Dook {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" private static final ArrayList\u003cString\u003e TASK_TYPES \u003d new ArrayList\u003cString\u003e(Arrays.asList(\"todo\", \"deadline\", \"event\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" private static final String LINE_SEPARATOR \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" enum Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" BYE,","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" LIST,","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" ADD,","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" MARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" UNMARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" DELETE,","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" OTHER","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" Dook() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" private static Command getCommand(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" String firstWord;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" firstWord \u003d input.split(\" \", 2)[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" if (firstWord.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" return Command.BYE;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" return Command.LIST;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" } else if (Dook.TASK_TYPES.contains(firstWord)){","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" return Command.ADD;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" return Command.MARK;","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":" return Command.UNMARK;","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"delete\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" return Command.DELETE;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" return Command.OTHER;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"0liverkong"},"content":" private static Task getTask(String input) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"0liverkong"},"content":" String[] cmds \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"0liverkong"},"content":" String taskType \u003d cmds[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"0liverkong"},"content":" String taskDetails;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"0liverkong"},"content":" taskDetails \u003d cmds[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"0liverkong"},"content":" if (taskDetails.isBlank()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\":( Task description cannot be empty!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\":( Task description cannot be empty!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"0liverkong"},"content":" if (taskType.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"0liverkong"},"content":" return new ToDo(taskDetails);","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"0liverkong"},"content":" } else if (taskType.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"0liverkong"},"content":" String[] details \u003d taskDetails.split(\" /by \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"0liverkong"},"content":" String name \u003d details[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"0liverkong"},"content":" String doBy \u003d details[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"0liverkong"},"content":" return new Deadline(name, doBy);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"0liverkong"},"content":" String[] details \u003d taskDetails.split(\" /from \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"0liverkong"},"content":" String name \u003d details[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"0liverkong"},"content":" String[] startAndEnd \u003d details[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"0liverkong"},"content":" String start \u003d startAndEnd[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"0liverkong"},"content":" String end \u003d startAndEnd[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"0liverkong"},"content":" return new Event(name, start, end);","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo! Wrong format for \" + taskType + \" command!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"0liverkong"},"content":" private void introduceSelf() {","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"0liverkong"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"0liverkong"},"content":" + \"| _ \\\\ ___ ___ | | __ ╱|、\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"0liverkong"},"content":" + \"| | | |/ _ \\\\ / _ \\\\| |/ / (˚ˎ 。7 \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"0liverkong"},"content":" + \"| |_| | |_| | |_| | \u003c |、˜〵 \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"0liverkong"},"content":" + \"|____/ \\\\___/ \\\\___/|_|\\\\_\\\\ じしˍ,)ノ\\n\"; Dook.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Hello from Dook! :D meow\\n\" + logo);","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"What can I do for you? uwu\"); Dook.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"0liverkong"},"content":" private static void printSeparator() {","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"0liverkong"},"content":" System.out.println(Dook.LINE_SEPARATOR);","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"0liverkong"},"content":" private boolean executeCommand(String input) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"0liverkong"},"content":" Command command \u003d Dook.getCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"0liverkong"},"content":" String[] cmds \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"0liverkong"},"content":" switch(command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"0liverkong"},"content":" case BYE:","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"0liverkong"},"content":" executeBYE();","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"0liverkong"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"0liverkong"},"content":" case LIST:","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"0liverkong"},"content":" executeLIST();","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"0liverkong"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"0liverkong"},"content":" case ADD:","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"0liverkong"},"content":" executeADD(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"0liverkong"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"0liverkong"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"0liverkong"},"content":" executeMARK(cmds);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"0liverkong"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"0liverkong"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"0liverkong"},"content":" executeUNMARK(cmds);","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"0liverkong"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"0liverkong"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"0liverkong"},"content":" executeDELETE(cmds);","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"0liverkong"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"0liverkong"},"content":" case OTHER:","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"I don\u0027t understand this command :( Try again!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"0liverkong"},"content":" private void executeBYE() {","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Bye :(. Hope to see you again soon! ≽^- ˕ -^≼\");","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"0liverkong"},"content":" Dook.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"0liverkong"},"content":" private void executeLIST() {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Here are your tasks!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"0liverkong"},"content":" System.out.println(this.tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"0liverkong"},"content":" private void executeADD(String input) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"0liverkong"},"content":" Task toAdd \u003d Dook.getTask(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"0liverkong"},"content":" this.tasks.addTask(toAdd);","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Oki! I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"0liverkong"},"content":" System.out.println(toAdd);","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"0liverkong"},"content":" this.tasks.printStatus();","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"0liverkong"},"content":" private void executeMARK(String[] cmds) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"0liverkong"},"content":" Task toMark;","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"0liverkong"},"content":" int positionToMark \u003d Integer.valueOf(cmds[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"0liverkong"},"content":" toMark \u003d this.tasks.get(positionToMark - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"0liverkong"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to mark :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for mark is in the range [0 - %d]\",","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"0liverkong"},"content":" this.tasks.size(), this.tasks.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"mark\\\"!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"0liverkong"},"content":" toMark.markAsDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Oki! :D Good job! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"0liverkong"},"content":" System.out.println(toMark);","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"0liverkong"},"content":" private void executeUNMARK(String[] cmds) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"0liverkong"},"content":" Task toUnmark;","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"0liverkong"},"content":" int positionToUnmark \u003d Integer.valueOf(cmds[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"0liverkong"},"content":" toUnmark \u003d this.tasks.get(positionToUnmark - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"0liverkong"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to unmark :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for unmark is in the range [0 - %d]\",","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"0liverkong"},"content":" this.tasks.size(), this.tasks.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"ummark\\\"!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"0liverkong"},"content":" toUnmark.markAsNotDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Lazy bum. \u003e:( I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"0liverkong"},"content":" System.out.println(toUnmark);","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"0liverkong"},"content":" private void executeDELETE(String[] cmds) throws DookException {","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"0liverkong"},"content":" Task toDelete;","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"0liverkong"},"content":" int positionToDelete;","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"0liverkong"},"content":" positionToDelete \u003d Integer.valueOf(cmds[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"0liverkong"},"content":" toDelete \u003d this.tasks.get(positionToDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"0liverkong"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to delete :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for delete is in the range [0 - %d]\",","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"0liverkong"},"content":" this.tasks.size(), this.tasks.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"delete\\\"!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Oki! Bye Bye task!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"0liverkong"},"content":" this.tasks.remove(positionToDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"You deleted this task :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"0liverkong"},"content":" System.out.println(toDelete);","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"0liverkong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"0liverkong"},"content":" Dook dook \u003d new Dook();","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"0liverkong"},"content":" dook.introduceSelf();","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"0liverkong"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":215,"author":{"gitId":"0liverkong"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":216,"author":{"gitId":"0liverkong"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"0liverkong"},"content":" Dook.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":218,"author":{"gitId":"0liverkong"},"content":" boolean willExitLoop \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":220,"author":{"gitId":"0liverkong"},"content":" willExitLoop \u003d dook.executeCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"0liverkong"},"content":" } catch (DookException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"0liverkong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":223,"author":{"gitId":"0liverkong"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":224,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Error detected, please try again :(\\n\" + e);","lastModifiedDate":"2024-01-24"},{"lineNumber":225,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":226,"author":{"gitId":"0liverkong"},"content":" if (willExitLoop) {","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":228,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":229,"author":{"gitId":"0liverkong"},"content":" Dook.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":232,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"0liverkong":232}},{"path":"src/main/java/DookException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class DookException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" public DookException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"0liverkong":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" private String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" Event(String name, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.start, this.end);","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":15}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Parser {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0liverkong":3}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String name;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" private boolean done;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" Task(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" Task(String name, boolean done) {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" this.done \u003d done;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" this.done \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" private String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" return (this.done ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.name);","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":31}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" TaskList() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" count++;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" public void remove(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" this.tasks.remove(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" return this.tasks.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" public int size() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" public void printStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Now you have no tasks on the list :(((\");","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" } else if (count \u003d\u003d 1) {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"You have 1 task on the list!\");","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" System.out.printf(\"You have %d tasks on the list!%n\", count);","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" ArrayList\u003cString\u003e a \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":" a.add(String.format(\"%d. %s\",","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"0liverkong"},"content":" i + 1,","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"0liverkong"},"content":" this.tasks.get(i)));","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"0liverkong"},"content":" return String.join(\"\\n\", a);","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":48}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" ToDo(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"todo join sports club","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":"mark1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":"mark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":"unmark 10","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"unmark 8","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":"unmark","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"delete 5","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":"list","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0liverkong":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":"0liverkong"},"content":"java -classpath ../bin Dook \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"0liverkong":1,"-":37}}] +[{"path":"src/main/dook.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"T | | borrow book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"T | | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"T | | join sports club","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"D | X | return book | by: June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"T | | something","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"E | | something | from: tomorrow to: end of the century","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":6}},{"path":"src/main/java/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" private final Parser.TaskType tasktype;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" private final String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" AddCommand(Parser.TaskType tasktype, String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" this.tasktype \u003d tasktype;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" Task toAdd \u003d Parser.getTask(tasktype, description);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" tasks.addTask(toAdd);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Oki! I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" ui.println(toAdd.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" tasks.printStatus();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" storage.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":19}},{"path":"src/main/java/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" ByeCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" this.isExit \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Bye :(. Hope to see you again soon! ≽^- ˕ -^≼\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" storage.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":11}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" protected boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" return isExit;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DookException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":8}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String doBy;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" Deadline(String name, String doBy) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" this.doBy \u003d doBy;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" Deadline(String name, String doBy, boolean done) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" super(name, done);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" this.doBy \u003d doBy;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" public String fileRepresentation() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" return String.format(\"D | %s | %s | by: %s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" this.getDescription(),","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" this.doBy);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.doBy);","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":25}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private final int positionToDelete;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" DeleteCommand(int positionToDelete) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" this.positionToDelete \u003d positionToDelete;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" Task toDelete;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" toDelete \u003d tasks.get(positionToDelete - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to delete :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for delete is in the range [1 - %d]\",","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" tasks.size(), tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Oki! Bye Bye task!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" tasks.remove(positionToDelete - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" ui.println(\"You deleted this task :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" ui.println(toDelete.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" storage.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":29}},{"path":"src/main/java/Dook.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"public class Dook {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" private static final String FILE_PATH \u003d \"src/main/dook.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" private Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" Dook() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" this.storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" this.ui.introduce();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" this.tasks \u003d this.storage.loadTaskListFromFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" this.ui.println(\"error while loading file, specific error: \" + e);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" } catch (DookException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" this.ui.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" boolean willExitLoop \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" while (!willExitLoop) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" this.ui.printSeparator();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" Command c \u003d this.parser.parse(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" c.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":" willExitLoop \u003d c.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" this.ui.printException(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" this.ui.printSeparator();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"0liverkong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"0liverkong"},"content":" Dook dook \u003d new Dook();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"0liverkong"},"content":" dook.run();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"0liverkong":50}},{"path":"src/main/java/DookException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class DookException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" public DookException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"0liverkong":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" private String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" Event(String name, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" public Event(String name, String start, String end, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" this(name, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" public String fileRepresentation() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" return String.format(\"E | %s | %s | from: %s to: %s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" this.getDescription(),","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" this.start,","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" this.end);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.start, this.end);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":28}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Here are your tasks!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" ui.println(tasks.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":7}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" private final int positionToMark;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" MarkCommand(int positionToMark) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" this.positionToMark \u003d positionToMark;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" Task toMark;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" toMark \u003d tasks.get(positionToMark - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to mark :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for mark is in the range [1 - %d]\",","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" tasks.size(), tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" toMark.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Oki! :D Good job! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" ui.println(toMark.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" storage.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":30}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"public class Parser {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" EVENT,","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" private static final ArrayList\u003cString\u003e TASK_TYPES \u003d new ArrayList\u003cString\u003e(Arrays.asList(\"todo\", \"deadline\", \"event\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" public Command parse(String input) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" String[] split \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" String firstWord \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" } else if (TASK_TYPES.contains(firstWord)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" String secondWord;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" secondWord \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Noo!! task description cannot be empty!!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" switch (firstWord) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" return new AddCommand(TaskType.TODO, secondWord);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" return new AddCommand(TaskType.DEADLINE, secondWord);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" return new AddCommand(TaskType.EVENT, secondWord);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":" String secondWord;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" secondWord \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" return new MarkCommand(Integer.valueOf(secondWord));","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"mark\\\"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"0liverkong"},"content":" String secondWord;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"0liverkong"},"content":" secondWord \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"0liverkong"},"content":" return new UnmarkCommand(Integer.valueOf(secondWord));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"unmark\\\"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"0liverkong"},"content":" } else if (firstWord.equals(\"delete\")){","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"0liverkong"},"content":" String secondWord;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"0liverkong"},"content":" secondWord \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"0liverkong"},"content":" return new DeleteCommand(Integer.valueOf(secondWord));","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"0liverkong"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Ohnoo! Please enter a number after \\\"delete\\\"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"I don\u0027t understand this command :( Try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"0liverkong"},"content":" public static Task getTask(TaskType taskType, String taskDetails) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"0liverkong"},"content":" String name;","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"0liverkong"},"content":" String[] details;","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"0liverkong"},"content":" if (taskDetails.isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\":( Task description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"0liverkong"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"0liverkong"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"0liverkong"},"content":" return new ToDo(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"0liverkong"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"0liverkong"},"content":" details \u003d taskDetails.split(\" /by \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"0liverkong"},"content":" name \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"0liverkong"},"content":" String doBy \u003d details[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"0liverkong"},"content":" return new Deadline(name, doBy);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"0liverkong"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"0liverkong"},"content":" details \u003d taskDetails.split(\" /from \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"0liverkong"},"content":" name \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"0liverkong"},"content":" String[] startAndEnd \u003d details[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"0liverkong"},"content":" String start \u003d startAndEnd[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"0liverkong"},"content":" String end \u003d startAndEnd[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"0liverkong"},"content":" return new Event(name, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo! Wrong format for \" + taskType + \" command!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo! Wrong format for \" + taskType + \" command!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"0liverkong"},"content":" public static Task parseFileLineToTask(String s) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"0liverkong"},"content":" String[] split \u003d s.split(\" \\\\| \", 3);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"0liverkong"},"content":" String taskTypeString \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"0liverkong"},"content":" String isDoneString \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"0liverkong"},"content":" String description \u003d split[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"0liverkong"},"content":" TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"0liverkong"},"content":" String[] details;","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"0liverkong"},"content":" String name;","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"0liverkong"},"content":" boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"0liverkong"},"content":" switch (taskTypeString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"0liverkong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"0liverkong"},"content":" taskType \u003d TaskType.DEADLINE;","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"0liverkong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"0liverkong"},"content":" taskType \u003d TaskType.EVENT;","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"0liverkong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"0liverkong"},"content":" taskType \u003d TaskType.TODO;","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Invalid task type at \\\"\" + s + \"\\\".\");","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"0liverkong"},"content":" switch (isDoneString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"0liverkong"},"content":" case \"X\":","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"0liverkong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"0liverkong"},"content":" case \" \":","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"0liverkong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"0liverkong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo!! Invalid completion indicator at \\\"\" + s + \"\\\"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"0liverkong"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"0liverkong"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"0liverkong"},"content":" return new ToDo(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"0liverkong"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"0liverkong"},"content":" details \u003d description.split(\" \\\\| \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"0liverkong"},"content":" name \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"0liverkong"},"content":" String doBy \u003d details[1].split(\"by: \", 2)[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"0liverkong"},"content":" return new Deadline(name, doBy, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"0liverkong"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"0liverkong"},"content":" details \u003d description.split(\" \\\\| \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"0liverkong"},"content":" name \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"0liverkong"},"content":" String[] startAndEnd \u003d details[1].split(\" to: \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"0liverkong"},"content":" String start \u003d startAndEnd[0].split(\"from: \", 2)[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"0liverkong"},"content":" String end \u003d startAndEnd[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"0liverkong"},"content":" return new Event(name, start, end, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"0liverkong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo! Wrong format for \" + taskType + \" command in the file... :)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"0liverkong"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"Oh nyo! Wrong format for \" + taskType + \" command in the file... :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0liverkong":149}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" private final String path;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" Storage(String path) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" public void write(TaskList tasks) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" File f \u003d new File(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" if (!f.exists()){","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" FileWriter writer \u003d new FileWriter(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" writer.write(tasks.fileRepresentation());","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" throw new DookException(\"An error occured when writing to your files...:(\" + e);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" public TaskList loadTaskListFromFile() throws IOException, DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" BufferedReader r;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" r \u003d new BufferedReader(new FileReader(path));","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" String line \u003d r.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" taskList.addTask(Parser.parseFileLineToTask(line));","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":" line \u003d r.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" r.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" return taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":42}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private String name;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" Task(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" this(name, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" Task(String name, boolean done) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" this.isDone \u003d done;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" protected String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" protected String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" return this.name;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" public abstract String fileRepresentation();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), this.name);","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":35}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" TaskList() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" count++;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" public void remove(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" this.tasks.remove(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" return this.tasks.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" public int size() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" public void printStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Now you have no tasks on the list :(((\");","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"0liverkong"},"content":" } else if (count \u003d\u003d 1) {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"You have 1 task on the list!\");","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"0liverkong"},"content":" System.out.printf(\"You have %d tasks on the list!%n\", count);","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"0liverkong"},"content":" public String fileRepresentation() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"0liverkong"},"content":" ArrayList\u003cString\u003e a \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"0liverkong"},"content":" for (Task t : this.tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"0liverkong"},"content":" a.add(t.fileRepresentation());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"0liverkong"},"content":" return String.join(\"\\n\", a);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"0liverkong"},"content":" ArrayList\u003cString\u003e a \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"0liverkong"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"0liverkong"},"content":" a.add(String.format(\"%d. %s\",","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"0liverkong"},"content":" i + 1,","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"0liverkong"},"content":" this.tasks.get(i)));","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"0liverkong"},"content":" return String.join(\"\\n\", a);","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":56}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" ToDo(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":" super(name);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" public ToDo(String name, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" this(name);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" public String fileRepresentation() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" return String.format(\"T | %s | %s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" this.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"0liverkong":22}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" private static final String LINE_SEPARATOR \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":" public void printSeparator() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" System.out.println(LINE_SEPARATOR);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" public void introduce() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" + \"| _ \\\\ ___ ___ | | __ ╱|、\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" + \"| | | |/ _ \\\\ / _ \\\\| |/ / (˚ˎ 。7 \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" + \"| |_| | |_| | |_| | \u003c |、˜〵 \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" + \"|____/ \\\\___/ \\\\___/|_|\\\\_\\\\ じしˍ,)ノ\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" printSeparator();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"Hello from Dook! :D meow\\n\" + logo);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" System.out.println(\"What can I do for you? uwu\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" public void printException(Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" public void println(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" System.out.println(s);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":28}},{"path":"src/main/java/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":" private final int positionToUnmark;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":" UnmarkCommand(int positionToUnmark) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":" this.positionToUnmark \u003d positionToUnmark;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DookException {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":" Task toUnmark;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":" toUnmark \u003d tasks.get(positionToUnmark - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":" DookException err;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(\"Nooo! You don\u0027t have any tasks to unmark :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":" err \u003d new DookException(String.format(\"Nooo! \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":" \"You have %d tasks!\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":" \" Valid inputs for unmark is in the range [1 - %d]\",","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":" tasks.size(), tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"0liverkong"},"content":" throw err;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"0liverkong"},"content":" toUnmark.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"0liverkong"},"content":" ui.println(\"Lazy bum. \u003e:( I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"0liverkong"},"content":" ui.println(toUnmark.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"0liverkong"},"content":" storage.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"0liverkong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"0liverkong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":30}},{"path":"text-ui-test/data/dook.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"T | | borrow book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"T | | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"T | | join sports club","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"D | X | return book | by: June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"E | | project meeting | from: Mon 2pm to: 4pm","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0liverkong"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0liverkong"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"0liverkong"},"content":"todo join sports club","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"0liverkong"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"0liverkong"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"0liverkong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"0liverkong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"0liverkong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"0liverkong"},"content":"mark1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"0liverkong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"0liverkong"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"0liverkong"},"content":"mark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"0liverkong"},"content":"unmark 10","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"0liverkong"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"0liverkong"},"content":"unmark 8","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"0liverkong"},"content":"unmark","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"0liverkong"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"0liverkong"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"0liverkong"},"content":"delete 5","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"0liverkong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"0liverkong"},"content":"bye","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"0liverkong":21}},{"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":"0liverkong"},"content":"java -classpath ../bin Dook \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"0liverkong":1,"-":37}}] diff --git a/0liverkong_ip_master/commits.json b/0liverkong_ip_master/commits.json index 2b6c8665..f864695d 100644 --- a/0liverkong_ip_master/commits.json +++ b/0liverkong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"0liverkong":[{"date":"2024-01-22","commitResults":[{"hash":"0a61d8dfac4461c78f757c8932ac3a0f8affd7da","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"d7a18ec7d90b8d54bd83415404da2a616510c068","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"f604c26805d9a90534b4d8f55fa1080901961ceb","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"8441cb5c27a9cff4edb1e4a6989cf563efd2b4f2","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 3","messageBody":"","tags":["Level-4","Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":6}}},{"hash":"107270f85201e5e57d77a987afa14e169c7c3aeb","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 4","messageBody":"","tags":["Level-5","Level-4.1"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":11}}}]},{"date":"2024-01-23","commitResults":[{"hash":"9f020430a7e115b989daaa84476d699d3f8045dd","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":67}}}]},{"date":"2024-01-24","commitResults":[{"hash":"25eb10a4eea0c29d6c3c72e1fbfcbc15a5b7f9cd","isMergeCommit":false,"messageTitle":"completed Week 2 Level 6","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":56}}}]},{"date":"2024-01-25","commitResults":[{"hash":"a583e3f2ef31127afa56d8661df95d082faed491","isMergeCommit":false,"messageTitle":"Small cleanup","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"17bfac4b13c4240306895f31ed9c80af53a713f3","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"dd3aa3cc53ea363088a043f5b8e43260d2d14ae7","isMergeCommit":false,"messageTitle":"Completed Week 2 TextUITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":20,"deletions":0},"java":{"insertions":6,"deletions":3},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"f4a813de98e28b51ac3ad8140b670ec2f0d672fd","isMergeCommit":false,"messageTitle":"Change indentation to match style convention","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":24}}}]}]},"authorFileTypeContributionMap":{"0liverkong":{"java":357,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"0liverkong":8160.576},"authorDisplayNameMap":{"0liverkong":"CS2103T-W08-1 OLIV.. LOK"}} +{"authorDailyContributionsMap":{"0liverkong":[{"date":"2024-01-22","commitResults":[{"hash":"0a61d8dfac4461c78f757c8932ac3a0f8affd7da","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"d7a18ec7d90b8d54bd83415404da2a616510c068","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"f604c26805d9a90534b4d8f55fa1080901961ceb","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"8441cb5c27a9cff4edb1e4a6989cf563efd2b4f2","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 3","messageBody":"","tags":["Level-4","Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":6}}},{"hash":"107270f85201e5e57d77a987afa14e169c7c3aeb","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 4","messageBody":"","tags":["Level-5","Level-4.1"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":11}}}]},{"date":"2024-01-23","commitResults":[{"hash":"9f020430a7e115b989daaa84476d699d3f8045dd","isMergeCommit":false,"messageTitle":"Completed Week 2 Level 5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":67}}}]},{"date":"2024-01-24","commitResults":[{"hash":"25eb10a4eea0c29d6c3c72e1fbfcbc15a5b7f9cd","isMergeCommit":false,"messageTitle":"completed Week 2 Level 6","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":56}}}]},{"date":"2024-01-25","commitResults":[{"hash":"a583e3f2ef31127afa56d8661df95d082faed491","isMergeCommit":false,"messageTitle":"Small cleanup","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"17bfac4b13c4240306895f31ed9c80af53a713f3","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"dd3aa3cc53ea363088a043f5b8e43260d2d14ae7","isMergeCommit":false,"messageTitle":"Completed Week 2 TextUITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":20,"deletions":0},"java":{"insertions":6,"deletions":3},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"f4a813de98e28b51ac3ad8140b670ec2f0d672fd","isMergeCommit":false,"messageTitle":"Change indentation to match style convention","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":24}}},{"hash":"aee896e7f8a43edda69c5c1eb18f0876fdcfe329","isMergeCommit":false,"messageTitle":"Separate Dook and Ui classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":19}}},{"hash":"0e31bbfeadcbca3bb5a4440fe11bd1c6e3b80c13","isMergeCommit":false,"messageTitle":"Create Command and Parser classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"3e4e1838d997cb4562e5fc2c460aad0f74ab1afb","isMergeCommit":false,"messageTitle":"Add OOP functionality for Command and Parser classes and subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":225,"deletions":199}}},{"hash":"0d65bdb8a6be4ffb0c97417ad1ac68f429e4c8ce","isMergeCommit":false,"messageTitle":"Add functionality to save on bye command","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":39,"deletions":9}}},{"hash":"d929fd1f3f49da60f6fb11603bc34bfb103cb7e5","isMergeCommit":false,"messageTitle":"Add file reading and writing functionality and more OOP abstraction","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":6},"java":{"insertions":175,"deletions":39}}}]}]},"authorFileTypeContributionMap":{"0liverkong":{"java":574,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":32}},"authorContributionVariance":{"0liverkong":52119.582},"authorDisplayNameMap":{"0liverkong":"CS2103T-W08-1 OLIV.. LOK"}} diff --git a/Anant1902_ip_master/authorship.json b/Anant1902_ip_master/authorship.json index f2bba84a..d8a52ab8 100644 --- a/Anant1902_ip_master/authorship.json +++ b/Anant1902_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":"Anant1902"},"content":" mainClass.set(\"drake.Drake\")","lastModifiedDate":"2024-01-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":"Anant1902"},"content":" archiveBaseName \u003d \"drake\"","lastModifiedDate":"2024-01-28"},{"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,"Anant1902":2}},{"path":"src/main/java/drake/Drake.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import drake.task.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import drake.task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import drake.task.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" // Method to get the appropriate enum value from a string input","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" public static Command fromString(String commandString) {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" switch (commandString.toLowerCase()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return BYE;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" return LIST;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" return MARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" return UNMARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" return TODO;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" return DEADLINE;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" return EVENT;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return DELETE;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" return INVALID;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":"public class Drake {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" private boolean isRunning; ","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" public Drake(String FILE_PATH) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" taskList \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" String commandWord \u003d words[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" Command command \u003d Command.fromString(commandWord);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" storage.saveTasks(taskList.getTasks());","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" ui.showTaskList(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" int markIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" taskList.markTask(markIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" ui.showMarkTask(taskList.getTask(markIndex));","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":" int unmarkIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" taskList.unmarkTask(unmarkIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" ui.showUnmarkTask(taskList.getTask(unmarkIndex));","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" String todoDescription \u003d Parser.parseDescription(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" Todo newTodo \u003d new Todo(todoDescription);","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newTodo);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newTodo, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" Object[] deadlineDetails \u003d Parser.parseDeadline(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" Deadline newDeadline \u003d new Deadline((String) deadlineDetails[0], (LocalDateTime) deadlineDetails[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newDeadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newDeadline, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" ui.showError(\"Oops, format error! Type in a date in the form yy-mm-dd and try again!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"Anant1902"},"content":" String[] eventDetails \u003d Parser.parseEvent(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" Event newEvent \u003d new Event(eventDetails[0], eventDetails[1], eventDetails[2]);","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newEvent);","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newEvent, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" int deleteIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":" Task deletedTask \u003d taskList.deleteTask(deleteIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Anant1902"},"content":" ui.showDeleteTask(deletedTask, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"Anant1902"},"content":" case INVALID:","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"Anant1902"},"content":" throw new NotValidCommand(\"That\u0027s not a valid command!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"Anant1902"},"content":" } catch (NotValidCommand | TodoLeftBlank e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"Anant1902"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"Anant1902"},"content":" scanner.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"Anant1902"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"Anant1902"},"content":" new Drake(\"./list.dat\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Anant1902":124}},{"path":"src/main/java/drake/NotValidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class NotValidCommand extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" public NotValidCommand(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":6}},{"path":"src/main/java/drake/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public static Command parseCommand(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" String commandWord \u003d words[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" return Command.fromString(commandWord);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public static int parseTaskIndex(String input) throws NumberFormatException {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"No task index provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return Integer.parseInt(words[1]) - 1; // Subtract 1 to convert to zero-based index","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" public static String parseDescription(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" throw new TodoLeftBlank(\"Looks like you left the description of the todo empty. This isn\u0027t allowed!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" return parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" public static Object[] parseDeadline(String input) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" /by \");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"Deadline time not provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" String description \u003d parts[0].substring(parts[0].indexOf(\u0027 \u0027) + 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" LocalDate date \u003d LocalDate.parse(parts[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" LocalDateTime by \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" return new Object[]{description, by};","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" public static String[] parseEvent(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.substring(6).split(\"/\");","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" String title \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" String from \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" String to \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 1; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"from\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" from \u003d parts[i].substring(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" to \u003d parts[i].substring(3);","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" return new String[]{title, from, to};","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":60}},{"path":"src/main/java/drake/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" private String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" try (ObjectOutputStream oos \u003d new ObjectOutputStream(new FileOutputStream(filePath))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" oos.writeObject(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Error saving list!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" try (ObjectInputStream ois \u003d new ObjectInputStream(new FileInputStream(file))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" return (ArrayList\u003cTask\u003e) ois.readObject();","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Class not found!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":36}},{"path":"src/main/java/drake/TodoLeftBlank.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class TodoLeftBlank extends StringIndexOutOfBoundsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" public TodoLeftBlank(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":6}},{"path":"src/main/java/drake/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" What\u0027s up everyone. I\u0027m Drake.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" How can I help?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" See you later, alligator! \");","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" public void showTask(String message, Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"You asked for the tasks in your list? Here:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" ArrayList\u003cTask\u003e taskList \u003d tasks.getTasks();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" public void showAddTask(Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" public void showMarkTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Cool. I now declare this task marked as, done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" public void showUnmarkTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" public void showDeleteTask(Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" // ... Other UI methods ...","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":77}},{"path":"src/main/java/drake/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":19}},{"path":"src/main/java/drake/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":17}},{"path":"src/main/java/drake/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"public class Task implements Serializable { // adapted skeleton from cs2103t course website","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" return (isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return getStatusIcon() + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":22}},{"path":"src/main/java/drake/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public Task deleteTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" public Task getTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" public void markTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" public void unmarkTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" // ... Other task list operations ...","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":50}},{"path":"src/main/java/drake/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"todo","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"invalidddd command","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"todo eat dinner","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"deadline finish 2103 assignment /by 2024-10-06","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"event hackathon /from Wed 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"deadline finish 2103 assignment /by Wednesday","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":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":"Anant1902"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/drake/*.java","lastModifiedDate":"2024-01-28"},{"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":"Anant1902"},"content":"java -classpath ../bin Drake \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"Anant1902":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":"Anant1902"},"content":" mainClass.set(\"drake.Drake\")","lastModifiedDate":"2024-01-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":"Anant1902"},"content":" archiveBaseName \u003d \"drake\"","lastModifiedDate":"2024-01-28"},{"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,"Anant1902":2}},{"path":"src/main/java/drake/Drake.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import drake.task.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import drake.task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import drake.task.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" // Method to get the appropriate enum value from a string input","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" public static Command fromString(String commandString) {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" switch (commandString.toLowerCase()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return BYE;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" return LIST;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" return MARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" return UNMARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" return TODO;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" return DEADLINE;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" return EVENT;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return DELETE;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" return INVALID;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":"public class Drake {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" private boolean isRunning; ","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" public Drake(String FILE_PATH) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" taskList \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" public void run() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" String commandWord \u003d words[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" Command command \u003d Command.fromString(commandWord);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" storage.saveTasks(taskList.getTasks());","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" ui.showTaskList(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" int markIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" taskList.markTask(markIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" ui.showMarkTask(taskList.getTask(markIndex));","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":" int unmarkIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" taskList.unmarkTask(unmarkIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" ui.showUnmarkTask(taskList.getTask(unmarkIndex));","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" String todoDescription \u003d Parser.parseDescription(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" Todo newTodo \u003d new Todo(todoDescription);","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newTodo);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newTodo, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" Object[] deadlineDetails \u003d Parser.parseDeadline (input);","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" Deadline newDeadline \u003d new Deadline((String) deadlineDetails[0], (LocalDateTime) deadlineDetails[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newDeadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newDeadline, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" ui.showError(\"Oops, format error! Type in a date in the form yy-mm-dd and try again!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"Anant1902"},"content":" String[] eventDetails \u003d Parser.parseEvent(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" Event newEvent \u003d new Event(eventDetails[0], eventDetails[1], eventDetails[2]);","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" taskList.addTask(newEvent);","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" ui.showAddTask(newEvent, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" int deleteIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":" Task deletedTask \u003d taskList.deleteTask(deleteIndex);","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Anant1902"},"content":" ui.showDeleteTask(deletedTask, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"Anant1902"},"content":" case INVALID:","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"Anant1902"},"content":" throw new NotValidCommand(\"That\u0027s not a valid command!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"Anant1902"},"content":" } catch (NotValidCommand | TodoLeftBlank e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"Anant1902"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"Anant1902"},"content":" scanner.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"Anant1902"},"content":" public static void main(String[] args) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Anant1902"},"content":" new Drake(\"./list.dat\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Anant1902":124}},{"path":"src/main/java/drake/NotValidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class NotValidCommand extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" public NotValidCommand(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":6}},{"path":"src/main/java/drake/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public static Command parseCommand(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" String commandWord \u003d words[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" return Command.fromString(commandWord);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public static int parseTaskIndex(String input) throws NumberFormatException {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"No task index provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return Integer.parseInt(words[1]) - 1; // Subtract 1 to convert to zero-based index","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" public static String parseDescription(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" throw new TodoLeftBlank(\"Looks like you left the description of the todo empty. This isn\u0027t allowed!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" return parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" public static Object[] parseDeadline(String input) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" /by \");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"Deadline time not provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" if (!parts[0].split(\" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" throw new Exception(\"Looks like you spelt deadline wrong. Please try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" String description \u003d parts[0].substring(parts[0].indexOf(\u0027 \u0027) + 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" LocalDate date;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" date \u003d LocalDate.parse(parts[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" by \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" throw new Exception(\"Date is of the wrong format!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" } ","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" return new Object[]{description, by};","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" public static String[] parseEvent(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.substring(6).split(\"/\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" String title \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" String from \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" String to \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 1; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"from\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" from \u003d parts[i].substring(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" to \u003d parts[i].substring(3);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" return new String[]{title, from, to};","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":73}},{"path":"src/main/java/drake/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" private String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" try (ObjectOutputStream oos \u003d new ObjectOutputStream(new FileOutputStream(filePath))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" oos.writeObject(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Error saving list!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" try (ObjectInputStream ois \u003d new ObjectInputStream(new FileInputStream(file))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" return (ArrayList\u003cTask\u003e) ois.readObject();","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Class not found!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":36}},{"path":"src/main/java/drake/TodoLeftBlank.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class TodoLeftBlank extends StringIndexOutOfBoundsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" public TodoLeftBlank(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":6}},{"path":"src/main/java/drake/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" What\u0027s up everyone. I\u0027m Drake.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" How can I help?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" See you later, alligator! \");","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" public void showTask(String message, Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"You asked for the tasks in your list? Here:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" ArrayList\u003cTask\u003e taskList \u003d tasks.getTasks();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" public void showAddTask(Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" public void showMarkTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Cool. I now declare this task marked as, done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" public void showUnmarkTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" public void showDeleteTask(Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" // ... Other UI methods ...","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":77}},{"path":"src/main/java/drake/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":19}},{"path":"src/main/java/drake/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":17}},{"path":"src/main/java/drake/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"public class Task implements Serializable { // adapted skeleton from cs2103t course website","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" return (isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" return getStatusIcon() + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":22}},{"path":"src/main/java/drake/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public Task deleteTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" public Task getTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" public void markTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" public void unmarkTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" // ... Other task list operations ...","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":50}},{"path":"src/main/java/drake/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":13}},{"path":"src/test/java/drake/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" public void parseDeadlineSucessTest() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" String testInput \u003d \"deadline eat dinner /by 2024-12-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" Object[] actualOutput \u003d Parser.parseDeadline(testInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" Object[] expectedOutput \u003d {\"eat dinner\", LocalDate.parse(\"2024-12-01\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).atStartOfDay()};","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" assertEquals(actualOutput, actualOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" public void parseDeadlineWrongDateFormatTest() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" String testInput \u003d \"deadline eat dinner /by 2024-14-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" Object[] actualOutput \u003d Parser.parseDeadline(testInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" Object[] expectedWrongOutput \u003d {\"eat dinner\", LocalDate.parse(\"2024-14-01\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).atStartOfDay()};","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" assertEquals(actualOutput, expectedWrongOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" fail(); //This block should not be run.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" assertEquals(\"Date is of the wrong format!\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" public void parseDeadlineWrongSpellingFormatTest() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" String testInput \u003d \"dedline eat dinner /by 2024-12-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" Object[] actualOutput \u003d Parser.parseDeadline(testInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" Object[] expectedWrongOutput \u003d {\"eat dinner\", LocalDate.parse(\"2024-12-01\", DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).atStartOfDay()};","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" fail(); //This block should not be run.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" assertEquals(\"Looks like you spelt deadline wrong. Please try again!\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Anant1902":55}},{"path":"src/test/java/drake/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import drake.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public void getTaskSucessTest() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" TaskList input \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" Task task1 \u003d new Todo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" input.addTask(task1);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" input.addTask(new Todo(\"eat\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" Task actualOutput \u003d input.getTask(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" assertEquals(task1, actualOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" public void getTaskOutofBoundsTest() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" TaskList input \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" Task task1 \u003d new Todo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" input.addTask(task1);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" input.addTask(new Todo(\"eat\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" Task actualOutput \u003d input.getTask(3);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" assertEquals(task1, actualOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" assertEquals(\"Task index is out of bounds.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Anant1902":41}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"todo","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"invalidddd command","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"todo eat dinner","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"deadline finish 2103 assignment /by 2024-10-06","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"event hackathon /from Wed 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"deadline finish 2103 assignment /by Wednesday","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":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":"Anant1902"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/drake/*.java","lastModifiedDate":"2024-01-28"},{"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":"Anant1902"},"content":"java -classpath ../bin Drake \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"Anant1902":2}}] diff --git a/Anant1902_ip_master/commits.json b/Anant1902_ip_master/commits.json index aa1234a6..9922ec8f 100644 --- a/Anant1902_ip_master/commits.json +++ b/Anant1902_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Anant1902":[{"date":"2024-01-23","commitResults":[{"hash":"ae90a7eb803bb99b458c07e55f09a6e54761a25b","isMergeCommit":false,"messageTitle":"Add greeting skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}}]},{"date":"2024-01-24","commitResults":[{"hash":"8812e1586c8ab979e68b1940155255345909a3e4","isMergeCommit":false,"messageTitle":"Add echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"2c27be34ce8b679b6b3b1518c5e8ee1808ff9ead","isMergeCommit":false,"messageTitle":"Enable add and list feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}},{"hash":"2e3b53fdc1c06fec6b64681412aaee1536132489","isMergeCommit":false,"messageTitle":"Add mark feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":5}}},{"hash":"8018728190acbd3a0bb2ff2b1a583350cbca76c6","isMergeCommit":false,"messageTitle":"add todo, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":6}}},{"hash":"46648c55ac3ee45c05fdf66e3bee5daab410e6e5","isMergeCommit":false,"messageTitle":"Test using i/o redirection","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"e258f85319b6bd84fcc151dea76b1b7f7043b933","isMergeCommit":false,"messageTitle":"Handle erros","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":75}}},{"hash":"42a9b0fbd06fd900ed6b782fb82b821ac59a688e","isMergeCommit":false,"messageTitle":"add delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"42d638cd355430959196e5a4dc45a5c3218e4f79","isMergeCommit":false,"messageTitle":"Use enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":95}}}]},{"date":"2024-01-28","commitResults":[{"hash":"09e7171ee6367bbc8af364a1e417101aa512dcf4","isMergeCommit":false,"messageTitle":"Enabled file save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"b6eb395efe68740a6c5b50eb5a451ceb4139b8b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"36f39842000ab521d2b13596ca54367309f861f0","isMergeCommit":false,"messageTitle":"Enable date recognition","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":12}}},{"hash":"a517babbe99965851cce9a0086aa0888549e50c2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"13010ef354ee6df5c45ed8df9b6a7c72737b090c","isMergeCommit":false,"messageTitle":"Add OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":262,"deletions":138}}},{"hash":"f93de4713e3a36fce213b3b0706cc187fd4fb829","isMergeCommit":false,"messageTitle":"Structure into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10},"sh":{"insertions":1,"deletions":1}}},{"hash":"509134d27a53b00839699a12db7ad6d79c4fb6b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4530cf1c96684878e50395802bcfddc3c18afc5a","isMergeCommit":false,"messageTitle":"add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Anant1902":{"java":430,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":2,"txt":16}},"authorContributionVariance":{"Anant1902":53343.04},"authorDisplayNameMap":{"Anant1902":"CS2103T-F13-1 ANAN..NKER"}} +{"authorDailyContributionsMap":{"Anant1902":[{"date":"2024-01-23","commitResults":[{"hash":"ae90a7eb803bb99b458c07e55f09a6e54761a25b","isMergeCommit":false,"messageTitle":"Add greeting skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}}]},{"date":"2024-01-24","commitResults":[{"hash":"8812e1586c8ab979e68b1940155255345909a3e4","isMergeCommit":false,"messageTitle":"Add echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"2c27be34ce8b679b6b3b1518c5e8ee1808ff9ead","isMergeCommit":false,"messageTitle":"Enable add and list feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}},{"hash":"2e3b53fdc1c06fec6b64681412aaee1536132489","isMergeCommit":false,"messageTitle":"Add mark feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":5}}},{"hash":"8018728190acbd3a0bb2ff2b1a583350cbca76c6","isMergeCommit":false,"messageTitle":"add todo, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":6}}},{"hash":"46648c55ac3ee45c05fdf66e3bee5daab410e6e5","isMergeCommit":false,"messageTitle":"Test using i/o redirection","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"e258f85319b6bd84fcc151dea76b1b7f7043b933","isMergeCommit":false,"messageTitle":"Handle erros","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":75}}},{"hash":"42a9b0fbd06fd900ed6b782fb82b821ac59a688e","isMergeCommit":false,"messageTitle":"add delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"42d638cd355430959196e5a4dc45a5c3218e4f79","isMergeCommit":false,"messageTitle":"Use enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":95}}}]},{"date":"2024-01-28","commitResults":[{"hash":"09e7171ee6367bbc8af364a1e417101aa512dcf4","isMergeCommit":false,"messageTitle":"Enabled file save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"b6eb395efe68740a6c5b50eb5a451ceb4139b8b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"36f39842000ab521d2b13596ca54367309f861f0","isMergeCommit":false,"messageTitle":"Enable date recognition","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":12}}},{"hash":"a517babbe99965851cce9a0086aa0888549e50c2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"13010ef354ee6df5c45ed8df9b6a7c72737b090c","isMergeCommit":false,"messageTitle":"Add OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":262,"deletions":138}}},{"hash":"f93de4713e3a36fce213b3b0706cc187fd4fb829","isMergeCommit":false,"messageTitle":"Structure into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10},"sh":{"insertions":1,"deletions":1}}},{"hash":"509134d27a53b00839699a12db7ad6d79c4fb6b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4530cf1c96684878e50395802bcfddc3c18afc5a","isMergeCommit":false,"messageTitle":"add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"5932a69c817df5bfefeff8e99515cc49f1c5b2c3","isMergeCommit":false,"messageTitle":"Add 2 junit tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"Anant1902":{"java":539,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":2,"txt":16}},"authorContributionVariance":{"Anant1902":45512.24},"authorDisplayNameMap":{"Anant1902":"CS2103T-F13-1 ANAN..NKER"}} diff --git a/AndrewOng2066_ip_master/authorship.json b/AndrewOng2066_ip_master/authorship.json index 588a6a8d..56568b5a 100644 --- a/AndrewOng2066_ip_master/authorship.json +++ b/AndrewOng2066_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":" public enum Action {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":" LIST,","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" EVENT,","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":" MARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":" UNMARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":" DELETE,","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":" BYE","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":" static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":"// System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Hello! I\u0027m AndrewOng2066\");","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"AndrewOng2066"},"content":" String userInput \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"AndrewOng2066"},"content":" while (!userInput.equalsIgnoreCase(Action.BYE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput[0].equalsIgnoreCase(Action.LIST.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"AndrewOng2066"},"content":" listMethod();","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.MARK.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"AndrewOng2066"},"content":" markTask(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.UNMARK.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"AndrewOng2066"},"content":" unmarkTask(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.TODO.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"AndrewOng2066"},"content":" addToDo(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.DEADLINE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"AndrewOng2066"},"content":" addDeadline(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.EVENT.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"AndrewOng2066"},"content":" addEvent(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.DELETE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"AndrewOng2066"},"content":" deleteTask(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" I\u0027m sorry, I do not understand that.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"AndrewOng2066"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"AndrewOng2066"},"content":" userInput \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"AndrewOng2066"},"content":" public static void listMethod() {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"AndrewOng2066"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"AndrewOng2066"},"content":" public static void addToDo(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"AndrewOng2066"},"content":" for (int i \u003d 1; i \u003c splitInput.length; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":92,"author":{"gitId":"AndrewOng2066"},"content":" name +\u003d splitInput[i] + \" \";","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"AndrewOng2066"},"content":" ToDo newToDo\u003d new ToDo(name.trim());","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newToDo);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newToDo.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"AndrewOng2066"},"content":" public static void addDeadline(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"AndrewOng2066"},"content":" String[] deadlineSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"AndrewOng2066"},"content":" if (deadlineSplit.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid format for new Deadline!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d deadlineSplit[0].substring(9).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"AndrewOng2066"},"content":" String by \u003d deadlineSplit[1].substring(3).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":116,"author":{"gitId":"AndrewOng2066"},"content":" Deadline newDeadline \u003d new Deadline(name, by);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newDeadline.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"AndrewOng2066"},"content":" public static void addEvent(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"AndrewOng2066"},"content":" String[] eventSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"AndrewOng2066"},"content":" if (eventSplit.length \u003c 3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid format for new Event!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d eventSplit[0].substring(6).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"AndrewOng2066"},"content":" String start \u003d eventSplit[1].substring(5).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"AndrewOng2066"},"content":" String end \u003d eventSplit[2].substring(3).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"AndrewOng2066"},"content":" Event newEvent \u003d new Event(name, start, end);","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":140,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newEvent.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"AndrewOng2066"},"content":" public static void markTask(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"AndrewOng2066"},"content":" String splitInput[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"AndrewOng2066"},"content":" int choiceMark;","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"AndrewOng2066"},"content":" choiceMark \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceMark \u003c\u003d tasks.size() \u0026\u0026 choiceMark \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"AndrewOng2066"},"content":" tasks.get(choiceMark - 1).markAsDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"AndrewOng2066"},"content":"// System.out.println(\" \" + \"[X] \" + tasks.get(choiceMark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + tasks.get(choiceMark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":163,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid choice.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":165,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":167,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":168,"author":{"gitId":"AndrewOng2066"},"content":" public static void unmarkTask(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"AndrewOng2066"},"content":" String splitInput[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"AndrewOng2066"},"content":" int choiceUnmark;","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"AndrewOng2066"},"content":" choiceUnmark \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceUnmark \u003c\u003d tasks.size() \u0026\u0026 choiceUnmark \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"AndrewOng2066"},"content":" tasks.get(choiceUnmark - 1).markAsUndone();","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"AndrewOng2066"},"content":"// System.out.println(\" \" + \"[ ] \" + tasks.get(choiceUnmark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + tasks.get(choiceUnmark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Invalid choice\");","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"AndrewOng2066"},"content":" public static void deleteTask(String input) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"AndrewOng2066"},"content":" int choiceDelete;","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"AndrewOng2066"},"content":" choiceDelete \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceDelete \u003c\u003d tasks.size() \u0026\u0026 choiceDelete \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"AndrewOng2066"},"content":" Task deletedTask \u003d tasks.get(choiceDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"AndrewOng2066"},"content":" tasks.remove(choiceDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Noted, I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + deletedTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Invalid choice\");","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":213,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":216,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":217,"author":{"gitId":"AndrewOng2066"},"content":"class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":218,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":219,"author":{"gitId":"AndrewOng2066"},"content":" private String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":220,"author":{"gitId":"AndrewOng2066"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":221,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":222,"author":{"gitId":"AndrewOng2066"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":223,"author":{"gitId":"AndrewOng2066"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":224,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":225,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":226,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":227,"author":{"gitId":"AndrewOng2066"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":228,"author":{"gitId":"AndrewOng2066"},"content":" return description;","lastModifiedDate":"2024-01-22"},{"lineNumber":229,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":230,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":231,"author":{"gitId":"AndrewOng2066"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":232,"author":{"gitId":"AndrewOng2066"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":233,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":234,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":235,"author":{"gitId":"AndrewOng2066"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":236,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":237,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":238,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":239,"author":{"gitId":"AndrewOng2066"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":240,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":243,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":244,"author":{"gitId":"AndrewOng2066"},"content":"class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":245,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":246,"author":{"gitId":"AndrewOng2066"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":247,"author":{"gitId":"AndrewOng2066"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":248,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":249,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":250,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":251,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":252,"author":{"gitId":"AndrewOng2066"},"content":" return \"[T][\"+ super.getStatusIcon() +\"] \" + super.getDescription();","lastModifiedDate":"2024-01-24"},{"lineNumber":253,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":254,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":255,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":256,"author":{"gitId":"AndrewOng2066"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":257,"author":{"gitId":"AndrewOng2066"},"content":" String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":258,"author":{"gitId":"AndrewOng2066"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":259,"author":{"gitId":"AndrewOng2066"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":260,"author":{"gitId":"AndrewOng2066"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":261,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":262,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":263,"author":{"gitId":"AndrewOng2066"},"content":" public String getBy() {","lastModifiedDate":"2024-01-22"},{"lineNumber":264,"author":{"gitId":"AndrewOng2066"},"content":" return this.by;","lastModifiedDate":"2024-01-22"},{"lineNumber":265,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":266,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":267,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":268,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":269,"author":{"gitId":"AndrewOng2066"},"content":" return \"[D][\"+ super.getStatusIcon() +\"] \" + super.getDescription() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":270,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":271,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":272,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":273,"author":{"gitId":"AndrewOng2066"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":274,"author":{"gitId":"AndrewOng2066"},"content":" String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":275,"author":{"gitId":"AndrewOng2066"},"content":" String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":276,"author":{"gitId":"AndrewOng2066"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":277,"author":{"gitId":"AndrewOng2066"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":278,"author":{"gitId":"AndrewOng2066"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":279,"author":{"gitId":"AndrewOng2066"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":280,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":281,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":282,"author":{"gitId":"AndrewOng2066"},"content":" public String getStart() {","lastModifiedDate":"2024-01-22"},{"lineNumber":283,"author":{"gitId":"AndrewOng2066"},"content":" return this.start;","lastModifiedDate":"2024-01-22"},{"lineNumber":284,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":285,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":286,"author":{"gitId":"AndrewOng2066"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-22"},{"lineNumber":287,"author":{"gitId":"AndrewOng2066"},"content":" return this.end;","lastModifiedDate":"2024-01-22"},{"lineNumber":288,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":289,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":290,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":291,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":292,"author":{"gitId":"AndrewOng2066"},"content":" return \"[E][\"+ super.getStatusIcon() +\"] \" + super.getDescription() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":293,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":294,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":295,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":296,"author":{"gitId":"AndrewOng2066"},"content":"class DukeException extends Exception{","lastModifiedDate":"2024-01-23"},{"lineNumber":297,"author":{"gitId":"AndrewOng2066"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":298,"author":{"gitId":"AndrewOng2066"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":299,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":300,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AndrewOng2066":289,"-":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"todo return book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AndrewOng2066":3}},{"path":"text-ui-test/input2.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"todo join sports club","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"mark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":"event","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":"event meeting","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":"event meeting /from 5pm","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":"mark 7","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":"mark","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"mark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":"unmark","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":"unmark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":"unmark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":"delete","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":"delete 6","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":"blah","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":30}},{"path":"text-ui-test/runtest2.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"@ECHO OFF","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"REM delete output from previous run","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":" exit /b 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":")","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":"java -classpath ..\\bin Duke \u003c input2.txt \u003e ACTUAL2.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"REM compare the output to the expected output","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"FC ACTUAL2.TXT EXPECTED2.TXT","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":21}},{"path":"text-ui-test/runtest2.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"# delete output from previous run","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":" exit 1","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":"java -classpath ../bin Duke \u003c input2.txt \u003e ACTUAL2.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":"# convert to UNIX format","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":"cp EXPECTED2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":"dos2unix ACTUAL2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":"diff ACTUAL2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"AndrewOng2066"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"AndrewOng2066"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"AndrewOng2066"},"content":" exit 0","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"AndrewOng2066"},"content":"else","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"AndrewOng2066"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"AndrewOng2066"},"content":" exit 1","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":38}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"T | 0 | read book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"D | 1 | return book | now","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"D | 0 | meeting | now","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"AndrewOng2066":4}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" public enum Action {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":" LIST,","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":" EVENT,","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":" MARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":" UNMARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":" DELETE,","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":" BYE","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":" static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":32,"author":{"gitId":"AndrewOng2066"},"content":"// System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Hello! I\u0027m AndrewOng2066\");","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"AndrewOng2066"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"AndrewOng2066"},"content":" String userInput \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"AndrewOng2066"},"content":" while (!userInput.equalsIgnoreCase(Action.BYE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput[0].equalsIgnoreCase(Action.LIST.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"AndrewOng2066"},"content":" listMethod();","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.MARK.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"AndrewOng2066"},"content":" markTask(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.UNMARK.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"AndrewOng2066"},"content":" unmarkTask(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.TODO.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"AndrewOng2066"},"content":" addToDo(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.DEADLINE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"AndrewOng2066"},"content":" addDeadline(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.EVENT.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"AndrewOng2066"},"content":" addEvent(userInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput[0].equalsIgnoreCase(Action.DELETE.toString())) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"AndrewOng2066"},"content":" deleteTask(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" I\u0027m sorry, I do not understand that.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"AndrewOng2066"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"AndrewOng2066"},"content":" userInput \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"AndrewOng2066"},"content":" * Lists down the list of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"AndrewOng2066"},"content":" public static void listMethod() {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e allTasksFromFile \u003d getTasksFromFile(\"duke\");","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"AndrewOng2066"},"content":" tasks \u003d allTasksFromFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"AndrewOng2066"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"AndrewOng2066"},"content":" * Adds a new ToDo.","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"AndrewOng2066"},"content":" * Adds the new ToDo inside the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the description of the ToDo.","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException If missing the description.","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"AndrewOng2066"},"content":" public static void addToDo(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"AndrewOng2066"},"content":" for (int i \u003d 1; i \u003c splitInput.length; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"AndrewOng2066"},"content":" name +\u003d splitInput[i] + \" \";","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"AndrewOng2066"},"content":" ToDo newToDo\u003d new ToDo(name.trim(), false);","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newToDo);","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e newToDoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"AndrewOng2066"},"content":" newToDoList.add(newToDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", newToDoList, false);//TODO Add the file function here","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newToDo.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"AndrewOng2066"},"content":" * Adds a new Deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"AndrewOng2066"},"content":" * Adds the new Deadline inside the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the description and \u0027by\u0027 of the Deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException If missing the description or \u0027by\u0027.","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"AndrewOng2066"},"content":" public static void addDeadline(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"AndrewOng2066"},"content":" String[] deadlineSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"AndrewOng2066"},"content":" if (deadlineSplit.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid format for new Deadline!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d deadlineSplit[0].substring(9).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"AndrewOng2066"},"content":" String by \u003d deadlineSplit[1].substring(3).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"AndrewOng2066"},"content":" Deadline newDeadline \u003d new Deadline(name,false, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e newDeadlineList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"AndrewOng2066"},"content":" newDeadlineList.add(newDeadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", newDeadlineList, false);//TODO Add the file function here","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newDeadline.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":151,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"AndrewOng2066"},"content":" * Adds a new Event.","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"AndrewOng2066"},"content":" * Adds the new Event inside the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the description, \u0027from\u0027, and \u0027to\u0027 of the Event.","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException if missing the description, \u0027from\u0027 or \u0027to\u0027.","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"AndrewOng2066"},"content":" public static void addEvent(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"AndrewOng2066"},"content":" if (splitInput.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Missing the description!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"AndrewOng2066"},"content":" String[] eventSplit \u003d input.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"AndrewOng2066"},"content":" if (eventSplit.length \u003c 3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid format for new Event!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"AndrewOng2066"},"content":" String name \u003d eventSplit[0].substring(6).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":172,"author":{"gitId":"AndrewOng2066"},"content":" String start \u003d eventSplit[1].substring(5).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":173,"author":{"gitId":"AndrewOng2066"},"content":" String end \u003d eventSplit[2].substring(3).trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":174,"author":{"gitId":"AndrewOng2066"},"content":" Event newEvent \u003d new Event(name, false, start, end);","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"AndrewOng2066"},"content":" tasks.add(newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e newEventList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"AndrewOng2066"},"content":" newEventList.add(newEvent);","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", newEventList, false);//TODO Add the file function here","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":180,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + newEvent.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":182,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"AndrewOng2066"},"content":" * Marks a task for being completed.","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the index of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException If the size of tasks is 0, or no task is being selected.","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"AndrewOng2066"},"content":" public static void markTask(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"AndrewOng2066"},"content":" String splitInput[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"AndrewOng2066"},"content":" int choiceMark;","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"AndrewOng2066"},"content":" choiceMark \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceMark \u003c\u003d tasks.size() \u0026\u0026 choiceMark \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"AndrewOng2066"},"content":" tasks.get(choiceMark - 1).markAsDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", tasks, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + tasks.get(choiceMark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":209,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Invalid choice.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":211,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":213,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":214,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"AndrewOng2066"},"content":" * Unmarks a task for being incomplete.","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the index of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException If the size of tasks is 0, or no task is being selected.","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"AndrewOng2066"},"content":" public static void unmarkTask(String input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":221,"author":{"gitId":"AndrewOng2066"},"content":" String splitInput[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":222,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":223,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":224,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":225,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":226,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":227,"author":{"gitId":"AndrewOng2066"},"content":" int choiceUnmark;","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":229,"author":{"gitId":"AndrewOng2066"},"content":" choiceUnmark \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":231,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":232,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":233,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceUnmark \u003c\u003d tasks.size() \u0026\u0026 choiceUnmark \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"AndrewOng2066"},"content":" tasks.get(choiceUnmark - 1).markAsUndone();","lastModifiedDate":"2024-01-24"},{"lineNumber":235,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", tasks, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":237,"author":{"gitId":"AndrewOng2066"},"content":"// System.out.println(\" \" + \"[ ] \" + tasks.get(choiceUnmark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":238,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + tasks.get(choiceUnmark - 1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":239,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":240,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Invalid choice\");","lastModifiedDate":"2024-01-24"},{"lineNumber":241,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":242,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":243,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":244,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"AndrewOng2066"},"content":" * Deletes a task.","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"AndrewOng2066"},"content":" * @param input the index of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"AndrewOng2066"},"content":" * @throws DukeException If the size of tasks is 0, or no task is being selected.","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"AndrewOng2066"},"content":" public static void deleteTask(String input) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":251,"author":{"gitId":"AndrewOng2066"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":252,"author":{"gitId":"AndrewOng2066"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":253,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" No task at the moment.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":254,"author":{"gitId":"AndrewOng2066"},"content":" } else if (splitInput.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":255,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please select the task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":256,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":257,"author":{"gitId":"AndrewOng2066"},"content":" int choiceDelete;","lastModifiedDate":"2024-01-24"},{"lineNumber":258,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":259,"author":{"gitId":"AndrewOng2066"},"content":" choiceDelete \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"AndrewOng2066"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":261,"author":{"gitId":"AndrewOng2066"},"content":" throw new DukeException(\" Please enter a valid integer value.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":262,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":263,"author":{"gitId":"AndrewOng2066"},"content":" if (choiceDelete \u003c\u003d tasks.size() \u0026\u0026 choiceDelete \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":264,"author":{"gitId":"AndrewOng2066"},"content":" Task deletedTask \u003d tasks.get(choiceDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":265,"author":{"gitId":"AndrewOng2066"},"content":" tasks.remove(choiceDelete - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":266,"author":{"gitId":"AndrewOng2066"},"content":" storeArrayListToFile(\"duke\", tasks, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Noted, I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":268,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" \" + deletedTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":269,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":270,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":271,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\" Invalid choice\");","lastModifiedDate":"2024-01-23"},{"lineNumber":272,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":273,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":274,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":275,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":276,"author":{"gitId":"AndrewOng2066"},"content":" * Load the data into a txt file","lastModifiedDate":"2024-01-29"},{"lineNumber":277,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":278,"author":{"gitId":"AndrewOng2066"},"content":" * @param fileName name of the txt file","lastModifiedDate":"2024-01-29"},{"lineNumber":279,"author":{"gitId":"AndrewOng2066"},"content":" * @param tasks context to be stored in the txt file","lastModifiedDate":"2024-01-29"},{"lineNumber":280,"author":{"gitId":"AndrewOng2066"},"content":" * @param isOverwrite check if we need to delete the current context in the txt file","lastModifiedDate":"2024-01-29"},{"lineNumber":281,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":282,"author":{"gitId":"AndrewOng2066"},"content":" static void storeArrayListToFile(String fileName, ArrayList\u003cTask\u003e tasks, boolean isOverwrite) {","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"AndrewOng2066"},"content":" FileManager fileManager \u003d new FileManager(fileName);","lastModifiedDate":"2024-01-29"},{"lineNumber":284,"author":{"gitId":"AndrewOng2066"},"content":" fileManager.writeArrayListToFile(tasks, isOverwrite);","lastModifiedDate":"2024-01-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":286,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":287,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"AndrewOng2066"},"content":" * Gets the list of Tasks from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"AndrewOng2066"},"content":" * @param filename the txt file.","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"AndrewOng2066"},"content":" * @return an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"AndrewOng2066"},"content":" static ArrayList\u003cTask\u003e getTasksFromFile(String filename) {","lastModifiedDate":"2024-01-29"},{"lineNumber":294,"author":{"gitId":"AndrewOng2066"},"content":" FileManager fileManager \u003d new FileManager(filename);","lastModifiedDate":"2024-01-29"},{"lineNumber":295,"author":{"gitId":"AndrewOng2066"},"content":" return fileManager.loadTasksFromFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":296,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":297,"author":{"gitId":"AndrewOng2066"},"content":" ","lastModifiedDate":"2024-01-29"},{"lineNumber":298,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":299,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":301,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":302,"author":{"gitId":"AndrewOng2066"},"content":"class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":303,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":304,"author":{"gitId":"AndrewOng2066"},"content":" private String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":305,"author":{"gitId":"AndrewOng2066"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":306,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":307,"author":{"gitId":"AndrewOng2066"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":308,"author":{"gitId":"AndrewOng2066"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":309,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":310,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":311,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":312,"author":{"gitId":"AndrewOng2066"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":313,"author":{"gitId":"AndrewOng2066"},"content":" return description;","lastModifiedDate":"2024-01-22"},{"lineNumber":314,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":315,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":316,"author":{"gitId":"AndrewOng2066"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":317,"author":{"gitId":"AndrewOng2066"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":318,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":319,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":320,"author":{"gitId":"AndrewOng2066"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":321,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":322,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":323,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":324,"author":{"gitId":"AndrewOng2066"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":325,"author":{"gitId":"AndrewOng2066"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":326,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":327,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":328,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":329,"author":{"gitId":"AndrewOng2066"},"content":"class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":330,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":331,"author":{"gitId":"AndrewOng2066"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":332,"author":{"gitId":"AndrewOng2066"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":333,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":334,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":335,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":336,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":337,"author":{"gitId":"AndrewOng2066"},"content":" return \"[T][\"+ super.getStatusIcon() +\"] \" + super.getDescription();","lastModifiedDate":"2024-01-24"},{"lineNumber":338,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":339,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":340,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":341,"author":{"gitId":"AndrewOng2066"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":342,"author":{"gitId":"AndrewOng2066"},"content":" String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":343,"author":{"gitId":"AndrewOng2066"},"content":" public Deadline(String description, boolean isDone, String by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":344,"author":{"gitId":"AndrewOng2066"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":345,"author":{"gitId":"AndrewOng2066"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":346,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":347,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":348,"author":{"gitId":"AndrewOng2066"},"content":" public String getBy() {","lastModifiedDate":"2024-01-22"},{"lineNumber":349,"author":{"gitId":"AndrewOng2066"},"content":" return this.by;","lastModifiedDate":"2024-01-22"},{"lineNumber":350,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":351,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":352,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":353,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":354,"author":{"gitId":"AndrewOng2066"},"content":" return \"[D][\"+ super.getStatusIcon() +\"] \" + super.getDescription() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":355,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":356,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":357,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":358,"author":{"gitId":"AndrewOng2066"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":359,"author":{"gitId":"AndrewOng2066"},"content":" String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":360,"author":{"gitId":"AndrewOng2066"},"content":" String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":361,"author":{"gitId":"AndrewOng2066"},"content":" public Event(String description, boolean isDone, String start, String end) {","lastModifiedDate":"2024-01-29"},{"lineNumber":362,"author":{"gitId":"AndrewOng2066"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":363,"author":{"gitId":"AndrewOng2066"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":364,"author":{"gitId":"AndrewOng2066"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":365,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":366,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":367,"author":{"gitId":"AndrewOng2066"},"content":" public String getStart() {","lastModifiedDate":"2024-01-22"},{"lineNumber":368,"author":{"gitId":"AndrewOng2066"},"content":" return this.start;","lastModifiedDate":"2024-01-22"},{"lineNumber":369,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":370,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":371,"author":{"gitId":"AndrewOng2066"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-22"},{"lineNumber":372,"author":{"gitId":"AndrewOng2066"},"content":" return this.end;","lastModifiedDate":"2024-01-22"},{"lineNumber":373,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":374,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":375,"author":{"gitId":"AndrewOng2066"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":376,"author":{"gitId":"AndrewOng2066"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":377,"author":{"gitId":"AndrewOng2066"},"content":" return \"[E][\"+ super.getStatusIcon() +\"] \" + super.getDescription() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":378,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":379,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":380,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AndrewOng2066":369,"-":11}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"class DukeException extends Exception{","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"AndrewOng2066":5}},{"path":"src/main/java/FileManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"import java.io.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"public class FileManager {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":" static final Path DIRECTORY_PATH \u003d Paths.get(\"./data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":" private String fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" private Path filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":" public FileManager(String fileName) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":" filePath \u003d DIRECTORY_PATH.resolve(fileName + \".txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":" createFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":" * Creates directory and file if it doesn\u0027t exist.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":" private void createFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":" if (!Files.exists(DIRECTORY_PATH)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":" Files.createDirectories(DIRECTORY_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"AndrewOng2066"},"content":" Files.createFile(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"AndrewOng2066"},"content":" } catch (IOException io) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\"There is an error when creating file. The error is \" + io.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"AndrewOng2066"},"content":" * Writes tasks to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"AndrewOng2066"},"content":" * @param tasks the tasks that need to be written.","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"AndrewOng2066"},"content":" * @param isOverwrite True for overwrite the previous data. False for appending the data.","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"AndrewOng2066"},"content":" void writeArrayListToFile(ArrayList\u003cTask\u003e tasks, boolean isOverwrite) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"AndrewOng2066"},"content":" if (isOverwrite) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"AndrewOng2066"},"content":" Files.write(filePath, convertTasksToString(tasks).getBytes(), StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"AndrewOng2066"},"content":" Files.write(filePath, convertTasksToString(tasks).getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"AndrewOng2066"},"content":" } catch (IOException io) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\"There is an error when writing to file. The error is \" + io.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"AndrewOng2066"},"content":" * Loads Tasks from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"AndrewOng2066"},"content":" * @return an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e loadTasksFromFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"AndrewOng2066"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"AndrewOng2066"},"content":" List\u003cString\u003e fileContentLines \u003d Files.readAllLines(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"AndrewOng2066"},"content":" result \u003d convertStringListToTasks(fileContentLines);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"AndrewOng2066"},"content":" } catch (IOException io) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"AndrewOng2066"},"content":" System.out.println(\"There is an error when reading the file.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"AndrewOng2066"},"content":" return result;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"AndrewOng2066"},"content":" * Converts an ArrayList of Tasks to String.","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"AndrewOng2066"},"content":" * @param tasks An arrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"AndrewOng2066"},"content":" * @return String format of the list of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"AndrewOng2066"},"content":" private String convertTasksToString(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"AndrewOng2066"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"AndrewOng2066"},"content":" for (Task task: tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"AndrewOng2066"},"content":"// result.append(task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"AndrewOng2066"},"content":"// result.append(System.getProperty(\"line.separator\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"AndrewOng2066"},"content":" if (task instanceof ToDo) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"AndrewOng2066"},"content":" result.append(\"T | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getStatusIcon().equals(\"X\") ? \"1 | \" : \"0 | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"AndrewOng2066"},"content":" result.append(System.getProperty(\"line.separator\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"AndrewOng2066"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"AndrewOng2066"},"content":" result.append(\"D | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getStatusIcon().equals(\"X\") ? \"1 | \" : \"0 | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getDescription() + \" | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"AndrewOng2066"},"content":" result.append(((Deadline) task).getBy());","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"AndrewOng2066"},"content":" result.append(System.getProperty(\"line.separator\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"AndrewOng2066"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"AndrewOng2066"},"content":" result.append(\"D | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getStatusIcon().equals(\"X\") ? \"1 | \" : \"0 | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"AndrewOng2066"},"content":" result.append(task.getDescription() + \" | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"AndrewOng2066"},"content":" result.append(((Event) task).getStart() + \" | \");","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"AndrewOng2066"},"content":" result.append(((Event) task).getEnd());","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"AndrewOng2066"},"content":" result.append(System.getProperty(\"line.separator\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"AndrewOng2066"},"content":" return result.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"AndrewOng2066"},"content":" * Converts the List of String to an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"AndrewOng2066"},"content":" * @param content the List of String to be converted.","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"AndrewOng2066"},"content":" * @return an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"AndrewOng2066"},"content":" private ArrayList\u003cTask\u003e convertStringListToTasks(List\u003cString\u003e content) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e fileTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"AndrewOng2066"},"content":" for (String i : content) {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"AndrewOng2066"},"content":" String[] stringAttributes \u003d i.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"AndrewOng2066"},"content":" if (stringAttributes[0].trim().equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new ToDo(stringAttributes[2].trim(), stringAttributes[1].trim().equals(\"1\") ? true : false));","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"AndrewOng2066"},"content":" } else if (stringAttributes[0].trim().equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new Deadline(stringAttributes[2].trim(), stringAttributes[1].trim().equals(\"1\") ? true : false, stringAttributes[3].trim()));","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"AndrewOng2066"},"content":" } else if (stringAttributes[0].trim().equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new Event(stringAttributes[2].trim(), stringAttributes[1].trim().equals(\"1\") ? true : false, stringAttributes[3].trim(), stringAttributes[4].trim()));","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"AndrewOng2066"},"content":" return fileTasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"AndrewOng2066"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"AndrewOng2066"},"content":" * Converts the String content to an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"AndrewOng2066"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"AndrewOng2066"},"content":" * @param content the String content to be converted.","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"AndrewOng2066"},"content":" * @return an ArrayList of Tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"AndrewOng2066"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"AndrewOng2066"},"content":" private ArrayList\u003cTask\u003e convertStringToTasks(String content) {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"AndrewOng2066"},"content":" String[] individualStringTask \u003d content.trim().split(System.lineSeparator());","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"AndrewOng2066"},"content":" ArrayList\u003cTask\u003e fileTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"AndrewOng2066"},"content":" for (String i : individualStringTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"AndrewOng2066"},"content":" String[] stringAttributes \u003d i.split(\"|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"AndrewOng2066"},"content":" if (stringAttributes[0].equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new ToDo(stringAttributes[2].trim(), stringAttributes[1].equals(\"1\") ? true : false));","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"AndrewOng2066"},"content":" } else if (stringAttributes[0].equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new Deadline(stringAttributes[2].trim(), stringAttributes[1].equals(\"1\") ? true : false, stringAttributes[3].trim()));","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"AndrewOng2066"},"content":" } else if (stringAttributes[0].equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"AndrewOng2066"},"content":" fileTasks.add(new Event(stringAttributes[2].trim(), stringAttributes[1].equals(\"1\") ? true : false, stringAttributes[3].trim(), stringAttributes[4].trim()));","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"AndrewOng2066"},"content":" return fileTasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"AndrewOng2066"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"AndrewOng2066"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"AndrewOng2066":151}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"todo return book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AndrewOng2066":3}},{"path":"text-ui-test/input2.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"todo join sports club","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"mark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":"event","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":"event meeting","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":"event meeting /from 5pm","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":"mark 7","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":"mark","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"mark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":"unmark","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":"unmark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":"unmark 9","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":"delete","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":"delete 8","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":"delete 6","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":"blah","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":30}},{"path":"text-ui-test/runtest2.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"@ECHO OFF","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":"REM delete output from previous run","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":" exit /b 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":")","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":"java -classpath ..\\bin Duke \u003c input2.txt \u003e ACTUAL2.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"REM compare the output to the expected output","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"FC ACTUAL2.TXT EXPECTED2.TXT","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":21}},{"path":"text-ui-test/runtest2.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"AndrewOng2066"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AndrewOng2066"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AndrewOng2066"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AndrewOng2066"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AndrewOng2066"},"content":"# delete output from previous run","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"AndrewOng2066"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"AndrewOng2066"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"AndrewOng2066"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"AndrewOng2066"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"AndrewOng2066"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"AndrewOng2066"},"content":" exit 1","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"AndrewOng2066"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"AndrewOng2066"},"content":"java -classpath ../bin Duke \u003c input2.txt \u003e ACTUAL2.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"AndrewOng2066"},"content":"# convert to UNIX format","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"AndrewOng2066"},"content":"cp EXPECTED2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"AndrewOng2066"},"content":"dos2unix ACTUAL2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"AndrewOng2066"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"AndrewOng2066"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"AndrewOng2066"},"content":"diff ACTUAL2.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"AndrewOng2066"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"AndrewOng2066"},"content":"then","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"AndrewOng2066"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"AndrewOng2066"},"content":" exit 0","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"AndrewOng2066"},"content":"else","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"AndrewOng2066"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"AndrewOng2066"},"content":" exit 1","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"AndrewOng2066"},"content":"fi","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AndrewOng2066":38}}] diff --git a/AndrewOng2066_ip_master/commits.json b/AndrewOng2066_ip_master/commits.json index 94ad1281..b8d3090d 100644 --- a/AndrewOng2066_ip_master/commits.json +++ b/AndrewOng2066_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"AndrewOng2066":[{"date":"2024-01-22","commitResults":[{"hash":"c17faef69cde219cb4dc6c4c3bc69f821998ffc0","isMergeCommit":false,"messageTitle":"Implement an initial skeletal version of it that simply greets the user and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"dff0de4d276608f8960f63da0fb91f6bbbb41532","isMergeCommit":false,"messageTitle":"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":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"46b1919e3922b0a0a279d9e42983f4c7244771d2","isMergeCommit":false,"messageTitle":"Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye. Applied indentation","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"8cec1b6a58ae5e23cec598e1fae47ab49f511d8d","isMergeCommit":false,"messageTitle":"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":9}}},{"hash":"556e0b300ac97a68e8b079fa35ed7f07f0c939cd","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}},{"hash":"a7c5b30bd2be3f9a329d3f5f0d6f12a9d981856e","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":6}}}]},{"date":"2024-01-23","commitResults":[{"hash":"bc16ccd96014d53330fc37f47ef609468baa9860","isMergeCommit":false,"messageTitle":"Use the input/output redirection technique to semi-automate the testing of Duke. Commented the code for the \"else\" portion","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":4,"deletions":4}}},{"hash":"d56b1bb2a694696ac0d5974d6b9f647801f41062","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":133,"deletions":54}}}]},{"date":"2024-01-24","commitResults":[{"hash":"33003e13a0a5abee6e17b91ae2654889bd29af29","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list. Added exception handling for integer input. replaced the code with the individual method.","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":51}}},{"hash":"ac522f6748bf3ab0a34c64747d6f5dc023ac9365","isMergeCommit":false,"messageTitle":"Added Enumerations for the function","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}}]},{"date":"2024-01-25","commitResults":[{"hash":"4e7c63707531ae1b3c936d9e03e4efa740d4d1bb","isMergeCommit":false,"messageTitle":"Added a test case but not working due to the spaces after \u0027:\u0027. new files added: ACTUAL2.TXT, EXPECTED2.TXT, input2.txt, runtest2.bat","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":30,"deletions":0},"bat":{"insertions":21,"deletions":0}}},{"hash":"970c8316d44631da45b1e3e5244ad4d85836bb6c","isMergeCommit":false,"messageTitle":"Fixed the spaces issue, i.e. spaces after \":\" edited the EXPECTED2.TXT to remove the spaces.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"88315a5d27a59f455814ef215e4177715568ebfc","isMergeCommit":false,"messageTitle":"Added new exception handling (i.e. ensure that the input integer are more than 0)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"2875c4cd1f50365e0e4ee9671ecd1745a586ef93","isMergeCommit":false,"messageTitle":"Added shell file (runtest.sh)","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":38,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"AndrewOng2066":{"java":289,"md":0,"fxml":0,"sh":38,"bat":21,"gradle":0,"txt":33}},"authorContributionVariance":{"AndrewOng2066":8373.266},"authorDisplayNameMap":{"AndrewOng2066":"CS2103T-T13-1 ANDR..WOON"}} +{"authorDailyContributionsMap":{"AndrewOng2066":[{"date":"2024-01-22","commitResults":[{"hash":"c17faef69cde219cb4dc6c4c3bc69f821998ffc0","isMergeCommit":false,"messageTitle":"Implement an initial skeletal version of it that simply greets the user and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"dff0de4d276608f8960f63da0fb91f6bbbb41532","isMergeCommit":false,"messageTitle":"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":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"46b1919e3922b0a0a279d9e42983f4c7244771d2","isMergeCommit":false,"messageTitle":"Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye. Applied indentation","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"8cec1b6a58ae5e23cec598e1fae47ab49f511d8d","isMergeCommit":false,"messageTitle":"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":9}}},{"hash":"556e0b300ac97a68e8b079fa35ed7f07f0c939cd","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}},{"hash":"a7c5b30bd2be3f9a329d3f5f0d6f12a9d981856e","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":6}}}]},{"date":"2024-01-23","commitResults":[{"hash":"bc16ccd96014d53330fc37f47ef609468baa9860","isMergeCommit":false,"messageTitle":"Use the input/output redirection technique to semi-automate the testing of Duke. Commented the code for the \"else\" portion","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":4,"deletions":4}}},{"hash":"d56b1bb2a694696ac0d5974d6b9f647801f41062","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":133,"deletions":54}}}]},{"date":"2024-01-24","commitResults":[{"hash":"33003e13a0a5abee6e17b91ae2654889bd29af29","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list. Added exception handling for integer input. replaced the code with the individual method.","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":51}}},{"hash":"ac522f6748bf3ab0a34c64747d6f5dc023ac9365","isMergeCommit":false,"messageTitle":"Added Enumerations for the function","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}}]},{"date":"2024-01-25","commitResults":[{"hash":"4e7c63707531ae1b3c936d9e03e4efa740d4d1bb","isMergeCommit":false,"messageTitle":"Added a test case but not working due to the spaces after \u0027:\u0027. new files added: ACTUAL2.TXT, EXPECTED2.TXT, input2.txt, runtest2.bat","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":30,"deletions":0},"bat":{"insertions":21,"deletions":0}}},{"hash":"970c8316d44631da45b1e3e5244ad4d85836bb6c","isMergeCommit":false,"messageTitle":"Fixed the spaces issue, i.e. spaces after \":\" edited the EXPECTED2.TXT to remove the spaces.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"88315a5d27a59f455814ef215e4177715568ebfc","isMergeCommit":false,"messageTitle":"Added new exception handling (i.e. ensure that the input integer are more than 0)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"2875c4cd1f50365e0e4ee9671ecd1745a586ef93","isMergeCommit":false,"messageTitle":"Added shell file (runtest.sh)","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":38,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"b4778aa460348b2574b1bf705fb7d8df1c46f6ec","isMergeCommit":false,"messageTitle":"Add a new function to store data into a file. However, the current llistMethod is not reading from the file. Add new files, i.e. duke.txt, DukeException.java, FileManager.java","messageBody":"Created a new DukeException.java and moved the DukeException code over.\n\nCreated a new FileManager to write data to a txt file.\n","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":98,"deletions":7}}},{"hash":"16a6a6efab61c685e2059b080b146649fcc60d0e","isMergeCommit":false,"messageTitle":"Change the layout of each object class (ToDo, Deadline, Event)","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":5},"java":{"insertions":50,"deletions":17}}},{"hash":"d3412f74ea89da378fc086c9e0fcdebefafb2215","isMergeCommit":false,"messageTitle":"Complete the save feature without JavaDoc","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":49,"deletions":14}}}]},{"date":"2024-01-30","commitResults":[{"hash":"a83b5ca47098ab8adff99d1c4b46e3f5d6eed9aa","isMergeCommit":false,"messageTitle":"Add Javadoc to the program","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":87,"deletions":11}}},{"hash":"108a753e79cb7d04ad29d9433b5393e7827932d9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0e85508e2f4427f2f55c3470bb038a14c302e6f6","isMergeCommit":false,"messageTitle":"Add a new empty line","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"0b32048804aa2164b4e56561f43f418088bc4db7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"AndrewOng2066":{"java":525,"md":0,"fxml":0,"sh":38,"bat":21,"gradle":0,"txt":37}},"authorContributionVariance":{"AndrewOng2066":9180.083},"authorDisplayNameMap":{"AndrewOng2066":"CS2103T-T13-1 ANDR..WOON"}} diff --git a/Austintjh19_ip_master/authorship.json b/Austintjh19_ip_master/authorship.json index 98c2b665..fddb0aa8 100644 --- a/Austintjh19_ip_master/authorship.json +++ b/Austintjh19_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" // Level 8 Branch","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" final Osiris chatBot \u003d new Osiris();","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" chatBot.startChat();","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":8}},{"path":"src/main/java/Osiris.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"import Task.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class Osiris {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public static final String NAME \u003d \"Osiris\";","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private final TaskManager taskManager \u003d new TaskManager();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public void startChat(){","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.initialise();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" boolean terminateChat \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" this.outputIntroductions();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" while (!terminateChat){","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" String taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" switch (inputtedWords[0]) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" case \"bye\":","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" terminateChat \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" this.printUserTasks();","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" this.markTaskCompleted(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" this.markTaskIncomplete(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" this.removeTask(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(\"todo\".length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" this.addToDoTask(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" if (byIndex !\u003d -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(\"deadline\".length(), byIndex - 1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" String deadline \u003d userInput.substring(byIndex + \"/by\".length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" this.addDeadlineTask(taskName, deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. Ensure \u0027/by\u0027 is specified for a Deadline Task. E.g. deadline Do Homework /by Sunday.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" if (fromIndex !\u003d -1 \u0026\u0026 toIndex !\u003d -1 \u0026\u0026 fromIndex \u003c toIndex) {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(\"event\".length(), fromIndex - 1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" String startDateTime \u003d userInput.substring(fromIndex + \"/from\".length(), toIndex - 1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" String endDateTime \u003d userInput.substring(toIndex + \"/to\".length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" this.addEventTask(taskName, startDateTime, endDateTime);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. Ensure \u0027/from\u0027 \u0026 \u0027/to\u0027 is specified for a Event Task. E.g. event School Meeting /from Mon 2pm /to 4pm. Please Reenter.\" );","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Sorry, but I am unable to comprehend the instruction at my current development stage. Please enter something else.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.termintate();","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" this.outputGoodbyes();","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" public void outputIntroductions() {","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" String[] asciiArt \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" \" ,o888888o. d888888o. 8 8888 8 888888888o. 8 8888 d888888o. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" \" . 8888 `88. .`8888:\u0027 `88. 8 8888 8 8888 `88. 8 8888 .`8888:\u0027 `88. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" \",8 8888 `8b 8.`8888. Y8 8 8888 8 8888 `88 8 8888 8.`8888. Y8 \",","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 `8b `8.`8888. 8 8888 8 8888 ,88 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 8888. ,88\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 888888888P\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 ,8P `8.`8888. 8 8888 8 8888`8b 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" \"`8 8888 ,8P 8b `8.`8888. 8 8888 8 8888 `8b. 8 8888 8b `8.`8888. \",","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" \" ` 8888 ,88\u0027 `8b. ;8.`8888 8 8888 8 8888 `8b. 8 8888 `8b. ;8.`8888 \",","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" \" `8888888P\u0027 `Y8888P ,88P\u0027 8 8888 8 8888 `88. 8 8888 `Y8888P ,88P\u0027 \"","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" for (String line : asciiArt) {","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" String introductions \u003d String.format(\"Hello! I\u0027m %s.\\nWhat can I do for you?\", Osiris.NAME);","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" System.out.println(introductions);","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":" public void outputGoodbyes() {","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" String goodbyes \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" System.out.println(goodbyes);","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" private void addToDoTask(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.addToDoTask(taskName, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + this.taskManager.getTask(this.taskManager.getTotalTaskCount() - 1).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", this.taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"Austintjh19"},"content":" private void addDeadlineTask(String taskName, String deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.addDeadlineTask(taskName,deadline, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + this.taskManager.getTask(this.taskManager.getTotalTaskCount() - 1).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", this.taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"Austintjh19"},"content":" private void addEventTask(String taskName, String startDateTime, String endDateTime) {","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.addEventTask(taskName, startDateTime, endDateTime, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + this.taskManager.getTask(this.taskManager.getTotalTaskCount() - 1).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", this.taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"Austintjh19"},"content":" private void markTaskCompleted(int index){","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"Austintjh19"},"content":" boolean successful \u003d this.taskManager.markTaskCompleted(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"Austintjh19"},"content":" if (successful) {","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + this.taskManager.getTask(index - 1).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":199,"author":{"gitId":"Austintjh19"},"content":" private void markTaskIncomplete(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":200,"author":{"gitId":"Austintjh19"},"content":" boolean successful \u003d this.taskManager.markTaskIncomplete(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"Austintjh19"},"content":" if (successful) {","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + this.taskManager.getTask(index - 1).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":208,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"Austintjh19"},"content":" private void removeTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":211,"author":{"gitId":"Austintjh19"},"content":" Task removedTask \u003d this.taskManager.removeTask(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":212,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"Austintjh19"},"content":" if (removedTask !\u003d null) {","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":215,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":216,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + removedTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":217,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", this.taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":218,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-24"},{"lineNumber":219,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":220,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":221,"author":{"gitId":"Austintjh19"},"content":" private void printUserTasks(){","lastModifiedDate":"2024-01-23"},{"lineNumber":222,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cTask\u003e toPrint \u003d this.taskManager.getUserTasks();","lastModifiedDate":"2024-01-23"},{"lineNumber":223,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":224,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":225,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":226,"author":{"gitId":"Austintjh19"},"content":" for (int i \u003d 0; i \u003c toPrint.size(); i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":227,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + (i + 1) + \". \" + toPrint.get(i).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":228,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":229,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-23"},{"lineNumber":230,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":231,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":232,"author":{"gitId":"Austintjh19"},"content":" private void printSeparator() {","lastModifiedDate":"2024-01-23"},{"lineNumber":233,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"----------------------------------------\");","lastModifiedDate":"2024-01-23"},{"lineNumber":234,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":235,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":235}},{"path":"src/main/java/Storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" private String filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public String getFilepath() {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" return filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public boolean storageFileExist() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" return file.exists();","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" } catch (SecurityException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"SecurityException occurred.\" );","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"NullPointerException occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"An error occurred with Function storageFileExist().\");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":31}},{"path":"src/main/java/Storage/data/task.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"T | N | Borrow Book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"T | Y | Return Book","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"D | Y | CS2103 Quiz | Monday","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"E | N | MSL meeting | Monday 10am | 12pm","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"T | N | 100 push-ups","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":5}},{"path":"src/main/java/Storage/txtFileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class txtFileStorage extends Storage{","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public txtFileStorage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" super(filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public void createTxtFileStorage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" if (super.storageFileExist()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Created Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to create Task Storage file: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to create new Txt file for Task storage.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" System.out.println(e.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cString\u003e readTxtFileStorage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" readContents.add(scanner.nextLine());","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to locate filepath \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" } finally {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" if (scanner !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" public void writeToTxtFileStorage(String content) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" fw.write(content);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" public void appendToTxtFileStorage(String content) {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(this.getFilepath(), true);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" fw.write(content + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble appending.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" public void clearTxtFileStorage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble clearing contents.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":89}},{"path":"src/main/java/Task/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Task.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" private String deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, String deadline) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, String deadline, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"D | %s | %s\", super.getStringStorageRepresentation(), this.deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[D] %s (by: %s)\", super.toString(), this.deadline);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":28}},{"path":"src/main/java/Task/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Task.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" private String startDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" private String endDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, String startDateTime, String endDateTime) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, String startDateTime, String endDateTime, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"E | %s | %s | %s\", super.getStringStorageRepresentation(), this.startDateTime, this.endDateTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[E] %s (from: %s to: %s)\", super.toString(), this.startDateTime, this.endDateTime);","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":35}},{"path":"src/main/java/Task/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"public class InvalidTaskException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" return \"Invalid Task Name assigned.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" return \"Invalid Task Name assigned.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Austintjh19":16}},{"path":"src/main/java/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" private String taskName;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" private boolean isCompleted \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName){","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public void markCompleted() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public void markIncomplete() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"Y\" : \"N\";","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s | %s\", completionStatus, taskName);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s %s\", completionStatus, this.taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":36}},{"path":"src/main/java/Task/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Task.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"T | %s\", super.getStringStorageRepresentation());","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[T] %s\", super.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":24}},{"path":"src/main/java/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"import Storage.txtFileStorage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"import Task.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Task.ToDoTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Task.DeadlineTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Task.EventTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"public class TaskManager {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" private final String TASKSTORAGEFILEPATH \u003d \"src/main/java/Storage/data/task.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" private ArrayList\u003cTask\u003e userTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" private txtFileStorage taskStorage \u003d new txtFileStorage(TASKSTORAGEFILEPATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" public boolean addToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" ToDoTask newTask \u003d new ToDoTask(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public boolean addDeadlineTask(String taskName, String deadline, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" DeadlineTask newTask \u003d new DeadlineTask(taskName, deadline, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" public boolean addEventTask(String taskName, String startDateTime, String endDateTime, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" EventTask newTask \u003d new EventTask(taskName, startDateTime, endDateTime, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" public Task getTask(int index){","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" return this.userTasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cTask\u003e getUserTasks(){","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" return userTasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" Task removedTask \u003d this.userTasks.get(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.remove(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" return removedTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" public int getTotalTaskCount(){","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" return this.userTasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskCompleted(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.get(index).markCompleted();","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskIncomplete(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.get(index).markIncomplete();","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" private void storeUserTaskToFileStorage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" for (Task task : this.userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.appendToTxtFileStorage(task.getStringStorageRepresentation());","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" private void loadUserTaskFromFileStorage(){","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d this.taskStorage.readTxtFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" for (String readContentString : readContents) {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" String[] readContentWord \u003d readContentString.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" if (readContentWord[0].trim().equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" this.addToDoTask(readContentWord[2].trim(), readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" this.addDeadlineTask(readContentWord[2].trim(), readContentWord[3].trim(), readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" this.addEventTask(readContentWord[2].trim(), readContentWord[3].trim(), readContentWord[4].trim(), readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" public void initialise(){","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" if (!this.taskStorage.storageFileExist()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.createTxtFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" this.loadUserTaskFromFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" public void termintate(){","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.clearTxtFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" this.storeUserTaskToFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":110}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"todo read book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"mark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"unmark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Austintjh19":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":"-"},"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":"Austintjh19"},"content":"java -classpath ../bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"Austintjh19":1,"-":37}}] +[{"path":"src/main/java/Osiris/Commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" private boolean isTerminateChat \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" public boolean isTerminateChat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" return isTerminateChat;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public abstract boolean execute(TaskManager taskManager, Ui userInterface);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":15}},{"path":"src/main/java/Osiris/Commands/NoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class NoCommand extends Command{","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":11}},{"path":"src/main/java/Osiris/Commands/UnsupportedCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class UnsupportedCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" userInterface.unsupportedCommandsOutput();","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":12}},{"path":"src/main/java/Osiris/Commands/addDeadlineTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"public class addDeadlineTaskCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"deadline\";","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private String taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private LocalDate deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public addDeadlineTaskCommand(String taskName, LocalDate deadline){","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addDeadlineTask(this.taskName, this.deadline, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" userInterface.addDeadlineTaskSuccessNotification(taskManager.getTask(","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":30}},{"path":"src/main/java/Osiris/Commands/addEventTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"public class addEventTaskCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"event\";","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private String taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private LocalDateTime startDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private LocalDateTime endDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public addEventTaskCommand(String taskName, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addEventTask(this.taskName, this.startDateTime, this.endDateTime, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" userInterface.addEventTaskSuccessNotification(taskManager.getTask(","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":33}},{"path":"src/main/java/Osiris/Commands/addToDoTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class addToDoTaskCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"todo\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private String taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public addToDoTaskCommand(String taskName){","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addToDoTask(this.taskName, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" userInterface.addToDoTaskSuccessNotification(taskManager.getTask(","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":24}},{"path":"src/main/java/Osiris/Commands/markTaskCompletedCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class markTaskCompletedCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"mark\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public markTaskCompletedCommand(int taskIndex){","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.markTaskCompleted(this.taskIndex - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" userInterface.markTaskCompletedSuccessNotification(taskManager.getTask(this.taskIndex - 1).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":24}},{"path":"src/main/java/Osiris/Commands/markTaskIncompleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class markTaskIncompleteCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"unmark\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public markTaskIncompleteCommand(int taskIndex){","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.markTaskIncomplete(this.taskIndex - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" userInterface.markTaskIncompleteSuccessNotification(taskManager.getTask(this.taskIndex - 1).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":24}},{"path":"src/main/java/Osiris/Commands/printUserTasksCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class printUserTasksCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"list\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cTask\u003e taskList \u003d taskManager.getUserTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e taskDetailsArrayList \u003d taskList.stream().map(task -\u003e task.toString()).collect(Collectors.toCollection(ArrayList::new));","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" userInterface.printUserTasks(taskDetailsArrayList);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":21}},{"path":"src/main/java/Osiris/Commands/removeTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"public class removeTaskCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"delete\";","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public removeTaskCommand(int taskIndex){","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" Task removedTask \u003d taskManager.removeTask(this.taskIndex - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" if (removedTask !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" userInterface.removeTaskSuccessNotification(removedTask.toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":25}},{"path":"src/main/java/Osiris/Commands/terminateChatCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class terminateChatCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"bye\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" public boolean isTerminateChat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" taskManager.termintate();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":19}},{"path":"src/main/java/Osiris/Formatters/DateTimeFormatters.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Formatters;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Validation.InputsValidator;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class DateTimeFormatters {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private static DateTimeFormatters instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private DateTimeFormatters() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public static DateTimeFormatters getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new DateTimeFormatters();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public LocalDate userInputDateFormatter(String dateStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d LocalDate.parse(dateStr, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return date;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \" + dateStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please try /by dd-mm-yyyy for a deadline tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime userInputDateTimeFormatter(String dateTimeStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeStr, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return dateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \" + dateTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please provide date time range \u0027dd-MM-yyyy HHmm\u0027 format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime[] userInputDateTimeRangeFormatter(String fromDateTimeStr, String toTimeStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter startDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter endDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(fromDateTimeStr, startDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(toTimeStr, endDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return new LocalDateTime[]{startDateTime, endDateTime};","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date time range.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please provide date time range in \u0027dd-MM-yyyy HHmm\u0027 format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" public LocalDate storedDataDateFormatter(String dateStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d LocalDate.parse(dateStr, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" return date;","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \u0027\" + dateStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime storedDataDateTimeFormatter(String dateTimeStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeStr, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" return dateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \u0027\" + dateTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime[] storedDataDateTimeRangeFormatter(String fromDateTimeStr, String toTimeStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter startDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter endDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(fromDateTimeStr, startDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(toTimeStr, endDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" return new LocalDateTime[]{startDateTime, endDateTime};","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date time range: \" + fromDateTimeStr + \" OR \" + toTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":102}},{"path":"src/main/java/Osiris/Interpreters/UserInputInterpreter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Interpreters;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Commands.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Validation.InputsValidator;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"public class UserInputInterpreter {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private static UserInputInterpreter instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private UserInputInterpreter() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public static UserInputInterpreter getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new UserInputInterpreter();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public Command interpretUserInput(String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" String taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" boolean isValid;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" switch (inputtedWords[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" case terminateChatCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return new terminateChatCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" case printUserTasksCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" return new printUserTasksCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" case markTaskCompletedCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateMarkTaskCompletedInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" return new markTaskCompletedCommand(taskIndex);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" case markTaskIncompleteCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateMarkTaskIncompleteInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" return new markTaskIncompleteCommand(taskIndex);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" case removeTaskCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateRemoveTaskInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" return new removeTaskCommand(taskIndex);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" case addToDoTaskCommand.COMMAND:","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateAddToDoTaskInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(addToDoTaskCommand.COMMAND.length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" return new addToDoTaskCommand(taskName);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" case addDeadlineTaskCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateAddDeadlineTaskInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(addDeadlineTaskCommand.COMMAND.length(), byIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" String deadlineStr \u003d userInput.substring(byIndex + \"/by\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" LocalDate deadline \u003d DateTimeFormatters.getInstance().userInputDateFormatter(deadlineStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" if (deadline !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" return new addDeadlineTaskCommand(taskName, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" case addEventTaskCommand.COMMAND:","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().validateAddEventTaskInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(addEventTaskCommand.COMMAND.length(), fromIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" String startDateTimeStr \u003d userInput.substring(fromIndex + \"/from\".length(), toIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" String endDateTimeStr \u003d userInput.substring(toIndex + \"/to\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTimeRange \u003d DateTimeFormatters.getInstance().userInputDateTimeRangeFormatter(startDateTimeStr, endDateTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" if (dateTimeRange !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" return new addEventTaskCommand(taskName, dateTimeRange[0], dateTimeRange[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" return new UnsupportedCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" return new NoCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":107}},{"path":"src/main/java/Osiris/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" // Level 8 Branch","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" final Osiris chatBot \u003d new Osiris();","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" chatBot.startChat();","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":12}},{"path":"src/main/java/Osiris/Osiris.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Interpreters.UserInputInterpreter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import Osiris.UI.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"public class Osiris {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" private final TaskManager taskManager \u003d new TaskManager();","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" private final Ui userInterface \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public void startChat(){","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" this.taskManager.initialise();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" this.userInterface.outputIntroductions();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" boolean terminateChat \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" while (!terminateChat){","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" this.userInterface.messageOsirisPrompt();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" Command userCommand \u003d UserInputInterpreter.getInstance().interpretUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" userCommand.execute(this.taskManager, this.userInterface);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" terminateChat \u003d userCommand.isTerminateChat();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" this.userInterface.outputGoodbyes();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":43}},{"path":"src/main/java/Osiris/Storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" private String filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public String getFilepath() {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" return filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public boolean storageFileExist() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" return file.exists();","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" } catch (SecurityException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"SecurityException occurred.\" );","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"NullPointerException occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"An error occurred with Function storageFileExist().\");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":31}},{"path":"src/main/java/Osiris/Storage/data/task.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"T | N | Borrow Book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"T | N | Read Book","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"D | Y | 1231 Tut Sheet | Dec 1 2023","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"E | N | MSL Meeting | Dec 22 2023 6:00 PM | Dec 22 2023 8:00 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"E | N | Orientation Camp | Jan 15 2024 8:00 AM | Jan 18 2024 10:00 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"D | Y | Return Book | Dec 22 2023","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"T | N | 100 sit-ups","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"T | N | 100 push-ups","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"E | N | Year | Jan 1 2023 12:00 AM | Dec 31 2023 11:59 PM","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":9}},{"path":"src/main/java/Osiris/Storage/txtFileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class txtFileStorage extends Storage{","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public txtFileStorage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" super(filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public void initialiseTxtFileStorage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" if (super.storageFileExist()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Created Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to create Task Storage file: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to create new Txt file for Task storage.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" System.out.println(e.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cString\u003e readTxtFileStorage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" readContents.add(scanner.nextLine());","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to locate filepath \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" } finally {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" if (scanner !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" public void writeToTxtFileStorage(String content) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" fw.write(content);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" public void appendToTxtFileStorage(String content) {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(this.getFilepath(), true);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" fw.write(content + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble appending.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" public void clearTxtFileStorage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble clearing contents.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":89}},{"path":"src/main/java/Osiris/Task/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" private LocalDate deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, LocalDate deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, boolean isCompleted, LocalDate deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public String getDeadlineStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"D | %s | %s\", super.getStringStorageRepresentation(), this.getDeadlineStr());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[D] %s (by: %s)\", super.toString(), this.getDeadlineStr());","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":33}},{"path":"src/main/java/Osiris/Task/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" private LocalDateTime startDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private LocalDateTime endDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, boolean isCompleted, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public String getStartDateTimeStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return this.startDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" public String getEndDateTimeStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" return this.endDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"E | %s | %s | %s\", super.getStringStorageRepresentation(), this.getStartDateTimeStr(), this.getEndDateTimeStr());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[E] %s (from: %s to: %s)\", super.toString(), this.getStartDateTimeStr(), this.getEndDateTimeStr());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":43}},{"path":"src/main/java/Osiris/Task/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"public class InvalidTaskException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" return \"Invalid Task Name assigned.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" return \"Invalid Task Name assigned.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Austintjh19":16}},{"path":"src/main/java/Osiris/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" private String taskName;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" private boolean isCompleted \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName){","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public void markCompleted() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public void markIncomplete() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"Y\" : \"N\";","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s | %s\", completionStatus, taskName);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s %s\", completionStatus, this.taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":36}},{"path":"src/main/java/Osiris/Task/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Storage.txtFileStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class TaskManager {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private final String TASKSTORAGEFILEPATH \u003d \"src/main/java/Osiris/Storage/data/task.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private ArrayList\u003cTask\u003e userTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private txtFileStorage taskStorage \u003d new txtFileStorage(TASKSTORAGEFILEPATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" public boolean addToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" ToDoTask newTask \u003d new ToDoTask(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public boolean addDeadlineTask(String taskName, LocalDate deadline, boolean isCompleted) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" DeadlineTask newTask \u003d new DeadlineTask(taskName, isCompleted, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" public boolean addEventTask(String taskName, LocalDateTime startDateTime, LocalDateTime endDateTime, boolean isCompleted) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" EventTask newTask \u003d new EventTask(taskName, isCompleted, startDateTime, endDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public Task getTask(int index){","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" return this.userTasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cTask\u003e getUserTasks(){","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return userTasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" Task removedTask \u003d this.userTasks.get(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.remove(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" return removedTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" public int getTotalTaskCount(){","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return this.userTasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskCompleted(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.get(index).markCompleted();","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskIncomplete(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" this.userTasks.get(index).markIncomplete();","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" private void storeUserTaskToFileStorage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" for (Task task : this.userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.appendToTxtFileStorage(task.getStringStorageRepresentation());","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" private void loadUserTaskFromFileStorage(){","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d this.taskStorage.readTxtFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" for (String readContentString : readContents) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" String[] readContentWord \u003d readContentString.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" if (readContentWord[0].trim().equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" this.addToDoTask(readContentWord[2].trim(), readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" LocalDate deadline \u003d DateTimeFormatters.getInstance().storedDataDateFormatter(readContentWord[3].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" this.addDeadlineTask(readContentWord[2].trim(), deadline, readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTimeRange \u003d DateTimeFormatters.getInstance().storedDataDateTimeRangeFormatter(readContentWord[3].trim(), readContentWord[4].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" this.addEventTask(readContentWord[2].trim(), dateTimeRange[0], dateTimeRange[1], readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" public void initialise(){","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.initialiseTxtFileStorage();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" this.loadUserTaskFromFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" public void termintate(){","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" this.taskStorage.clearTxtFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" this.storeUserTaskToFileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":111}},{"path":"src/main/java/Osiris/Task/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"T | %s\", super.getStringStorageRepresentation());","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[T] %s\", super.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":24}},{"path":"src/main/java/Osiris/UI/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.UI;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public void outputIntroductions() {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" for (String line : UiOutputs.NAMEASCIIArt) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.INTRODUCTIONS);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public void messageOsirisPrompt() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" System.out.print(UiOutputs.MESSAGEOSIRISPROMPT);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public void unsupportedCommandsOutput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.UNSUPPORTEDCOMMANDSOUTPUT);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" public void outputGoodbyes() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.GOODBYES);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public void addToDoTaskSuccessNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" public void addDeadlineTaskSuccessNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" public void addEventTaskSuccessNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" public void markTaskCompletedSuccessNotification(String taskDetails){","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" public void markTaskIncompleteSuccessNotification(String taskDetails){","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" public void removeTaskSuccessNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" public void printUserTasks(ArrayList\u003cString\u003e taskDetailsList){","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" for (int i \u003d 0; i \u003c taskDetailsList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + (i + 1) + \". \" + taskDetailsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" private void printSeparator() {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.SEPERATOR);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":92}},{"path":"src/main/java/Osiris/UI/UiOutputs.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.UI;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.sql.Statement;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"public class UiOutputs {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" public static final String NAME \u003d \"Osiris\";","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public static final String SEPERATOR \u003d \"----------------------------------------\";","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" public static final String[] NAMEASCIIArt \u003d {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" \" ,o888888o. d888888o. 8 8888 8 888888888o. 8 8888 d888888o. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" \" . 8888 `88. .`8888:\u0027 `88. 8 8888 8 8888 `88. 8 8888 .`8888:\u0027 `88. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" \",8 8888 `8b 8.`8888. Y8 8 8888 8 8888 `88 8 8888 8.`8888. Y8 \",","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 `8b `8.`8888. 8 8888 8 8888 ,88 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 8888. ,88\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 888888888P\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 ,8P `8.`8888. 8 8888 8 8888`8b 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" \"`8 8888 ,8P 8b `8.`8888. 8 8888 8 8888 `8b. 8 8888 8b `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" \" ` 8888 ,88\u0027 `8b. ;8.`8888 8 8888 8 8888 `8b. 8 8888 `8b. ;8.`8888 \",","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" \" `8888888P\u0027 `Y8888P ,88P\u0027 8 8888 8 8888 `88. 8 8888 `Y8888P ,88P\u0027 \"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public static final String INTRODUCTIONS \u003d String.format(\"Hello! I\u0027m %s.\\nWhat can I do for you?\", UiOutputs.NAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public static final String MESSAGEOSIRISPROMPT \u003d \"Message Osiris ... \";","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" public static final String GOODBYES \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" public static final String UNSUPPORTEDCOMMANDSOUTPUT \u003d \"Sorry, but I am unable to comprehend the instruction at my current development stage. Please enter something else.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":31}},{"path":"src/main/java/Osiris/Validation/InputsValidator.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package Osiris.Validation;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Commands.addDeadlineTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Commands.addEventTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Commands.addToDoTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import Osiris.Formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"public class InputsValidator {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private static InputsValidator instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private InputsValidator() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public static InputsValidator getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new InputsValidator();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" public boolean validateMarkTaskCompletedInput(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public boolean validateMarkTaskIncompleteInput(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" public boolean validateRemoveTaskInput(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" public boolean validateAddToDoTaskInput(String userInput){","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(addToDoTaskCommand.COMMAND.length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" public boolean validateAddDeadlineTaskInput(String userInput){","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" if (byIndex !\u003d -1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(addDeadlineTaskCommand.COMMAND.length(), byIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" String deadline \u003d userInput.substring(byIndex + \"/by\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" String[] deadlineParts \u003d deadline.split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" if (deadlineParts.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" String dayStr \u003d deadlineParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" String monthStr \u003d deadlineParts[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" String yearStr \u003d deadlineParts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" if (isValidDay(dayStr) \u0026\u0026 isValidMonth(monthStr) \u0026\u0026 isValidYear(yearStr)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid day, month, or year in deadline. Please use dd-MM-yyyy. \");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid deadline format. Please use dd-MM-yyyy.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. Ensure \u0027/by\u0027 is specified for a Deadline Task. E.g. deadline Do Homework /by dd-MM-yyyy .\");","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" public boolean validateAddEventTaskInput(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" if (fromIndex !\u003d -1 \u0026\u0026 toIndex !\u003d -1 \u0026\u0026 fromIndex \u003c toIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(addEventTaskCommand.COMMAND.length(), fromIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" String startDateTime \u003d userInput.substring(fromIndex + \"/from\".length(), toIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" String endDateTime \u003d userInput.substring(toIndex + \"/to\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" if (isValidDateTime(startDateTime) \u0026\u0026 isValidDateTime(endDateTime)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" if (DateTimeFormatters.getInstance().userInputDateTimeFormatter(startDateTime).","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" isBefore((DateTimeFormatters.getInstance().userInputDateTimeFormatter(endDateTime)))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid date-time order. Start date/time should be before end date/time.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid date-time format. Please use dd-MM-yyyy HHmm.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. Ensure \u0027/from\u0027 \u0026 \u0027/to\u0027 is specified for a Event Task. E.g. event School Meeting /from dd-MM-yyyy HHmm /to dd-MM-yyyy HHmm. Please Reenter.\" );","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidDay(String dayStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" int day \u003d Integer.parseInt(dayStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" return day \u003e\u003d 1 \u0026\u0026 day \u003c\u003d 31 \u0026\u0026 dayStr.length() \u003d\u003d 2;","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidMonth(String monthStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" int month \u003d Integer.parseInt(monthStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" return month \u003e\u003d 1 \u0026\u0026 month \u003c\u003d 12 \u0026\u0026 monthStr.length() \u003d\u003d 2;","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidYear(String yearStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" int year \u003d Integer.parseInt(yearStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":" return year \u003e 0 \u0026\u0026 yearStr.length() \u003d\u003d 4;","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidDateTime(String dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Austintjh19"},"content":" String[] dateTimeParts \u003d dateTime.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Austintjh19"},"content":" if (dateTimeParts.length !\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Austintjh19"},"content":" String[] dateParts \u003d dateTimeParts[0].split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Austintjh19"},"content":" if (dateParts.length !\u003d 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Austintjh19"},"content":" int hour \u003d Integer.parseInt(dateTimeParts[1].substring(0, 2));","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Austintjh19"},"content":" int minute \u003d Integer.parseInt(dateTimeParts[1].substring(2));","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Austintjh19"},"content":" return isValidDay(dateParts[0]) \u0026\u0026 isValidMonth(dateParts[1]) \u0026\u0026 isValidYear(dateParts[2]) \u0026\u0026","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Austintjh19"},"content":" hour \u003e\u003d 0 \u0026\u0026 hour \u003c\u003d 23 \u0026\u0026 minute \u003e\u003d 0 \u0026\u0026 minute \u003c\u003d 59 \u0026\u0026 dateTimeParts[1].length() \u003d\u003d 4;","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":186}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"todo read book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"mark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"unmark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Austintjh19":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":"-"},"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":"Austintjh19"},"content":"java -classpath ../bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"Austintjh19":1,"-":37}}] diff --git a/Austintjh19_ip_master/commits.json b/Austintjh19_ip_master/commits.json index 79411a03..83170b99 100644 --- a/Austintjh19_ip_master/commits.json +++ b/Austintjh19_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Austintjh19":[{"date":"2024-01-23","commitResults":[{"hash":"e76a88b897270a0ee9c5e63a25a0ac76047a3209","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}},{"hash":"4c494bc5289e41bce4755c4c5a0c829da6459305","isMergeCommit":false,"messageTitle":"Adding Level-0 Tag.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"b8d62d546ed5af28df3c4126acdf9e5664f92a58","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"5b502386b3778f1fdac680d8141ed9a244b79634","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"b71ed3dbc6649b2c79478f96b5c351e5125afdf2","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Added New Class ChatInterface. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":12}}},{"hash":"ea8589a13ff75fdb96e6dec8962f036b5303ed0f","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":41}}},{"hash":"b6ca1ae9469b2f0252ec1ee148260c4699f537fd","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"2976462740c3a4b0968307cbd77713cab99b743f","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"2fd924605ab7bbf0f0c710d858c2c69abb23034b","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"f564c76903a7879e1eb17d46ce40be306d4a15e5","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Added New Class ChatInterface. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":12}}},{"hash":"ace8087275b7fc5f25fa7c063826ed4fdb81da9a","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":41}}},{"hash":"026fb1d72aab62d0bbda73897b3ea9735e89eab6","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7796dd888bcf2ba2411dcf3f8e2743964c33d66b","isMergeCommit":false,"messageTitle":"Level 2. Add, List. { UserInputs Class added. }","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":3}}},{"hash":"bc66663b1ddb2a8cbfefda86e6a2cb56a0ef6f00","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Refractor UserInputs class to TaskManager }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":21}}},{"hash":"6f87771f1210c5640cbedc9f229e99e9d2d4e637","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Create new class Task }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"2b67132833f272da8ad15435de52525eb66c2d41","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Completed }","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":1}}},{"hash":"9d25cefd30a90b74cc612227e0a81220844bb01d","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines. { Added DeadlineTask, ToDoTask \u0026 Event Task class. Modified Osiris to use case statements. Modified Osiris to handle String to Integer Exceptions }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":17}}}]},{"date":"2024-01-24","commitResults":[{"hash":"a2c8a7e1aa55c71d874a3f17601fa6b0a437031c","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines. { Completed }","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":4}}},{"hash":"ca89d57073a36f420a5a593ffd06636f590067d7","isMergeCommit":false,"messageTitle":"A-TextUiTesting. Level-4. { Passed }","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"15b79e479ac2fbf77ef16fc9aaf993d472f4e976","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors. { Validation Check and Exception Handling for Mark \u0026 Unmark Task }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":33}}},{"hash":"57d54fa54432bfbc04712651dc136305ff5e2556","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors. { Completed. Incorporated validation checks for user inputs. Felt that it was more appropriate than Exceptions. However, did create a InvalidTaskException for future modifications. }","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":20}}},{"hash":"b18c82f10cb0c6e641977f29505cfb19e63ac89f","isMergeCommit":false,"messageTitle":"Level 6. Delete. { Completed. Validation checks and Exception Handling were incorporated. }","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}}]},{"date":"2024-01-28","commitResults":[{"hash":"bfcdab6101b36fa9a0984ea85cbb6c024f018e47","isMergeCommit":false,"messageTitle":"Chatbot Introductions Modification.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"1d54461876c7456a28395382a77e7f1a7ece6c60","isMergeCommit":false,"messageTitle":"Level 7. Save. { Check Branch }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"431ed2e214f4bd783e5c09d9530fa9792d0c1ced","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Testing }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"8ac5ae6ac5481bed7d6f29a5414f88466a9e326b","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Check }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"d42e571d235f23f303ed269d6e4c967d933da254","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Testing Done. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"2e10ab221a37b6ab7e427579e31dd1ba78b18ecf","isMergeCommit":false,"messageTitle":"Level 7. Save. { New Storage \u0026 TxtFileStorage Classes }.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"c4dc3be605ddf382b1f67e18988fa6f86f19cb82","isMergeCommit":false,"messageTitle":"Level 7. Save. { Completed File Storing of Task }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":97,"deletions":45}}},{"hash":"51639e00c0cb8955acf28baef84c8d11d79c2630","isMergeCommit":false,"messageTitle":"Level 7. Save. { Complete }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":4},"java":{"insertions":66,"deletions":41}}},{"hash":"f3e6ac55929e71e587f74588fe550d716cba1bc8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"e37b382f8e3859bc9e8b6ee7901bacc5dc322bc9","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Branch Test }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Austintjh19":{"java":612,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"Austintjh19":33340.51},"authorDisplayNameMap":{"Austintjh19":"CS2103T-T16-1 TAN ..HENG"}} +{"authorDailyContributionsMap":{"Austintjh19":[{"date":"2024-01-23","commitResults":[{"hash":"e76a88b897270a0ee9c5e63a25a0ac76047a3209","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}},{"hash":"4c494bc5289e41bce4755c4c5a0c829da6459305","isMergeCommit":false,"messageTitle":"Adding Level-0 Tag.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"b8d62d546ed5af28df3c4126acdf9e5664f92a58","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"5b502386b3778f1fdac680d8141ed9a244b79634","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"b71ed3dbc6649b2c79478f96b5c351e5125afdf2","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Added New Class ChatInterface. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":12}}},{"hash":"ea8589a13ff75fdb96e6dec8962f036b5303ed0f","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":41}}},{"hash":"b6ca1ae9469b2f0252ec1ee148260c4699f537fd","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"2976462740c3a4b0968307cbd77713cab99b743f","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"2fd924605ab7bbf0f0c710d858c2c69abb23034b","isMergeCommit":false,"messageTitle":"Commit Level 0. Rename, Greet, Exit.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"f564c76903a7879e1eb17d46ce40be306d4a15e5","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Added New Class ChatInterface. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":12}}},{"hash":"ace8087275b7fc5f25fa7c063826ed4fdb81da9a","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":41}}},{"hash":"026fb1d72aab62d0bbda73897b3ea9735e89eab6","isMergeCommit":false,"messageTitle":"Level 1. Echo. { Removed chat interface class }","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7796dd888bcf2ba2411dcf3f8e2743964c33d66b","isMergeCommit":false,"messageTitle":"Level 2. Add, List. { UserInputs Class added. }","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":3}}},{"hash":"bc66663b1ddb2a8cbfefda86e6a2cb56a0ef6f00","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Refractor UserInputs class to TaskManager }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":21}}},{"hash":"6f87771f1210c5640cbedc9f229e99e9d2d4e637","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Create new class Task }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"2b67132833f272da8ad15435de52525eb66c2d41","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. { Completed }","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":1}}},{"hash":"9d25cefd30a90b74cc612227e0a81220844bb01d","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines. { Added DeadlineTask, ToDoTask \u0026 Event Task class. Modified Osiris to use case statements. Modified Osiris to handle String to Integer Exceptions }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":17}}}]},{"date":"2024-01-24","commitResults":[{"hash":"a2c8a7e1aa55c71d874a3f17601fa6b0a437031c","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines. { Completed }","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":4}}},{"hash":"ca89d57073a36f420a5a593ffd06636f590067d7","isMergeCommit":false,"messageTitle":"A-TextUiTesting. Level-4. { Passed }","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"15b79e479ac2fbf77ef16fc9aaf993d472f4e976","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors. { Validation Check and Exception Handling for Mark \u0026 Unmark Task }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":33}}},{"hash":"57d54fa54432bfbc04712651dc136305ff5e2556","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors. { Completed. Incorporated validation checks for user inputs. Felt that it was more appropriate than Exceptions. However, did create a InvalidTaskException for future modifications. }","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":20}}},{"hash":"b18c82f10cb0c6e641977f29505cfb19e63ac89f","isMergeCommit":false,"messageTitle":"Level 6. Delete. { Completed. Validation checks and Exception Handling were incorporated. }","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}}]},{"date":"2024-01-28","commitResults":[{"hash":"bfcdab6101b36fa9a0984ea85cbb6c024f018e47","isMergeCommit":false,"messageTitle":"Chatbot Introductions Modification.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"1d54461876c7456a28395382a77e7f1a7ece6c60","isMergeCommit":false,"messageTitle":"Level 7. Save. { Check Branch }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"431ed2e214f4bd783e5c09d9530fa9792d0c1ced","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Testing }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"8ac5ae6ac5481bed7d6f29a5414f88466a9e326b","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Check }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"d42e571d235f23f303ed269d6e4c967d933da254","isMergeCommit":false,"messageTitle":"Level 7. Save. { Branch Testing Done. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"2e10ab221a37b6ab7e427579e31dd1ba78b18ecf","isMergeCommit":false,"messageTitle":"Level 7. Save. { New Storage \u0026 TxtFileStorage Classes }.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"c4dc3be605ddf382b1f67e18988fa6f86f19cb82","isMergeCommit":false,"messageTitle":"Level 7. Save. { Completed File Storing of Task }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":97,"deletions":45}}},{"hash":"51639e00c0cb8955acf28baef84c8d11d79c2630","isMergeCommit":false,"messageTitle":"Level 7. Save. { Complete }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":4},"java":{"insertions":66,"deletions":41}}},{"hash":"f3e6ac55929e71e587f74588fe550d716cba1bc8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"e37b382f8e3859bc9e8b6ee7901bacc5dc322bc9","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Branch Test }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"82373516dc19a54b84ee0ff355dcc522f256fc8b","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Branch Test }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ed156855017cfddd1da440b88c44ca15a205b2bf","isMergeCommit":false,"messageTitle":"Level 8. Dates \u0026 Times. { Created Ui Class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":1}}},{"hash":"d998bf4d6e775cd327d3f69f5cafdd7d79974b76","isMergeCommit":false,"messageTitle":"Level 8. Dates \u0026 Times { Ui class Integrated. }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":45,"deletions":87}}},{"hash":"4dca25d484ebb32da9ab8aefb34dd3392f880b75","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Refractor classes, created new classes InputInterpreter and Command. }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":343,"deletions":6}}}]},{"date":"2024-01-30","commitResults":[{"hash":"5f2fcec7c80cbaaa22ffcd263f4368b12b3ebcc9","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Added InputsValidator Class }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":198,"deletions":64}}},{"hash":"1aaa6f2005d1a115716d240f530b4e2c8e506c0e","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Integration of InputInterpreter, Command, \u0026 Validation Class }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":27,"deletions":216}}},{"hash":"983779a20b5371ab2ba6f51f8faa265ebca3974c","isMergeCommit":false,"messageTitle":"Level 8. Date and Times. { Task now stores LocalDate and LocalDateTime. Integrated it with TaskManager and UI. }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":8},"java":{"insertions":171,"deletions":75}}},{"hash":"a15166d16850ea0e7a5d184edf62f16049ab37b0","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times. { Added Validation for Date Time inputs. }","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":79,"deletions":5}}},{"hash":"18d4ca8fe533ee13e5b11adbed6b85c413fc4999","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8","A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"c1b14d3f2a48494502cda5f9b2f3e26b824a8db1","isMergeCommit":false,"messageTitle":"A-Packages. { Completed }","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":70,"deletions":66}}}]}]},"authorFileTypeContributionMap":{"Austintjh19":{"java":1194,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":24}},"authorContributionVariance":{"Austintjh19":130517.305},"authorDisplayNameMap":{"Austintjh19":"CS2103T-T16-1 TAN ..HENG"}} diff --git a/Cedricaca_ip_master/authorship.json b/Cedricaca_ip_master/authorship.json index b9e29e30..058ea58f 100644 --- a/Cedricaca_ip_master/authorship.json +++ b/Cedricaca_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cedricaca"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Cedricaca"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Cedricaca"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Cedricaca"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"Cedricaca"},"content":" public static class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Cedricaca"},"content":" String action;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Cedricaca"},"content":" Boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Cedricaca"},"content":" public Task(String action, Boolean isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Cedricaca"},"content":" this.action \u003d action;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Cedricaca"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Cedricaca"},"content":" if (isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Cedricaca"},"content":" return \" [X] \" + action;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Cedricaca"},"content":" return \" [ ] \" + action;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Cedricaca"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Cedricaca"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Cedricaca"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Cedricaca"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Cedricaca"},"content":" public static class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Cedricaca"},"content":" String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Cedricaca"},"content":" String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Cedricaca"},"content":" public Event(String input, boolean isDone, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Cedricaca"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Cedricaca"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Cedricaca"},"content":" return \"[E]\" + s + \"(from \" + from + \" to \" + to + \" ).\";","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Cedricaca"},"content":" public static class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Cedricaca"},"content":" public Todo(String input, boolean isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"Cedricaca"},"content":" return \"[T]\" + s;","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"Cedricaca"},"content":" public static class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"Cedricaca"},"content":" String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"Cedricaca"},"content":" public Deadline(String input, boolean isDone, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"Cedricaca"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"Cedricaca"},"content":" return \"[D]\" + s + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":69,"author":{"gitId":"Cedricaca"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"Cedricaca"},"content":" ArrayList\u003cTask\u003e List \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"Cedricaca"},"content":" int length \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Hello! I\u0027m Dukey.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"Cedricaca"},"content":"\t System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"Cedricaca"},"content":" String input ;","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Cedricaca"},"content":" String mark \u003d \"mark (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Cedricaca"},"content":" String unmark \u003d \"unmark (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"Cedricaca"},"content":" String delete \u003d \"delete (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"Cedricaca"},"content":" String todo \u003d \"todo\";","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Cedricaca"},"content":" String deadline \u003d \"deadline\";","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Cedricaca"},"content":" String event \u003d \"event\";","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"Cedricaca"},"content":" String by \u003d \"/by\";","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"Cedricaca"},"content":" String from \u003d \"/from\";","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Cedricaca"},"content":" String to \u003d \"/to\";","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"Cedricaca"},"content":" Pattern pMark \u003d Pattern.compile(mark);","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"Cedricaca"},"content":" Pattern pUnmark \u003d Pattern.compile(unmark);","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"Cedricaca"},"content":" Pattern pTodo \u003d Pattern.compile(todo);","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"Cedricaca"},"content":" Pattern pDeadline \u003d Pattern.compile(deadline);","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"Cedricaca"},"content":" Pattern pEvent \u003d Pattern.compile(event);","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"Cedricaca"},"content":" Pattern pBy \u003d Pattern.compile(by);","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"Cedricaca"},"content":" Pattern pFrom \u003d Pattern.compile(from);","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"Cedricaca"},"content":" Pattern pTo \u003d Pattern.compile(to);","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"Cedricaca"},"content":" Pattern pDelete \u003d Pattern.compile(delete);","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"Cedricaca"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"Cedricaca"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"Cedricaca"},"content":" Matcher mMark \u003d pMark.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"Cedricaca"},"content":" Matcher mUnmark \u003d pUnmark.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Cedricaca"},"content":" Matcher mTodo \u003d pTodo.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"Cedricaca"},"content":" Matcher mDeadline \u003d pDeadline.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"Cedricaca"},"content":" Matcher mEvent \u003d pEvent.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"Cedricaca"},"content":" Matcher mBy \u003d pBy.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"Cedricaca"},"content":" Matcher mFrom \u003d pFrom.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"Cedricaca"},"content":" Matcher mTo \u003d pTo.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"Cedricaca"},"content":" Matcher mDelete \u003d pDelete.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"Cedricaca"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"Cedricaca"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"Cedricaca"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"Cedricaca"},"content":" if (length \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You have no tasks in your list!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Here are your tasks in your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"Cedricaca"},"content":" for (int x \u003d 0; x \u003c length; x++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"Cedricaca"},"content":" Task item \u003d List.get(x);","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"Cedricaca"},"content":" int numeric \u003d x + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"Cedricaca"},"content":" System.out.println(numeric + \".\" + item.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Cedricaca"},"content":" } else if (mDelete.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mDelete.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1 ) {","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"Cedricaca"},"content":" Task t \u003d List.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"Cedricaca"},"content":" List.remove(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"Cedricaca"},"content":" length \u003d length - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK! I have deleted this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"Cedricaca"},"content":" } else if (mUnmark.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mUnmark.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"Cedricaca"},"content":" Task t;","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"Cedricaca"},"content":" t \u003d List.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"Cedricaca"},"content":" t.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Oh no! I have marked this as not done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"Cedricaca"},"content":" } else if (mMark.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mMark.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"Cedricaca"},"content":" Task t;","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"Cedricaca"},"content":" t \u003d List.get(number -1);","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Cedricaca"},"content":" t.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Nice! I have marked this as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Cedricaca"},"content":" } else if (mTodo.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.replace(todo, \"\");","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"Cedricaca"},"content":" Todo n \u003d new Todo(newInput, false);","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"Cedricaca"},"content":" } else if (mEvent.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"Cedricaca"},"content":" if (mFrom.find() \u0026\u0026 mTo.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"Cedricaca"},"content":" int startIndex \u003d input.indexOf(from);","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"Cedricaca"},"content":" int startIndexTo \u003d input.indexOf(to);","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"Cedricaca"},"content":" String subFrom \u003d input.substring(startIndex + from.length(), startIndexTo);","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"Cedricaca"},"content":" String subTo \u003d input.substring(startIndexTo + to.length());","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.substring(input.indexOf(event) + event.length(), startIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"Cedricaca"},"content":" Event n \u003d new Event(newInput, false, subFrom, subTo);","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"pls input your start and end of the event.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"Cedricaca"},"content":" } else if (mDeadline.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"Cedricaca"},"content":" if (mBy.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"Cedricaca"},"content":" int finalIndex \u003d input.indexOf(by) + by.length();","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"Cedricaca"},"content":" String dL \u003d input.substring(finalIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.substring(input.indexOf(deadline) + deadline.length(), input.indexOf(by));","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":199,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":200,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":201,"author":{"gitId":"Cedricaca"},"content":" Deadline n \u003d new Deadline(newInput, false, dL);","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":208,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":209,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"please include a deadline\");","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":213,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Sorry, no idea what u talking about lulz\");","lastModifiedDate":"2024-01-23"},{"lineNumber":214,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":215,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":216,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":217,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"Cedricaca":215}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Cedricaca"},"content":"allo","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Cedricaca"},"content":"todo bruh","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Cedricaca"},"content":"event nig /from asd /to lalala","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Cedricaca"},"content":"deadline laugh /by tomorrow","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Cedricaca"},"content":"mark 2","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Cedricaca"},"content":"unmark 2","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Cedricaca"},"content":"delete 3","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Cedricaca"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Cedricaca"},"content":"bye","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Cedricaca":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":"Cedricaca"},"content":"if [ ! -d \"/Users/cedrictan/git/ip/bin\" ]","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"Cedricaca"},"content":" mkdir /Users/cedrictan/git/ip/bin","lastModifiedDate":"2024-01-29"},{"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":"Cedricaca"},"content":"if [ -e \"/Users/cedrictan/git/ip/text-ui-test/ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"Cedricaca"},"content":" rm /Users/cedrictan/git/ip/text-ui-test/ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"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":"Cedricaca"},"content":"if ! javac -cp /Users/cedrictan/git/ip/src/main/java -Xlint:none -d /Users/cedrictan/git/ip/bin /Users/cedrictan/git/ip/src/main/java/*.java","lastModifiedDate":"2024-01-29"},{"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":"Cedricaca"},"content":"java -classpath /Users/cedrictan/git/ip/bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"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":{"-":32,"Cedricaca":6}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cedricaca"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Cedricaca"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Cedricaca"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Cedricaca"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Cedricaca"},"content":"import java.io.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Cedricaca"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Cedricaca"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Cedricaca"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"Cedricaca"},"content":" public static class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Cedricaca"},"content":" String action;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Cedricaca"},"content":" Boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Cedricaca"},"content":" public Task(String action, Boolean isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Cedricaca"},"content":" this.action \u003d action;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Cedricaca"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Cedricaca"},"content":" if (isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Cedricaca"},"content":" return \"[X]\" + action;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Cedricaca"},"content":" return \"[ ]\" + action;","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Cedricaca"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"Cedricaca"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Cedricaca"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Cedricaca"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Cedricaca"},"content":" public String","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Cedricaca"},"content":" export() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Cedricaca"},"content":" return toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Cedricaca"},"content":" public static class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Cedricaca"},"content":" public Event(String input, boolean isDone, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Cedricaca"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Cedricaca"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Cedricaca"},"content":" return \"[E]\" + s + \"(from \" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:ss\")).toString().replace(\"T\", \" \") + \" to \" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:ss\")).toString().replace(\"T\", \" \") + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Cedricaca"},"content":" public String export() {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Cedricaca"},"content":" return \"[E]\" + s + \"/from\" + from.toString().replace(\"T\", \" \") + \"/to\" + to.toString().replace(\"T\" , \" \") ;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"Cedricaca"},"content":" public static class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"Cedricaca"},"content":" public Todo(String input, boolean isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Cedricaca"},"content":" return \"[T]\" + s;","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Cedricaca"},"content":" public String export() {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Cedricaca"},"content":" return toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"Cedricaca"},"content":" public static class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Cedricaca"},"content":" public Deadline(String input, boolean isDone, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Cedricaca"},"content":" super(input, isDone);","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Cedricaca"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"Cedricaca"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Cedricaca"},"content":" return \"[D]\" + s + \"(by:\" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:ss\")).toString().replace(\"T\", \" \") +\")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Cedricaca"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Cedricaca"},"content":" public String export() {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Cedricaca"},"content":" String s \u003d super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Cedricaca"},"content":" return \"[D]\" + s + \"/by\" + by.toString().replace(\"T\", \" \") ;","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":93,"author":{"gitId":"Cedricaca"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"Cedricaca"},"content":" ArrayList\u003cTask\u003e List \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"Cedricaca"},"content":" int length;","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Hello! I\u0027m Dukey.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"Cedricaca"},"content":"\t System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Cedricaca"},"content":" String input ;","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"Cedricaca"},"content":" String mark \u003d \"mark (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"Cedricaca"},"content":" String unmark \u003d \"unmark (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"Cedricaca"},"content":" String delete \u003d \"delete (\\\\d+)\";","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"Cedricaca"},"content":" String todo \u003d \"todo\";","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"Cedricaca"},"content":" String deadline \u003d \"deadline\";","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"Cedricaca"},"content":" String event \u003d \"event\";","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"Cedricaca"},"content":" String by \u003d \"/by\";","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"Cedricaca"},"content":" String from \u003d \"/from\";","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"Cedricaca"},"content":" String to \u003d \"/to\";","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"Cedricaca"},"content":" String todo2 \u003d \"[T]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Cedricaca"},"content":" String deadline2 \u003d \"[D]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Cedricaca"},"content":" String event2 \u003d \"[E]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Cedricaca"},"content":" String unmarked \u003d \"[ ]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Cedricaca"},"content":" String marked \u003d \"[X]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Cedricaca"},"content":" Pattern pMark \u003d Pattern.compile(mark);","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"Cedricaca"},"content":" Pattern pUnmark \u003d Pattern.compile(unmark);","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"Cedricaca"},"content":" Pattern pTodo \u003d Pattern.compile(todo);","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"Cedricaca"},"content":" Pattern pDeadline \u003d Pattern.compile(deadline);","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Cedricaca"},"content":" Pattern pEvent \u003d Pattern.compile(event);","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Cedricaca"},"content":" Pattern pBy \u003d Pattern.compile(by);","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Cedricaca"},"content":" Pattern pFrom \u003d Pattern.compile(from);","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Cedricaca"},"content":" Pattern pTo \u003d Pattern.compile(to);","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"Cedricaca"},"content":" Pattern pDelete \u003d Pattern.compile(delete);","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"Cedricaca"},"content":" Pattern pTodo2 \u003d Pattern.compile(todo2);","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Cedricaca"},"content":" Pattern pDeadline2 \u003d Pattern.compile(deadline2);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Cedricaca"},"content":" Pattern pEvent2 \u003d Pattern.compile(event2);","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Cedricaca"},"content":" Pattern pUnmarked \u003d Pattern.compile(unmarked);","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Cedricaca"},"content":" Pattern pMarked \u003d Pattern.compile(marked);","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Cedricaca"},"content":" String folderName \u003d \"data\";","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Cedricaca"},"content":" String fileName \u003d \"data.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Cedricaca"},"content":" File folder \u003d new File(folderName);","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Cedricaca"},"content":" if (!folder.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Cedricaca"},"content":" folder.mkdir();","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Cedricaca"},"content":" File file \u003d new File(folder, fileName);","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Cedricaca"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Cedricaca"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Cedricaca"},"content":" String currentLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Cedricaca"},"content":" int currLine \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Cedricaca"},"content":" while ((currentLine \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Cedricaca"},"content":" Matcher mTodo2 \u003d pTodo2.matcher(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Cedricaca"},"content":" Matcher mEvent2 \u003d pEvent2.matcher(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Cedricaca"},"content":" Matcher mDeadline2 \u003d pDeadline2.matcher(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Cedricaca"},"content":" Matcher mUnmarked \u003d pUnmarked.matcher(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Cedricaca"},"content":" Matcher mMarked \u003d pMarked.matcher(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Cedricaca"},"content":" if (mTodo2.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Cedricaca"},"content":" if (mMarked.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Cedricaca"},"content":" Todo n \u003d new Todo(currentLine.substring(6), true );","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Cedricaca"},"content":" n.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Cedricaca"},"content":" } else if (mUnmarked.find()){","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Cedricaca"},"content":" Todo n \u003d new Todo(currentLine.substring(6), false);","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Cedricaca"},"content":" n.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Cedricaca"},"content":" } else if (mDeadline2.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Cedricaca"},"content":" int finalIndex \u003d currentLine.indexOf(by) + by.length();","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Cedricaca"},"content":" String dL \u003d currentLine.substring(finalIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Cedricaca"},"content":" // Define the format of the input string","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Cedricaca"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Cedricaca"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Cedricaca"},"content":" // Parse the string into a LocalDate object","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Cedricaca"},"content":" ldt \u003d LocalDateTime.parse(dL, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Cedricaca"},"content":" // Output the LocalDate object","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Cedricaca"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"error in deadline\");","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d currentLine.substring(currentLine.indexOf(deadline) + deadline.length()- 1, currentLine.indexOf(by));","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Cedricaca"},"content":" if (mMarked.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Cedricaca"},"content":" Deadline n \u003d new Deadline(newInput, true, ldt);","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Cedricaca"},"content":" n.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Cedricaca"},"content":" } else if (mUnmarked.find()){","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Cedricaca"},"content":" Deadline n \u003d new Deadline(newInput, false, ldt);","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Cedricaca"},"content":" n.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"Cedricaca"},"content":" } else if (mEvent2.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Cedricaca"},"content":" int startIndex \u003d currentLine.indexOf(from);","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"Cedricaca"},"content":" int startIndexTo \u003d currentLine.indexOf(to);","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Cedricaca"},"content":" String subFrom \u003d currentLine.substring(startIndex + from.length(), startIndexTo);","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"Cedricaca"},"content":" String subTo \u003d currentLine.substring(startIndexTo + to.length());","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d currentLine.substring(currentLine.indexOf(event) + event.length() + 2, startIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Cedricaca"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt2 \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Cedricaca"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Cedricaca"},"content":" // Parse the string into a LocalDate object","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Cedricaca"},"content":" ldt \u003d LocalDateTime.parse(subFrom, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Cedricaca"},"content":" ldt2 \u003d LocalDateTime.parse(subTo, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"Cedricaca"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"error in event\");","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"Cedricaca"},"content":" if (mMarked.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Cedricaca"},"content":" Event n \u003d new Event(newInput, true, ldt, ldt2);","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Cedricaca"},"content":" n.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Cedricaca"},"content":" } else if (mUnmarked.find()){","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"Cedricaca"},"content":" Event n \u003d new Event(newInput, false, ldt, ldt2);","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"Cedricaca"},"content":" n.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"Cedricaca"},"content":" currLine \u003d currLine + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"Cedricaca"},"content":" length \u003d currLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error reading file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"Cedricaca"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"Cedricaca"},"content":" length \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":229,"author":{"gitId":"Cedricaca"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":230,"author":{"gitId":"Cedricaca"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":231,"author":{"gitId":"Cedricaca"},"content":" Matcher mMark \u003d pMark.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":232,"author":{"gitId":"Cedricaca"},"content":" Matcher mUnmark \u003d pUnmark.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":233,"author":{"gitId":"Cedricaca"},"content":" Matcher mTodo \u003d pTodo.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":234,"author":{"gitId":"Cedricaca"},"content":" Matcher mDeadline \u003d pDeadline.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":235,"author":{"gitId":"Cedricaca"},"content":" Matcher mEvent \u003d pEvent.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":236,"author":{"gitId":"Cedricaca"},"content":" Matcher mBy \u003d pBy.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":237,"author":{"gitId":"Cedricaca"},"content":" Matcher mFrom \u003d pFrom.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":238,"author":{"gitId":"Cedricaca"},"content":" Matcher mTo \u003d pTo.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":239,"author":{"gitId":"Cedricaca"},"content":" Matcher mDelete \u003d pDelete.matcher(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":240,"author":{"gitId":"Cedricaca"},"content":" if (input.equals(\"reset\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"Cedricaca"},"content":" List.clear();","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"Cedricaca"},"content":" length \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"Cedricaca"},"content":" try (PrintWriter writer \u003d new PrintWriter(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"Cedricaca"},"content":" writer.print(\"\"); // This clears all lines in the file","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"Cedricaca"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"Cedricaca"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"List cleared!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"Cedricaca"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":252,"author":{"gitId":"Cedricaca"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":253,"author":{"gitId":"Cedricaca"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":254,"author":{"gitId":"Cedricaca"},"content":" if (length \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":255,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You have no tasks in your list!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":256,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":257,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Here are your tasks in your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":258,"author":{"gitId":"Cedricaca"},"content":" for (int x \u003d 0; x \u003c length; x++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":259,"author":{"gitId":"Cedricaca"},"content":" Task item \u003d List.get(x);","lastModifiedDate":"2024-01-23"},{"lineNumber":260,"author":{"gitId":"Cedricaca"},"content":" int numeric \u003d x + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":261,"author":{"gitId":"Cedricaca"},"content":" System.out.println(numeric + \".\" + item.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":262,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":263,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":264,"author":{"gitId":"Cedricaca"},"content":" } else if (mDelete.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":265,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mDelete.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":266,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":267,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1 ) {","lastModifiedDate":"2024-01-23"},{"lineNumber":268,"author":{"gitId":"Cedricaca"},"content":" Task t \u003d List.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":269,"author":{"gitId":"Cedricaca"},"content":" List.remove(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":270,"author":{"gitId":"Cedricaca"},"content":" length \u003d length - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":271,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK! I have deleted this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":272,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":273,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"Cedricaca"},"content":" int lineToDelete \u003d number - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"Cedricaca"},"content":" // Read the content of the file","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"Cedricaca"},"content":" ArrayList\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"Cedricaca"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"Cedricaca"},"content":" String currentLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"Cedricaca"},"content":" int currLine \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"Cedricaca"},"content":" while ((currentLine \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"Cedricaca"},"content":" // Check if the line should be deleted","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"Cedricaca"},"content":" if (currLine !\u003d lineToDelete) {","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"Cedricaca"},"content":" lines.add(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"Cedricaca"},"content":" currLine \u003d currLine + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error reading file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"Cedricaca"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"Cedricaca"},"content":" // Write the modified content back to the file","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"Cedricaca"},"content":" for (String modifiedLine : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"Cedricaca"},"content":" writer.write(modifiedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"Cedricaca"},"content":" writer.newLine(); // Add a newline character after each line","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":305,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":306,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":307,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":308,"author":{"gitId":"Cedricaca"},"content":" } else if (mUnmark.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":309,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mUnmark.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":310,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":311,"author":{"gitId":"Cedricaca"},"content":" Task t;","lastModifiedDate":"2024-01-23"},{"lineNumber":312,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":313,"author":{"gitId":"Cedricaca"},"content":" t \u003d List.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":314,"author":{"gitId":"Cedricaca"},"content":" t.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":315,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Oh no! I have marked this as not done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":316,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":317,"author":{"gitId":"Cedricaca"},"content":" int lineToUnmark \u003d number - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"Cedricaca"},"content":" // Read the content of the file","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"Cedricaca"},"content":" ArrayList\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"Cedricaca"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"Cedricaca"},"content":" String currentLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"Cedricaca"},"content":" int currLine \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"Cedricaca"},"content":" while ((currentLine \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"Cedricaca"},"content":" // Check if the line should be deleted","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"Cedricaca"},"content":" if (currLine \u003d\u003d lineToUnmark) {","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"Cedricaca"},"content":" currentLine\u003dt.export();","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"Cedricaca"},"content":" lines.add(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"Cedricaca"},"content":" currLine \u003d currLine + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error reading file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"Cedricaca"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"Cedricaca"},"content":" // Write the modified content back to the file","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"Cedricaca"},"content":" for (String modifiedLine : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"Cedricaca"},"content":" writer.write(modifiedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"Cedricaca"},"content":" writer.newLine(); // Add a newline character after each line","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":349,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":350,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":351,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":352,"author":{"gitId":"Cedricaca"},"content":" } else if (mMark.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":353,"author":{"gitId":"Cedricaca"},"content":" String captured \u003d mMark.group(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":354,"author":{"gitId":"Cedricaca"},"content":" int number \u003d Integer.parseInt(captured);","lastModifiedDate":"2024-01-23"},{"lineNumber":355,"author":{"gitId":"Cedricaca"},"content":" Task t;","lastModifiedDate":"2024-01-23"},{"lineNumber":356,"author":{"gitId":"Cedricaca"},"content":" if (number \u003e 0 \u0026\u0026 number \u003c length + 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":357,"author":{"gitId":"Cedricaca"},"content":" t \u003d List.get(number -1);","lastModifiedDate":"2024-01-23"},{"lineNumber":358,"author":{"gitId":"Cedricaca"},"content":" t.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":359,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Nice! I have marked this as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":360,"author":{"gitId":"Cedricaca"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":361,"author":{"gitId":"Cedricaca"},"content":" int lineToMark \u003d number - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"Cedricaca"},"content":" // Read the content of the file","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"Cedricaca"},"content":" ArrayList\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"Cedricaca"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"Cedricaca"},"content":" String currentLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"Cedricaca"},"content":" int currLine \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"Cedricaca"},"content":" while ((currentLine \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"Cedricaca"},"content":" // Check if the line should be deleted","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"Cedricaca"},"content":" if (currLine \u003d\u003d lineToMark) {","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"Cedricaca"},"content":" currentLine \u003d t.export();","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"Cedricaca"},"content":" lines.add(currentLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"Cedricaca"},"content":" currLine \u003d currLine + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error reading file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"Cedricaca"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"Cedricaca"},"content":" // Write the modified content back to the file","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"Cedricaca"},"content":" for (String modifiedLine : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"Cedricaca"},"content":" writer.write(modifiedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"Cedricaca"},"content":" writer.newLine(); // Add a newline character after each line","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":393,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please input a valid number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":394,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":395,"author":{"gitId":"Cedricaca"},"content":" } else if (mTodo.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":396,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.replace(todo, \"\");","lastModifiedDate":"2024-01-23"},{"lineNumber":397,"author":{"gitId":"Cedricaca"},"content":" Todo n \u003d new Todo(newInput, false);","lastModifiedDate":"2024-01-23"},{"lineNumber":398,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":399,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":400,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":401,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":402,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":403,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":404,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":405,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":406,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":407,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file, true))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"Cedricaca"},"content":" writer.write(n.export());","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"Cedricaca"},"content":" writer.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":414,"author":{"gitId":"Cedricaca"},"content":" } else if (mEvent.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":415,"author":{"gitId":"Cedricaca"},"content":" if (mFrom.find() \u0026\u0026 mTo.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":416,"author":{"gitId":"Cedricaca"},"content":" int startIndex \u003d input.indexOf(from);","lastModifiedDate":"2024-01-23"},{"lineNumber":417,"author":{"gitId":"Cedricaca"},"content":" int startIndexTo \u003d input.indexOf(to);","lastModifiedDate":"2024-01-23"},{"lineNumber":418,"author":{"gitId":"Cedricaca"},"content":" String subFrom \u003d input.substring(startIndex + from.length(), startIndexTo-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"Cedricaca"},"content":" String subTo \u003d input.substring(startIndexTo + to.length());","lastModifiedDate":"2024-01-23"},{"lineNumber":420,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.substring(input.indexOf(event) + event.length(), startIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":421,"author":{"gitId":"Cedricaca"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\" yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt2 \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"Cedricaca"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"Cedricaca"},"content":" // Parse the string into a LocalDate object","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"Cedricaca"},"content":" ldt \u003d LocalDateTime.parse(subFrom, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"Cedricaca"},"content":" ldt2 \u003d LocalDateTime.parse(subTo, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"Cedricaca"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"Cedricaca"},"content":" // Handle parsing exceptions","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please enter a valid date/time\");","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"Cedricaca"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":436,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":437,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":438,"author":{"gitId":"Cedricaca"},"content":" Event n \u003d new Event(newInput, false, ldt, ldt2);","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":440,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":441,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":442,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":443,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":444,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file, true))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"Cedricaca"},"content":" writer.write(n.export());","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"Cedricaca"},"content":" writer.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":451,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":452,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"pls input your start and end of the event.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":453,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":454,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":455,"author":{"gitId":"Cedricaca"},"content":" } else if (mDeadline.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":456,"author":{"gitId":"Cedricaca"},"content":" if (mBy.find()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":457,"author":{"gitId":"Cedricaca"},"content":" int finalIndex \u003d input.indexOf(by) + by.length();","lastModifiedDate":"2024-01-23"},{"lineNumber":458,"author":{"gitId":"Cedricaca"},"content":" String dL \u003d input.substring(finalIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":459,"author":{"gitId":"Cedricaca"},"content":" String newInput \u003d input.substring(input.indexOf(deadline) + deadline.length(), input.indexOf(by));","lastModifiedDate":"2024-01-23"},{"lineNumber":460,"author":{"gitId":"Cedricaca"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\" yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"Cedricaca"},"content":" LocalDateTime ldt \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"Cedricaca"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"Cedricaca"},"content":" // Parse the string into a LocalDate object","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"Cedricaca"},"content":" ldt \u003d LocalDateTime.parse(dL, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"Cedricaca"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"Cedricaca"},"content":" // Handle parsing exceptions","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Please enter a valid date/time\");","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"Cedricaca"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"Cedricaca"},"content":" if (newInput.trim().equals(\"\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":473,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Task cannot be empty!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":474,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":475,"author":{"gitId":"Cedricaca"},"content":" Deadline n \u003d new Deadline(newInput, false, ldt);","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"Cedricaca"},"content":" List.add(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":477,"author":{"gitId":"Cedricaca"},"content":" length \u003d length + 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":478,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"OK, I have added this task :\");","lastModifiedDate":"2024-01-23"},{"lineNumber":479,"author":{"gitId":"Cedricaca"},"content":" System.out.println(n);","lastModifiedDate":"2024-01-23"},{"lineNumber":480,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"You now have \" + length + \" items in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":481,"author":{"gitId":"Cedricaca"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file, true))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"Cedricaca"},"content":" writer.write(n.export());","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"Cedricaca"},"content":" writer.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"Cedricaca"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"Cedricaca"},"content":" System.err.println(\"Error writing to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":488,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":489,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"please include a deadline\");","lastModifiedDate":"2024-01-23"},{"lineNumber":490,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":491,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":492,"author":{"gitId":"Cedricaca"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":493,"author":{"gitId":"Cedricaca"},"content":" System.out.println(\"Sorry, no idea what u talking about lulz\");","lastModifiedDate":"2024-01-23"},{"lineNumber":494,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":495,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":496,"author":{"gitId":"Cedricaca"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":497,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":499,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"Cedricaca":495}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Cedricaca"},"content":"reset","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Cedricaca"},"content":"todo bruh","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Cedricaca"},"content":"event nig /from asd /to lalala","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Cedricaca"},"content":"deadline laugh /by tomorrow","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Cedricaca"},"content":"mark 2","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Cedricaca"},"content":"unmark 2","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Cedricaca"},"content":"delete 3","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Cedricaca"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Cedricaca"},"content":"bye","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Cedricaca":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":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-30"},{"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":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"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":"2024-01-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":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Cedricaca"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Cedricaca"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Cedricaca"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Cedricaca"},"content":"then","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Cedricaca"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Cedricaca"},"content":" exit 0","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Cedricaca"},"content":"else","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Cedricaca"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Cedricaca"},"content":" exit 1","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Cedricaca"},"content":"fi","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Cedricaca"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"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":37,"author":{"gitId":"Cedricaca"},"content":"java -classpath /Users/cedrictan/git/ip/bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":40,"Cedricaca":12}}] diff --git a/Cedricaca_ip_master/commits.json b/Cedricaca_ip_master/commits.json index 294bcc24..809d548e 100644 --- a/Cedricaca_ip_master/commits.json +++ b/Cedricaca_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Cedricaca":[{"date":"2024-01-23","commitResults":[{"hash":"2f4aa6f444f67be5ab6a7d06887531c54f6f9cff","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"f6c3a6e1a145d03296d90e4d87a2800237c1b923","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"4fbaf41535edc99daab66808905759df42ec66a9","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"4b03fe80df8cdd50af9648ef3b5d6f3b1746e576","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":5}}},{"hash":"60c90c6e1a4586d10ac1635617b035be6c8d0ad4","isMergeCommit":false,"messageTitle":"Level-3 improved","messageBody":"","tags":["Level-3-improved"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}},{"hash":"723137d51440f93f9df349a1c7c61075c4d4dd0a","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":14}}},{"hash":"eb2b819a26fc147110508583fd70c20b723af670","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":33}}},{"hash":"dec6a23d495067f7ec5786289a29f3df9898d0ca","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":23}}}]},{"date":"2024-01-29","commitResults":[{"hash":"70697c89234f709e07ab7d68d5ccd98f6059a6f9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":6,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"Cedricaca":{"java":215,"md":0,"fxml":0,"sh":6,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"Cedricaca":12152.81},"authorDisplayNameMap":{"Cedricaca":"CS2103T-W13-3 TAN ..DRIC"}} +{"authorDailyContributionsMap":{"Cedricaca":[{"date":"2024-01-23","commitResults":[{"hash":"2f4aa6f444f67be5ab6a7d06887531c54f6f9cff","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"f6c3a6e1a145d03296d90e4d87a2800237c1b923","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"4fbaf41535edc99daab66808905759df42ec66a9","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"4b03fe80df8cdd50af9648ef3b5d6f3b1746e576","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":5}}},{"hash":"60c90c6e1a4586d10ac1635617b035be6c8d0ad4","isMergeCommit":false,"messageTitle":"Level-3 improved","messageBody":"","tags":["Level-3-improved"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}},{"hash":"723137d51440f93f9df349a1c7c61075c4d4dd0a","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":14}}},{"hash":"eb2b819a26fc147110508583fd70c20b723af670","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":33}}},{"hash":"dec6a23d495067f7ec5786289a29f3df9898d0ca","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":23}}}]},{"date":"2024-01-29","commitResults":[{"hash":"70697c89234f709e07ab7d68d5ccd98f6059a6f9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":6,"deletions":6}}}]},{"date":"2024-01-30","commitResults":[{"hash":"2b96e96186c8b151ae4d2c1d4c3b39ac1635376d","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":233,"deletions":6},"sh":{"insertions":19,"deletions":5}}},{"hash":"5bba9cb54c4be1149dcf3e6f259f0f7e64408bb3","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":21}}},{"hash":"10ec5526918f789004a3833a70bbdc46c450840e","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"Cedricaca":{"java":495,"md":0,"fxml":0,"sh":12,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"Cedricaca":19820.166},"authorDisplayNameMap":{"Cedricaca":"CS2103T-W13-3 TAN ..DRIC"}} diff --git a/ChrysanthemumT_ip_master/commits.json b/ChrysanthemumT_ip_master/commits.json index f7898d52..b83d656f 100644 --- a/ChrysanthemumT_ip_master/commits.json +++ b/ChrysanthemumT_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ChrysanthemumT":[{"date":"2024-01-23","commitResults":[{"hash":"5b2b50e54cd9e1e5095d0480c88070d5159dddcb","isMergeCommit":false,"messageTitle":"basic skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"53f13b662becbd818cbe80f26d852b4dd3e16318","isMergeCommit":false,"messageTitle":"added echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":10}}},{"hash":"2611fcf7d4177e75f21496d2997ef1a12f9733ff","isMergeCommit":false,"messageTitle":"add, list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":3}}},{"hash":"e855a884c4b2d2b2bf8c3b46fcf72b8c6507da38","isMergeCommit":false,"messageTitle":"Mark as Done complete","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":11}}}]},{"date":"2024-01-24","commitResults":[{"hash":"46ce15c4dd3cfd1a3333f7999baf4268f84a7e16","isMergeCommit":false,"messageTitle":"level-4 added todo event deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":19}}},{"hash":"638ca9c9c8fb270ebf7d9180bb50871f628aa71c","isMergeCommit":false,"messageTitle":"automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"51f7a9693aa90a8c82e1d26f2ea5770ad3d7c1b9","isMergeCommit":false,"messageTitle":"handled errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":173,"deletions":39}}}]},{"date":"2024-01-25","commitResults":[{"hash":"cacb6232322a3fb4400c5d957dbfd3f9aa28f239","isMergeCommit":false,"messageTitle":"added delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":4}}}]},{"date":"2024-01-30","commitResults":[{"hash":"d8650e361311a8b1567d8a24d3fdfcb3d1c738a8","isMergeCommit":false,"messageTitle":"Add saving feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":147,"deletions":119}}},{"hash":"5d40a6d1ea3154e8729f9536c9647dd509488fdc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Merge saving feature from branch to master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ChrysanthemumT":{"java":492,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"ChrysanthemumT":17034.137},"authorDisplayNameMap":{"ChrysanthemumT":"CS2103T-W11-3 WANG..HONG"}} +{"authorDailyContributionsMap":{"ChrysanthemumT":[{"date":"2024-01-23","commitResults":[{"hash":"5b2b50e54cd9e1e5095d0480c88070d5159dddcb","isMergeCommit":false,"messageTitle":"basic skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"53f13b662becbd818cbe80f26d852b4dd3e16318","isMergeCommit":false,"messageTitle":"added echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":10}}},{"hash":"2611fcf7d4177e75f21496d2997ef1a12f9733ff","isMergeCommit":false,"messageTitle":"add, list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":3}}},{"hash":"e855a884c4b2d2b2bf8c3b46fcf72b8c6507da38","isMergeCommit":false,"messageTitle":"Mark as Done complete","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":11}}}]},{"date":"2024-01-24","commitResults":[{"hash":"46ce15c4dd3cfd1a3333f7999baf4268f84a7e16","isMergeCommit":false,"messageTitle":"level-4 added todo event deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":19}}},{"hash":"638ca9c9c8fb270ebf7d9180bb50871f628aa71c","isMergeCommit":false,"messageTitle":"automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"51f7a9693aa90a8c82e1d26f2ea5770ad3d7c1b9","isMergeCommit":false,"messageTitle":"handled errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":173,"deletions":39}}}]},{"date":"2024-01-25","commitResults":[{"hash":"cacb6232322a3fb4400c5d957dbfd3f9aa28f239","isMergeCommit":false,"messageTitle":"added delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":4}}}]},{"date":"2024-01-30","commitResults":[{"hash":"d8650e361311a8b1567d8a24d3fdfcb3d1c738a8","isMergeCommit":false,"messageTitle":"Add saving feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":147,"deletions":119}}},{"hash":"5d40a6d1ea3154e8729f9536c9647dd509488fdc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Merge saving feature from branch to master","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ChrysanthemumT":{"java":492,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"ChrysanthemumT":17034.137},"authorDisplayNameMap":{"ChrysanthemumT":"CS2103T-W11-3 WANG..HONG"}} diff --git a/ChuaZiLong_ip_master/authorship.json b/ChuaZiLong_ip_master/authorship.json index c5f3bbc3..5f86688b 100644 --- a/ChuaZiLong_ip_master/authorship.json +++ b/ChuaZiLong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-28"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-28"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-28"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-28"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-24"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-24"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-24"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-24"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-24"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-28"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-28"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-28"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-28"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-28"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-28"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-28"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-28"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-28"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":380,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-28"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-28"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-28"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-28"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-28"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":412,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":414,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":415,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-28"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-28"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-28"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-28"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-28"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-28"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-28"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":584,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":5,"ChuaZiLong":579}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":588,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":588}},{"path":"src/src/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package src.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":587}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"plugins {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":" id \u0027java\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":" id \u0027application\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"application {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"repositories {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":" mavenCentral()","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":"dependencies {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":"test {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" useJUnitPlatform()","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":"// Define the main class of your application","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":"mainClassName \u003d \u0027Duke\u0027 // Replace with your own main class","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":"jar {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":" manifest {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" attributes(","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" \u0027Main-Class\u0027: mainClassName","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" )","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" from {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":"shadowJar {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":43}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-28"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-28"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-28"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-28"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-24"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-24"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-24"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-24"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-24"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-24"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-28"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-28"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-28"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-28"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-28"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-28"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-28"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-28"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-28"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":380,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-28"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-28"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-28"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-28"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-28"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":412,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":414,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":415,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-28"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-28"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-28"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-28"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-28"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-28"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-28"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-28"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-28"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":584,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":5,"ChuaZiLong":579}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":588,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":588}},{"path":"src/main/java/seedu/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package seedu.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" * Represents the user interface of the Duke application.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" * Handles interactions with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" * Constructs a new Ui instance.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" * Initializes the scanner used to read user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" * Displays the welcome message to the user at the start of the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" * Displays a goodbye message to the user before the application exits.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":" * Displays an error message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":" * Informs the user that a new task has been added and displays the current number of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task that was added.","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" * @param taskCount The total number of tasks after adding the new task.","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" * Displays the list of tasks to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" * @param tasks The TaskList containing the tasks to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" * Reads the next line of user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" * @return The user input as a String.","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" * Displays a message indicating an error in loading the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" * Closes the scanner object used for reading user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" * Informs the user that a task has been marked as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task that was marked as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" * Informs the user that a task has been marked as not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task that was marked as not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":" * Informs the user that a task has been deleted and displays the current number of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task that was deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" * @param taskCount The total number of tasks after deleting the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" public void showFindResults(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"No matching tasks found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" * Handles loading tasks from the file and saving tasks to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" * Constructs a new Storage instance with the specified file path.","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" * @param filePath The file path where tasks are loaded from and saved to.","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" * Loads tasks from the specified file.","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":" * @return An ArrayList of tasks loaded from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" * @throws DukeException If the file is not found or the tasks cannot be loaded.","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" * Saves the current tasks to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" * @param tasks The TaskList containing tasks to save.","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" * Converts a task to a formatted string for saving to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" * The format includes the task type, status, description, and any additional information.","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task to be converted to a string.","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" * @return A formatted string representing the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" * Handles parsing of user input commands and converting them into Command objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" * Parses user input and returns the appropriate Command object.","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" * @param fullCommand The full user input command.","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" * @return The command object corresponding to the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" * @throws DukeException If the command is invalid or if the input format is incorrect.","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":" case \"find\":","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The search keyword cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":" return new FindCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" * Parses the input for adding a deadline task and returns an AddDeadlineCommand object.","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":" * @param commandArgs The argument string for the deadline command.","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":" * @return An AddDeadlineCommand object representing the deadline task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":" * @throws DukeException If the input format for the deadline is incorrect.","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" * Parses the input for adding an event task and returns an AddEventCommand object.","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":" * @param commandArgs The argument string for the event command.","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" * @return An AddEventCommand object representing the event task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" * @throws DukeException If the input format for the event is incorrect.","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":" * Represents the list of tasks in the Duke application.","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":" * Handles operations like adding, removing, and retrieving tasks from the list.","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" * Constructs a new TaskList instance with a pre-defined list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" * @param tasks The ArrayList of tasks to initialize the task list with.","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" * Constructs a new TaskList instance. Initializes the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" * Removes and returns a task from the task list at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" * @return The removed task.","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" * Retrieves a task from the task list at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":" * @param index The index of the task to be retrieved.","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" * @return The size of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" * Represents the main class for the Duke application.","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" * Initializes the application and starts the interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":" * Constructs a new Duke instance with the specified file path for data storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" * @param filePath The file path used for storing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" * Runs the Duke application. Initializes the necessary components and starts","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" * the command loop to receive and process user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":" * The entry point of the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" * @param args Command line arguments.","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":588,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":589,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":590,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":591,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":592,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":593,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":594,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":595,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":596,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":597,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":598,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":599,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":600,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":601,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":602,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":603,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":604,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":605,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":606,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":607,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":608,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":609,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":610,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":611,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":612,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":613,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":614,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":615,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":616,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":617,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":618,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":619,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":620,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":621,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":622,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":623,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":624,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":625,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":626,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":627,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":628,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":629,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":630,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":631,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":632,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":633,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":634,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":635,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":636,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":637,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":638,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":639,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":640,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":641,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":642,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":643,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":644,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":645,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":646,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":647,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":648,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":649,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":650,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":651,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":652,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":653,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":654,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":655,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":656,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":657,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":658,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":659,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":660,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":661,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":662,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":663,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":664,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":665,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":666,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":667,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":668,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":669,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":670,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":671,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":672,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":673,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":674,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":675,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":676,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":677,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":678,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":679,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":680,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":681,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":682,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":683,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":684,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":685,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":686,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":687,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":688,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":689,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":690,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":691,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":692,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":693,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":694,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":695,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":696,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":697,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":698,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":699,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":700,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":701,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":702,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":703,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":704,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":705,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":706,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":707,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":708,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":709,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":710,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":711,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":712,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":713,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":714,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":715,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":716,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":717,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":718,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":719,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":720,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":721,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":722,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":723,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":724,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":725,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":726,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":727,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":728,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":729,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":730,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":731,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":732,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":733,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":734,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":735,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":736,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":737,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":738,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":739,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":740,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":741,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":742,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":743,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":744,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":745,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":746,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":747,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":748,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":749,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":750,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":751,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":752,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":753,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":754,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":755,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":756,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":757,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":758,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":759,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":760,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":761,"author":{"gitId":"ChuaZiLong"},"content":"class FindCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":762,"author":{"gitId":"ChuaZiLong"},"content":" private String keyword;","lastModifiedDate":"2024-01-30"},{"lineNumber":763,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":764,"author":{"gitId":"ChuaZiLong"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2024-01-30"},{"lineNumber":765,"author":{"gitId":"ChuaZiLong"},"content":" this.keyword \u003d keyword.toLowerCase(); // convert to lowercase for case-insensitive search","lastModifiedDate":"2024-01-30"},{"lineNumber":766,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":767,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":768,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":769,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":770,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":771,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":772,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":773,"author":{"gitId":"ChuaZiLong"},"content":" if (task.getDescription().toLowerCase().contains(keyword)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":774,"author":{"gitId":"ChuaZiLong"},"content":" matchingTasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":775,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":776,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":777,"author":{"gitId":"ChuaZiLong"},"content":" ui.showFindResults(matchingTasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":778,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":779,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":780,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":781,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":782,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":783,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":784,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":784}},{"path":"src/src/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package src.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ChuaZiLong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ChuaZiLong"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ChuaZiLong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ChuaZiLong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ChuaZiLong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ChuaZiLong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ChuaZiLong"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ChuaZiLong"},"content":" isExit \u003d command.isExit(); // Check if the command signals to exit","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ChuaZiLong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ChuaZiLong"},"content":" ui.closeScanner();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ChuaZiLong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ChuaZiLong"},"content":" new Duke(\"./data/duke.txt/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ChuaZiLong"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ChuaZiLong"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChuaZiLong"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChuaZiLong"},"content":"class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ChuaZiLong"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChuaZiLong"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ChuaZiLong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ChuaZiLong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Hello! I\u0027m SCZL\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ChuaZiLong"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ChuaZiLong"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ChuaZiLong"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println((i + 1) + \".\" + tasks.getTask(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ChuaZiLong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ChuaZiLong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ChuaZiLong"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Error loading file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"ChuaZiLong"},"content":" public void closeScanner() {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ChuaZiLong"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ChuaZiLong"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"ChuaZiLong"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"ChuaZiLong"},"content":" public void showDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"ChuaZiLong"},"content":"class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"ChuaZiLong"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"ChuaZiLong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"ChuaZiLong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChuaZiLong"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"ChuaZiLong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"ChuaZiLong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"ChuaZiLong"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ChuaZiLong"},"content":" try (Scanner fileScanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"ChuaZiLong"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"ChuaZiLong"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"ChuaZiLong"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"ChuaZiLong"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"ChuaZiLong"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"ChuaZiLong"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 4) throw new DukeException(\"Invalid deadline format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Deadline(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"ChuaZiLong"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 5) throw new DukeException(\"Invalid event format in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ChuaZiLong"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ChuaZiLong"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"ChuaZiLong"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"ChuaZiLong"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DukeException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"Skipping invalid task: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"ChuaZiLong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"ChuaZiLong"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"ChuaZiLong"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"ChuaZiLong"},"content":" try (PrintWriter writer \u003d new PrintWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"ChuaZiLong"},"content":" for (int i \u003d 0; i \u003c tasks.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"ChuaZiLong"},"content":" writer.println(taskToFileString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"ChuaZiLong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"ChuaZiLong"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ChuaZiLong"},"content":" private String taskToFileString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ChuaZiLong"},"content":" String type \u003d task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"ChuaZiLong"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"ChuaZiLong"},"content":" String status \u003d task.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"ChuaZiLong"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ChuaZiLong"},"content":" String additionalInfo \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"ChuaZiLong"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"ChuaZiLong"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + deadline.getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"ChuaZiLong"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"ChuaZiLong"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"ChuaZiLong"},"content":" additionalInfo \u003d \" | \" + event.getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")) +","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"ChuaZiLong"},"content":" \" | \" + event.getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"ChuaZiLong"},"content":" return type + \" | \" + status + \" | \" + details + additionalInfo;","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"ChuaZiLong"},"content":"class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"ChuaZiLong"},"content":" private static final DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"ChuaZiLong"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"ChuaZiLong"},"content":" String[] commandParts \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"ChuaZiLong"},"content":" String commandType \u003d commandParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"ChuaZiLong"},"content":" String commandArgs \u003d commandParts.length \u003e 1 ? commandParts[1] : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"ChuaZiLong"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"ChuaZiLong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"ChuaZiLong"},"content":" if (commandArgs.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"ChuaZiLong"},"content":" return new AddTodoCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"ChuaZiLong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddDeadlineCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"ChuaZiLong"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"ChuaZiLong"},"content":" return parseAddEventCommand(commandArgs);","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"ChuaZiLong"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"ChuaZiLong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"ChuaZiLong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"ChuaZiLong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"ChuaZiLong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"ChuaZiLong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"ChuaZiLong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"ChuaZiLong"},"content":" int index \u003d Integer.parseInt(commandArgs) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"ChuaZiLong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"ChuaZiLong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"ChuaZiLong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"ChuaZiLong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"ChuaZiLong"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddDeadlineCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid deadline command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"ChuaZiLong"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"ChuaZiLong"},"content":" return new AddDeadlineCommand(description, byDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"ChuaZiLong"},"content":" private static Command parseAddEventCommand(String commandArgs) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"ChuaZiLong"},"content":" String[] parts \u003d commandArgs.split(\"/at\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"ChuaZiLong"},"content":" if (parts.length \u003c 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid event command format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"ChuaZiLong"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"ChuaZiLong"},"content":" String at \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"ChuaZiLong"},"content":" String[] timeParts \u003d at.split(\"-\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"ChuaZiLong"},"content":" if (timeParts.length \u003c 2 || timeParts[0].trim().isEmpty() || timeParts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid time format for event command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"ChuaZiLong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(timeParts[0].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"ChuaZiLong"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(timeParts[1].trim(), dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"ChuaZiLong"},"content":" return new AddEventCommand(description, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"ChuaZiLong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid date format. Please use yyyy-MM-dd HHmm format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"ChuaZiLong"},"content":"class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"ChuaZiLong"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"ChuaZiLong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"ChuaZiLong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"ChuaZiLong"},"content":" this(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"ChuaZiLong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"ChuaZiLong"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"ChuaZiLong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"ChuaZiLong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"ChuaZiLong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"ChuaZiLong"},"content":" // ... any other methods needed for task management ...","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"ChuaZiLong"},"content":"enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"ChuaZiLong"},"content":" TODO,","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"ChuaZiLong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"ChuaZiLong"},"content":" EVENT","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"ChuaZiLong"},"content":"class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"ChuaZiLong"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"ChuaZiLong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"ChuaZiLong"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"ChuaZiLong"},"content":" public Task(String description, TaskType taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"ChuaZiLong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"ChuaZiLong"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"ChuaZiLong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"ChuaZiLong"},"content":" return \"[\" + taskType + \"]\" + (isDone ? \"[X] \" : \"[ ] \");","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"ChuaZiLong"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"ChuaZiLong"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"ChuaZiLong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"ChuaZiLong"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"ChuaZiLong"},"content":" return getStatusIcon() + getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"ChuaZiLong"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"ChuaZiLong"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.TODO);","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"ChuaZiLong"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"ChuaZiLong"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.DEADLINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (by: \" + formatter.format(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"ChuaZiLong"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"ChuaZiLong"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"ChuaZiLong"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"ChuaZiLong"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"ChuaZiLong"},"content":" super(description, TaskType.EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"ChuaZiLong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"ChuaZiLong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"ChuaZiLong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"ChuaZiLong"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"ChuaZiLong"},"content":" return super.getDescription() + \" (from: \" + formatter.format(from) + \" to: \" + formatter.format(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":411,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":412,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-30"},{"lineNumber":413,"author":{"gitId":"ChuaZiLong"},"content":" return from;","lastModifiedDate":"2024-01-30"},{"lineNumber":414,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":415,"author":{"gitId":"ChuaZiLong"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":416,"author":{"gitId":"ChuaZiLong"},"content":" return to;","lastModifiedDate":"2024-01-30"},{"lineNumber":417,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":418,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":419,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":420,"author":{"gitId":"ChuaZiLong"},"content":"abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":421,"author":{"gitId":"ChuaZiLong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":422,"author":{"gitId":"ChuaZiLong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":423,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":424,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":425,"author":{"gitId":"ChuaZiLong"},"content":"class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":426,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":427,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":428,"author":{"gitId":"ChuaZiLong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":429,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":430,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":431,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":432,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":433,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":434,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":435,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":436,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":437,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":438,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":439,"author":{"gitId":"ChuaZiLong"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":440,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":441,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":442,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":443,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":444,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":445,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":446,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":447,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":448,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":449,"author":{"gitId":"ChuaZiLong"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":450,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":451,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":452,"author":{"gitId":"ChuaZiLong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":453,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":454,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":455,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":456,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":457,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":458,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":459,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":460,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":461,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":462,"author":{"gitId":"ChuaZiLong"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":463,"author":{"gitId":"ChuaZiLong"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":464,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":465,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":466,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":467,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":468,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":469,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":470,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":471,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":472,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":473,"author":{"gitId":"ChuaZiLong"},"content":"class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":474,"author":{"gitId":"ChuaZiLong"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":475,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":476,"author":{"gitId":"ChuaZiLong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":477,"author":{"gitId":"ChuaZiLong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":478,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":479,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":480,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":481,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":482,"author":{"gitId":"ChuaZiLong"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.getSize()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":483,"author":{"gitId":"ChuaZiLong"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":484,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":485,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d tasks.removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":486,"author":{"gitId":"ChuaZiLong"},"content":" ui.showDeletedTask(task, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":487,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":488,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":489,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":490,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":491,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":492,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":493,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":494,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":495,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":496,"author":{"gitId":"ChuaZiLong"},"content":"class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":497,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":498,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":499,"author":{"gitId":"ChuaZiLong"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":500,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":501,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":502,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":503,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":504,"author":{"gitId":"ChuaZiLong"},"content":" return true; // Indicate that the application should exit","lastModifiedDate":"2024-01-30"},{"lineNumber":505,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":506,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":507,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":508,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":509,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":510,"author":{"gitId":"ChuaZiLong"},"content":"class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":511,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":512,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":513,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":514,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":515,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":516,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":517,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":518,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":519,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":520,"author":{"gitId":"ChuaZiLong"},"content":"class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":521,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":522,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":523,"author":{"gitId":"ChuaZiLong"},"content":" public AddTodoCommand(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":524,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":525,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":526,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":527,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":528,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":529,"author":{"gitId":"ChuaZiLong"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":530,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":531,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":532,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":533,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":534,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":535,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":536,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":537,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":538,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":539,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":540,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":541,"author":{"gitId":"ChuaZiLong"},"content":"class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":542,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":543,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":544,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":545,"author":{"gitId":"ChuaZiLong"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":546,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":547,"author":{"gitId":"ChuaZiLong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":548,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":549,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":550,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":551,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":552,"author":{"gitId":"ChuaZiLong"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":553,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":554,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":555,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":556,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":557,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":558,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":559,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":560,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":561,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":562,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":563,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":564,"author":{"gitId":"ChuaZiLong"},"content":"class AddEventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":565,"author":{"gitId":"ChuaZiLong"},"content":" private String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":566,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":567,"author":{"gitId":"ChuaZiLong"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":568,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":569,"author":{"gitId":"ChuaZiLong"},"content":" public AddEventCommand(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":570,"author":{"gitId":"ChuaZiLong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":571,"author":{"gitId":"ChuaZiLong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":572,"author":{"gitId":"ChuaZiLong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":573,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":574,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":575,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":576,"author":{"gitId":"ChuaZiLong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":577,"author":{"gitId":"ChuaZiLong"},"content":" Event newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":578,"author":{"gitId":"ChuaZiLong"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":579,"author":{"gitId":"ChuaZiLong"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":580,"author":{"gitId":"ChuaZiLong"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":581,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":582,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":583,"author":{"gitId":"ChuaZiLong"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":584,"author":{"gitId":"ChuaZiLong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":585,"author":{"gitId":"ChuaZiLong"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":586,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":587,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":587}},{"path":"src/test/java/seedu/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package seedu.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":" public void parse_addTodoCommand() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":" Command command \u003d Parser.parse(\"todo read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":" assertTrue(command instanceof AddTodoCommand, \"Parser should return AddTodoCommand for \u0027todo\u0027 input.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" public void parse_invalidCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" assertThrows(DukeException.class, () -\u003e {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" Parser.parse(\"invalid command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" });","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" // ... add more test methods if necessary ...","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":23}},{"path":"src/test/java/seedu/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChuaZiLong"},"content":"package seedu.duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChuaZiLong"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ChuaZiLong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ChuaZiLong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChuaZiLong"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChuaZiLong"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ChuaZiLong"},"content":" @BeforeEach","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChuaZiLong"},"content":" public void setUp() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChuaZiLong"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ChuaZiLong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ChuaZiLong"},"content":" public void addTask_and_getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ChuaZiLong"},"content":" Task task \u003d new Todo(\"Read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ChuaZiLong"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ChuaZiLong"},"content":" assertEquals(1, taskList.getSize(), \"TaskList size should increase after adding a task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ChuaZiLong"},"content":" assertEquals(task, taskList.getTask(0), \"Added task should match the retrieved task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ChuaZiLong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ChuaZiLong"},"content":" // ... add more test methods if necessary ...","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ChuaZiLong"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ChuaZiLong"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChuaZiLong":26}}] diff --git a/ChuaZiLong_ip_master/commits.json b/ChuaZiLong_ip_master/commits.json index 1ccd569e..7feaf7e3 100644 --- a/ChuaZiLong_ip_master/commits.json +++ b/ChuaZiLong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ChuaZiLong":[{"date":"2024-01-24","commitResults":[{"hash":"fd3f99fb596f998f2487e68efc8b5d2f7f350e7e","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-2","Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"dd89622fc701f0bddd2dbf55f083b66a9e53174d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":2}}},{"hash":"c6b08c34427581e95e0116644cfd45d526c4b526","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"16d59cf35e9dedb09a88d89de11a21af6ab8d21e","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":25}}},{"hash":"2a85b68c30ab1c6e2d8939e4762cf547227fb438","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c55f6371ce0501bd85b9d72ccfc70cb9e4b4d0a6","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":26}}},{"hash":"5267dc4dfceea9e571bc031d406cfb1c65473a07","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":59}}},{"hash":"242e73e4992665462773773acde21be7dcfe67cb","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"56c3caadae335aa3c11ad6c5d87f2da6d6a3f61d","isMergeCommit":false,"messageTitle":"Save tasks in the hard disk automatically","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":0}}},{"hash":"091ddb4beb72db255a471226f6ec69a17d1213d5","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"96a0d97164262badbf6c7d87fc6583704be36551","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":22}}},{"hash":"b9bd9ec011f461dab8ffc492286d59b004c48a47","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":335,"deletions":253}}}]},{"date":"2024-01-30","commitResults":[{"hash":"c0e5ae6a44d1b38923aa58d99cde5a2f67e734e4","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":17}}},{"hash":"a49a99daf39b3c3e6fa93a602a861de30885edc2","isMergeCommit":false,"messageTitle":"Package duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":587,"deletions":0}}},{"hash":"e0addcd37aa499f35c71c79591228933525e8c6b","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"6f18bc54c059f660f76d2b4b6f9e29ba77020575","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":588,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"ChuaZiLong":{"java":1754,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"ChuaZiLong":170469.19},"authorDisplayNameMap":{"ChuaZiLong":"CS2103T-W08-3 CHUA..LONG"}} +{"authorDailyContributionsMap":{"ChuaZiLong":[{"date":"2024-01-24","commitResults":[{"hash":"fd3f99fb596f998f2487e68efc8b5d2f7f350e7e","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-2","Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"dd89622fc701f0bddd2dbf55f083b66a9e53174d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":2}}},{"hash":"c6b08c34427581e95e0116644cfd45d526c4b526","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"16d59cf35e9dedb09a88d89de11a21af6ab8d21e","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":25}}},{"hash":"2a85b68c30ab1c6e2d8939e4762cf547227fb438","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c55f6371ce0501bd85b9d72ccfc70cb9e4b4d0a6","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":26}}},{"hash":"5267dc4dfceea9e571bc031d406cfb1c65473a07","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":59}}},{"hash":"242e73e4992665462773773acde21be7dcfe67cb","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"56c3caadae335aa3c11ad6c5d87f2da6d6a3f61d","isMergeCommit":false,"messageTitle":"Save tasks in the hard disk automatically","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":0}}},{"hash":"091ddb4beb72db255a471226f6ec69a17d1213d5","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"96a0d97164262badbf6c7d87fc6583704be36551","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":22}}},{"hash":"b9bd9ec011f461dab8ffc492286d59b004c48a47","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":335,"deletions":253}}}]},{"date":"2024-01-30","commitResults":[{"hash":"c0e5ae6a44d1b38923aa58d99cde5a2f67e734e4","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":17}}},{"hash":"a49a99daf39b3c3e6fa93a602a861de30885edc2","isMergeCommit":false,"messageTitle":"Package duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":587,"deletions":0}}},{"hash":"e0addcd37aa499f35c71c79591228933525e8c6b","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"6f18bc54c059f660f76d2b4b6f9e29ba77020575","isMergeCommit":false,"messageTitle":"Add Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":588,"deletions":0}}},{"hash":"be7405a76e7fe7b74326e78a34fe39970e76b9fb","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"java":{"insertions":585,"deletions":0}}},{"hash":"524455c4cb5f9807130511830e4eebabec1dfff3","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":9,"deletions":0},"java":{"insertions":28,"deletions":0},"md":{"insertions":33,"deletions":0}}},{"hash":"cfef695cc95a7d9fe9336b7fc7e134cab4952039","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":1}}},{"hash":"752a52cf3d364ecbba03c190886fa9b6e1b23360","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/ChuaZiLong/ip # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with \u0027#\u0027 will be ignored, and an empty message aborts # the commit.","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"a9e7b1b8259d763d247065685970b77fad2f48aa","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":19,"deletions":0}}},{"hash":"2dd3a4a2f115c2578b51419b5f626e233c49b4f6","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":23}}},{"hash":"292e4aaaf0ce76aab20a287edb9430a5bee05383","isMergeCommit":false,"messageTitle":"Add JavaDocs","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"e6bd45df835755371e7d650684f0a12d3070eea7","isMergeCommit":false,"messageTitle":"Add a way to find todos, deadlines and events with an inputted keyword","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"ChuaZiLong":{"java":2587,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":43,"txt":0}},"authorContributionVariance":{"ChuaZiLong":421938.84},"authorDisplayNameMap":{"ChuaZiLong":"CS2103T-W08-3 CHUA..LONG"}} diff --git a/Derekljh_ip_master/authorship.json b/Derekljh_ip_master/authorship.json index 49800a48..96438cfa 100644 --- a/Derekljh_ip_master/authorship.json +++ b/Derekljh_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" static String name \u003d \"Lunaris\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" static String indentation \u003d \" \";","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" static String indentedLine \u003d \" _________________________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" // Just for convenience of copy paste.","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" // System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" static ArrayList\u003cTask\u003e inputList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" public enum Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" BYE, LIST, UNMARK, MARK, DELETE, TODO, DEADLINE, EVENT, UNKNOWN","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" // Print out greeting message","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Hey! I\u0027m \" + name + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" + indentation + \"Is there anything I can do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" Command category \u003d getCommand(sc.next());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" switch (category) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":" case BYE:","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation +","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" \"Leaving so soon? Alright, have a great day ahead!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":" for (int i \u003d 0; i \u003c inputList.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" Task currTask \u003d inputList.get(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":" addTask(inputList, category, sc);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" public static Command getCommand(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":" return Command.valueOf(input.toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":" return Command.UNKNOWN;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":" public static void addTask(ArrayList\u003cTask\u003e inputList, Command category, Scanner sc) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":" switch (category) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":" if (sc.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Derekljh"},"content":" int taskId \u003d sc.nextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":" inputList.get(taskId - 1).markNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + inputList.get(taskId - 1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, but which task do you want me to unmark?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" if (sc.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" int taskId \u003d sc.nextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":" inputList.get(taskId - 1).markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + inputList.get(taskId - 1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, but which task do you want me to mark?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Derekljh"},"content":" sc.next();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Derekljh"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Derekljh"},"content":" if (sc.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Derekljh"},"content":" int taskId \u003d sc.nextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + inputList.get(taskId - 1).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"Derekljh"},"content":" inputList.remove(taskId - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Derekljh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, but which task do you want me to delete?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Derekljh"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Derekljh"},"content":" String toDoDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Derekljh"},"content":" if (toDoDescription.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the todo as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be todo (description)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Derekljh"},"content":" ToDo toDo \u003d new ToDo(toDoDescription);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Derekljh"},"content":" inputList.add(toDo);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + toDo);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Derekljh"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Derekljh"},"content":" String deadlineDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Derekljh"},"content":" if (!deadlineDescription.contains(\" /by \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the deadline as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be deadline (description) /by (date)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Derekljh"},"content":" String[] deadlineArguments \u003d deadlineDescription.split(\" /by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Derekljh"},"content":" Deadline deadline \u003d new Deadline(deadlineArguments[0], deadlineArguments[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Derekljh"},"content":" inputList.add(deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Derekljh"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Derekljh"},"content":" String eventDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Derekljh"},"content":" if (!eventDescription.contains(\" /from \") || !eventDescription.contains(\" /to \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the event as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be event (description) /from (time) /to (time)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Derekljh"},"content":" String[] eventArguments \u003d eventDescription.split(\" /from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Derekljh"},"content":" String[] eventDuration \u003d eventArguments[1].split(\" /to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Derekljh"},"content":" Event event \u003d new Event(eventArguments[0], eventDuration[0], eventDuration[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Derekljh"},"content":" inputList.add(event);","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + event);","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + inputList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Derekljh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, I cannot understand what this is!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Derekljh":184,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Derekljh":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" protected String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":13}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" // Method to mark whether task is done or not.","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" // Mark done.","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" public void markDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" // Unmark.","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" public void markNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":29}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Derekljh":10}}] +[{"path":"data/taskList.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"T | 1 | return book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"E | 1 | meeting | 2pm - 3pm","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"D | 0 | finish homework | monday","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"T | 1 | feed dog","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"E | 0 | race | 5pm - 6pm","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Derekljh":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" public Deadline(String status, String description, String by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" super(status.equals(\"1\"), description);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" public String toFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":24}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" static String name \u003d \"Lunaris\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":" static String indentation \u003d \" \";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" static String indentedLine \u003d \" _________________________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" // Just for convenience of copy paste.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" // System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":" private static final String FILE_DIR \u003d \"./data\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" private static final String FILE_PATH \u003d \"./data/taskList.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" public enum Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" BYE, LIST, UNMARK, MARK, DELETE, TODO, DEADLINE, EVENT, UNKNOWN;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" public static Command getCategory(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" return Command.valueOf(input.toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" return UNKNOWN;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" private static ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" public static void main(String[] args) throws DukeException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" list \u003d loadTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" // Print out greeting message","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Hey! I\u0027m \" + name + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" + indentation + \"Is there anything I can do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":" Command category \u003d Command.getCategory(sc.next());","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" switch (category) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" case BYE:","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation +","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" \"Leaving so soon? Alright, have a great day ahead!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":" Task currTask \u003d list.get(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Derekljh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":" addTask(list, category, sc);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Derekljh"},"content":" private static ArrayList\u003cTask\u003e loadTasksFile() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" File directory \u003d new File(FILE_DIR);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Derekljh"},"content":" if (!directory.isDirectory()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Derekljh"},"content":" directory.mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Derekljh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":" ArrayList\u003cTask\u003e inputList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":" Scanner fileSc \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" while (fileSc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":" String task \u003d fileSc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":" String[] argument \u003d task.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" String category \u003d argument[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":" String status \u003d argument[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" String description \u003d argument[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" switch (category) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Derekljh"},"content":" inputList.add(new ToDo(status, description));","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Derekljh"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Derekljh"},"content":" String by \u003d argument[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Derekljh"},"content":" inputList.add(new Deadline(status, description, by));","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Derekljh"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Derekljh"},"content":" String[] duration \u003d argument[3].split(\" - \");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Derekljh"},"content":" String start \u003d duration[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Derekljh"},"content":" String end \u003d duration[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Derekljh"},"content":" inputList.add(new Event(status, description, start, end));","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Derekljh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Derekljh"},"content":" fileSc.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" return inputList;","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" private static void saveTasksFile() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Derekljh"},"content":" StringBuilder msg \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Derekljh"},"content":" for (Task task : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Derekljh"},"content":" msg.append(task.toFile()).append(\"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Derekljh"},"content":" fw.write(msg.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Derekljh"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Derekljh"},"content":" public static void addTask(ArrayList\u003cTask\u003e taskList, Command category, Scanner sc) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Derekljh"},"content":" switch (category) {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Derekljh"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Derekljh"},"content":" int unmarkId \u003d sc.nextInt() - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Derekljh"},"content":" if (unmarkId \u003c 0 || unmarkId \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please select a valid task for me to unmark!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Derekljh"},"content":" taskList.get(unmarkId).markNotDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + taskList.get(unmarkId).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Derekljh"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Derekljh"},"content":" int markId \u003d sc.nextInt() - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Derekljh"},"content":" if (markId \u003c 0 || markId \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please select a valid task for me to mark!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Derekljh"},"content":" sc.next();","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Derekljh"},"content":" taskList.get(markId).markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + taskList.get(markId).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Derekljh"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Derekljh"},"content":" int deleteId \u003d sc.nextInt() - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Derekljh"},"content":" if (deleteId \u003c 0 || deleteId \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please select a valid task for me to delete!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + taskList.get(deleteId).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Derekljh"},"content":" taskList.remove(deleteId);","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"Derekljh"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Derekljh"},"content":" String toDoDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"Derekljh"},"content":" if (toDoDescription.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the todo as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be todo (description)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Derekljh"},"content":" ToDo toDo \u003d new ToDo(toDoDescription);","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Derekljh"},"content":" taskList.add(toDo);","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + toDo);","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Derekljh"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Derekljh"},"content":" String deadlineDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Derekljh"},"content":" if (!deadlineDescription.contains(\" /by \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the deadline as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be deadline (description) /by (date)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"Derekljh"},"content":" String[] deadlineArguments \u003d deadlineDescription.split(\" /by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Derekljh"},"content":" Deadline deadline \u003d new Deadline(deadlineArguments[0], deadlineArguments[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"Derekljh"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"Derekljh"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"Derekljh"},"content":" String eventDescription \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"Derekljh"},"content":" if (!eventDescription.contains(\" /from \") || !eventDescription.contains(\" /to \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, please give me a description of the event as well! \u003e.\u003c\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"Derekljh"},"content":" indentation + \"Format should be event (description) /from (time) /to (time)!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"Derekljh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"Derekljh"},"content":" String[] eventArguments \u003d eventDescription.split(\" /from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"Derekljh"},"content":" String[] eventDuration \u003d eventArguments[1].split(\" /to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"Derekljh"},"content":" Event event \u003d new Event(eventArguments[0], eventDuration[0], eventDuration[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"Derekljh"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + event);","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + \"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"Derekljh"},"content":" saveTasksFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"Derekljh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"Derekljh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"Derekljh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"Derekljh"},"content":" throw new DukeException(\"Sorry, I cannot understand what this is!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"Derekljh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentation + e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"Derekljh"},"content":" System.out.println(indentedLine);","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Derekljh":257,"-":3}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Derekljh":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" protected String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" public Event(String status, String description, String start, String end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" super(status.equals(\"1\"), description);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":" public String toFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + description","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" + \" | \" + start + \" - \" + end;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":25}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" public Task(boolean isDone, String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" // Method to mark whether task is done or not.","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" // Mark done.","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" public void markDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" // Unmark.","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" public void markNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" public String toFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" return \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":38}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":" public ToDo(String status, String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":" super(status.equals(\"1\"), description);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":" public String toFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Derekljh":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Derekljh":10}}] diff --git a/Derekljh_ip_master/commits.json b/Derekljh_ip_master/commits.json index 640ddfb6..24cf2ffb 100644 --- a/Derekljh_ip_master/commits.json +++ b/Derekljh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Derekljh":[{"date":"2024-01-24","commitResults":[{"hash":"230083587e173854f143594e5883844288ab17df","isMergeCommit":false,"messageTitle":"Add Lunaris.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"c59c980c00079d187e68a2b04c86f2a6207731ab","isMergeCommit":false,"messageTitle":"Add Lunaris.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"88eae7a4c90b0b622c2f7884b876dc65d755be27","isMergeCommit":false,"messageTitle":"Changed style of speech and added ability to echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":3}}},{"hash":"a8dbed54be8b5a3f4bbeec04eac9f46d6659f34f","isMergeCommit":false,"messageTitle":"Added list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"b4bfc58c4025a0e6745e67a12e5738f2911ae380","isMergeCommit":false,"messageTitle":"Created new Task class and added mark and unmark function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":6}}},{"hash":"5b495e9157cdfb0a3e97868f5a80b58edc16546d","isMergeCommit":false,"messageTitle":"Added 3 new classes to extend from Task and changed input to an array to separate the string input for categorizing.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":10}}}]},{"date":"2024-01-25","commitResults":[{"hash":"5985563d5eec2c3e4b79d3d6e59aefc0ae067390","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"832d31ed8cb9ede2676dbf38ee047739c78b2a09","isMergeCommit":false,"messageTitle":"Added Exception handling and improved readability of code","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":107}}},{"hash":"ef5f8f9ab1bd0e114543e5a604d70224f620aa78","isMergeCommit":false,"messageTitle":"Added Delete function and exception handling for mark, unmark, and delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"620ec7fcdd0c212278d94441af67583c4f85929f","isMergeCommit":false,"messageTitle":"Change code to Enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":110}}}]}]},"authorFileTypeContributionMap":{"Derekljh":{"java":254,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"Derekljh":12406.167},"authorDisplayNameMap":{"Derekljh":"CS2103T-W13-2 LEON..EREK"}} +{"authorDailyContributionsMap":{"Derekljh":[{"date":"2024-01-24","commitResults":[{"hash":"230083587e173854f143594e5883844288ab17df","isMergeCommit":false,"messageTitle":"Add Lunaris.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"c59c980c00079d187e68a2b04c86f2a6207731ab","isMergeCommit":false,"messageTitle":"Add Lunaris.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"88eae7a4c90b0b622c2f7884b876dc65d755be27","isMergeCommit":false,"messageTitle":"Changed style of speech and added ability to echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":3}}},{"hash":"a8dbed54be8b5a3f4bbeec04eac9f46d6659f34f","isMergeCommit":false,"messageTitle":"Added list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"b4bfc58c4025a0e6745e67a12e5738f2911ae380","isMergeCommit":false,"messageTitle":"Created new Task class and added mark and unmark function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":6}}},{"hash":"5b495e9157cdfb0a3e97868f5a80b58edc16546d","isMergeCommit":false,"messageTitle":"Added 3 new classes to extend from Task and changed input to an array to separate the string input for categorizing.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":10}}}]},{"date":"2024-01-25","commitResults":[{"hash":"5985563d5eec2c3e4b79d3d6e59aefc0ae067390","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"832d31ed8cb9ede2676dbf38ee047739c78b2a09","isMergeCommit":false,"messageTitle":"Added Exception handling and improved readability of code","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":107}}},{"hash":"ef5f8f9ab1bd0e114543e5a604d70224f620aa78","isMergeCommit":false,"messageTitle":"Added Delete function and exception handling for mark, unmark, and delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"620ec7fcdd0c212278d94441af67583c4f85929f","isMergeCommit":false,"messageTitle":"Change code to Enum","messageBody":"","tags":["A-Enum"],"fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":110}}},{"hash":"f620af47c8808749d9090162173d1b83c92cabac","isMergeCommit":false,"messageTitle":"Add save and load functionalities","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":161,"deletions":49}}},{"hash":"715e3dea3051b5c8204b5365234547152b19bb33","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Derekljh":{"java":367,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"Derekljh":22709.744},"authorDisplayNameMap":{"Derekljh":"CS2103T-W13-2 LEON..EREK"}} diff --git a/Dethada_ip_master/authorship.json b/Dethada_ip_master/authorship.json index e56e5f74..acdc9fe3 100644 --- a/Dethada_ip_master/authorship.json +++ b/Dethada_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":"Dethada"},"content":" showStandardStreams \u003d true","lastModifiedDate":"2024-01-29"},{"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":"Dethada"},"content":" mainClass.set(\"cappy.Cappy\")","lastModifiedDate":"2024-01-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":"Dethada"},"content":" archiveBaseName \u003d \"Cappy\"","lastModifiedDate":"2024-01-29"},{"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":{"Dethada":3,"-":39}},{"path":"src/main/java/cappy/Cappy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"public class Cappy {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private static final Scanner SCANNER \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" private static TaskList TASKS;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" private static final String STORAGE_PATH \u003d \"./cappy.csv\";","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" private static final Ui UI \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" UI.showBanner();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" UI.showGreetings();","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" storage \u003d new Storage(STORAGE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" TASKS \u003d TaskList.load(storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" inputLoop();","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" storage.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" UI.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" Cappy.SCANNER.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" System.exit(1);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" } catch(CappyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" UI.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" Cappy.SCANNER.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" System.exit(1);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" } finally {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" Cappy.SCANNER.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" private static void inputLoop() {","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" input \u003d SCANNER.nextLine();","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d Parser.parse(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" parsedInput.executeCommand(TASKS, UI, storage);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" if (parsedInput.getCommandType() \u003d\u003d CommandType.BYE) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" } catch (CappyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" UI.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" UI.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Dethada":56,"-":3}},{"path":"src/main/java/cappy/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" ui.showExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":17}},{"path":"src/main/java/cappy/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" abstract public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":14}},{"path":"src/main/java/cappy/command/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public enum CommandType {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" LIST(\"list\", new ListCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" MARK(\"mark\", new MarkCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" UNMARK(\"unmark\", new UnmarkCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" TODO(\"todo\", new TodoCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" DEADLINE(\"deadline\", new DeadlineCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" EVENT(\"event\", new EventCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" DELETE(\"delete\", new DeleteCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" BYE(\"bye\", new ByeCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" EMPTY(\"\", new EmptyCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" INVALID(\"\", new InvalidCommand());","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private Command command;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" private String commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" private CommandType(String commandString, Command command) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" this.commandString \u003d commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public String getCommandString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" return this.commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public Command getCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" return this.command;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" public static CommandType fromString(String commandString) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" for (CommandType command : CommandType.values()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" if (command.getCommandString().equals(commandString)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" return command;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" return INVALID;","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":39}},{"path":"src/main/java/cappy/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" } else if (!input.hasNamedArgument(\"by\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please specify the due date of the deadline task using /by [Date Time].\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" String description \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" String dueString \u003d input.getNamedArgument(\"by\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" LocalDateTime due \u003d Parser.parseDateTime(dueString);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" Deadline task \u003d new Deadline(description, due);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please use the correct datetime format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":35}},{"path":"src/main/java/cappy/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" tasks.removeTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" \"Noted. I\u0027ve removed this task:\", task.toString(),","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":37}},{"path":"src/main/java/cappy/command/EmptyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class EmptyCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {}","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":15}},{"path":"src/main/java/cappy/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" } else if (!input.hasNamedArgument(\"from\") || !input.hasNamedArgument(\"to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please specify the duration of the event using /from [Date Time] /to [Date Time].\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" String description \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" String fromString \u003d input.getNamedArgument(\"from\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" String toString \u003d input.getNamedArgument(\"to\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d Parser.parseDateTime(fromString);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d Parser.parseDateTime(toString);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" Event task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please use the correct datetime format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":37}},{"path":"src/main/java/cappy/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" ui.show(\"Sorry I can\u0027t help with that :(\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":18}},{"path":"src/main/java/cappy/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d new String[tasks.size() + 1];","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" messages[0] \u003d \"Here are the tasks in your list:\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" System.arraycopy(tasks.toString().split(\"\\n\"), 0, messages, 1, tasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":20}},{"path":"src/main/java/cappy/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" tasks.getTask(index).done();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" \"Nice! I\u0027ve marked this task as done:\", tasks.getTask(index).toString()","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":36}},{"path":"src/main/java/cappy/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" String description \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" Todo task \u003d new Todo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":24}},{"path":"src/main/java/cappy/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" tasks.getTask(index).undone();","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" \"OK, I\u0027ve marked this task as not done yet:\", tasks.getTask(index).toString()","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":34}},{"path":"src/main/java/cappy/error/CappyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.error;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public class CappyException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" public CappyException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":7}},{"path":"src/main/java/cappy/parser/ParsedInput.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"public class ParsedInput {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private CommandType commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" private Command command;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" private HashMap\u003cString, String\u003e namedArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" private List\u003cString\u003e positionalArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" public ParsedInput(CommandType commandType, HashMap\u003cString, String\u003e namedArguments, List\u003cString\u003e positionalArguments) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" this.command \u003d commandType.getCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" this.namedArguments \u003d namedArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" this.positionalArguments \u003d positionalArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public CommandType getCommandType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" return commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" public String getNamedArgument(String name) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" return namedArguments.get(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" public String getPositionalArgument(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" return positionalArguments.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" public int numberOfPositionalArguments() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" return positionalArguments.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" public int numberOfNamedArguments() {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" return namedArguments.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public boolean hasNamedArgument(String name) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" return namedArguments.containsKey(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" public void executeCommand(TaskList tasks, Ui ui, Storage storage) throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" command.execute(tasks, ui, storage, this);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof ParsedInput)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" ParsedInput other \u003d (ParsedInput) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" return commandType \u003d\u003d other.commandType \u0026\u0026 namedArguments.equals(other.namedArguments) \u0026\u0026 positionalArguments.equals(other.positionalArguments);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" return \"ParsedInput(\" + commandType + \", \" + namedArguments + \", \" + positionalArguments + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":68}},{"path":"src/main/java/cappy/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.util.StringTokenizer;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" public static final DateTimeFormatter DATE_TIME_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\u0027T\u0027HH:mm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" public static ParsedInput parse(String input) throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" StringTokenizer st \u003d new StringTokenizer(input, \" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" int numTokens \u003d st.countTokens();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" if (numTokens \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(CommandType.EMPTY, new HashMap\u003c\u003e(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" String commandString \u003d st.nextToken();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" CommandType command \u003d CommandType.fromString(commandString);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" if (command \u003d\u003d CommandType.INVALID || command \u003d\u003d CommandType.EMPTY) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(command, new HashMap\u003c\u003e(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArguments \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArguments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" while (st.hasMoreTokens()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" String token \u003d st.nextToken();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" if (token.startsWith(\"/\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" if (!st.hasMoreTokens()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Missing value for argument \" + token);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" namedArguments.put(token.substring(1), st.nextToken());","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" positionalArguments.add(token);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(command, namedArguments, positionalArguments);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public static LocalDateTime parseDateTime(String input) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" return LocalDateTime.parse(input, DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" public static String dateTimeToString(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" return dateTime.format(DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" public static Task parseCsvLine(String csvLine) throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" String[] data \u003d csvLine.split(\",\");","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" String type \u003d data[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" boolean done \u003d data[1].equals(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" String description \u003d data[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" if (type.equals(Todo.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" return new Todo(description, done);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" } else if (type.equals(Deadline.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" LocalDateTime due \u003d parseDateTime(data[3]);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" return new Deadline(description, done, due);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" } else if (type.equals(Event.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d parseDateTime(data[3]);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d parseDateTime(data[4]);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" return new Event(description, done, from, to);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Invalid Type\");","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" } catch (ArrayIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Invalid storage format!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":78}},{"path":"src/main/java/cappy/storage/CsvFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public interface CsvFormat {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" * Returns the CSV string representation of this task.","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" * @return the CSV string representation of this task.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" public String toCsv();","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Dethada":10}},{"path":"src/main/java/cappy/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.File;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.lang.AutoCloseable;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class Storage implements AutoCloseable {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" private final String path;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" private final File file;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private BufferedWriter writer;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" public Storage(String path) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" this.file \u003d new File(path);","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" this.file.getParentFile().mkdirs(); // create parent directories if not exists","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" this.file.createNewFile(); // create file if not exists","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" this.writer \u003d new BufferedWriter(new FileWriter(this.file, true));","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" public void empty() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" close();","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" try (FileWriter fileWriter \u003d new FileWriter(this.file, false)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" fileWriter.write(\"\");","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" this.writer \u003d new BufferedWriter(new FileWriter(this.file));","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public void writeLine(String line) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" writer.write(line);","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" writer.newLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" public String readAll() throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(this.file));","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" builder.append(line);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" builder.append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" reader.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" return builder.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" public void close() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" writer.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Dethada":55}},{"path":"src/main/java/cappy/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"D\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime due;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" public Deadline(String description, LocalDateTime due) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" this.due \u003d due;","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" public Deadline(String description, boolean isDone, LocalDateTime due) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" this.due \u003d due;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL + \",\" + (super.getDone() ? \"1\" : \"0\") + \",\" + super.getDescription() + \",\"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(this.due) + \",\";","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" return \"[\" + TYPE_SYMBOL + \"]\" + super.toString() + \" (by: \" + Parser.dateTimeToString(this.due) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Deadline)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" Deadline other \u003d (Deadline) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" return super.equals(other) \u0026\u0026 this.due.equals(other.due);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":40}},{"path":"src/main/java/cappy/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"E\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime begin;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" public Event(String description, LocalDateTime begin, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" this.begin \u003d begin;","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" public Event(String description, boolean isDone, LocalDateTime begin, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" this.begin \u003d begin;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL + \",\" + (super.getDone() ? \"1\" : \"0\") + \",\" + super.getDescription() + \",\" + Parser.dateTimeToString(this.begin) + \",\" + Parser.dateTimeToString(this.end);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" return \"[\" + TYPE_SYMBOL + \"]\" + super.toString() + \" (from: \" + Parser.dateTimeToString(this.begin) + \" to: \" + Parser.dateTimeToString(this.end) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Event)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" Event other \u003d (Event) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" return super.equals(other) \u0026\u0026 this.begin.equals(other.begin) \u0026\u0026 this.end.equals(other.end);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":42}},{"path":"src/main/java/cappy/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.storage.CsvFormat;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"public abstract class Task implements CsvFormat {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" private String description;","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" private boolean done;","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" this.done \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" return this.description;","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" public boolean getDone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" return this.done;","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" public void done() {","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" this.done \u003d true;","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" public void undone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" return \"[\" + (this.done ? \"X\" : \" \") + \"] \" + this.description;","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Task)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" Task other \u003d (Task) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" return this.description.equals(other.description) \u0026\u0026 this.done \u003d\u003d other.done;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":47}},{"path":"src/main/java/cappy/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.util.List;","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class TaskList {","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" private final List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private TaskList(Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" * Returns the task at the specified 1-based index.","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index of the task to return.","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" * @return the task at the specified 1-based index.","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" return this.tasks.get(index - 1);","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" * Removes the task at the specified 1-based index.","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index of the task to remove.","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" public void removeTask(int index) {","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" this.tasks.remove(index - 1);","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" public int size() {","lastModifiedDate":"2024-01-20"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" * Returns true if the specified index is valid.","lastModifiedDate":"2024-01-21"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index to check.","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" * @return true if the specified index is valid.","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" public boolean validIndex(int index) {","lastModifiedDate":"2024-01-20"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" return index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d this.tasks.size();","lastModifiedDate":"2024-01-20"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" public void save() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" this.storage.empty();","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" this.storage.writeLine(task.toCsv());","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" public static TaskList load(Storage storage) throws IOException, CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" TaskList taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" String[] csvLines \u003d storage.readAll().split(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" for (String line : csvLines) {","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" if (!line.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" taskList.addTask(Parser.parseCsvLine(line));","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" return taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-20"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-20"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" sb.append(i + 1).append(\". \").append(this.tasks.get(i).toString()).append(\"\\n\");","lastModifiedDate":"2024-01-21"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" return sb.toString();","lastModifiedDate":"2024-01-20"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":83}},{"path":"src/main/java/cappy/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"T\";","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL + \",\" + (super.getDone() ? \"1\" : \"0\") + \",\" + super.getDescription() + \",,\";","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" return \"[\" + TYPE_SYMBOL + \"]\" + super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Todo)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" Todo other \u003d (Todo) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" return super.equals(other);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":32}},{"path":"src/main/java/cappy/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.util.Logger;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" private static final String HORIZONTAL_LINE \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" \"____________________________________________________________\";","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" private static final String INDENT \u003d \" \";","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" public void showAddedTask(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" \"Got it. I\u0027ve added this task:\",","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" task.toString(),","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" public void showBanner() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" Logger.print(\" ██████╗ █████╗ ██████╗ ██████╗ ██╗ ██╗\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██╔════╝██╔══██╗██╔══██╗██╔══██╗╚██╗ ██╔╝\");","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██║ ███████║██████╔╝██████╔╝ ╚████╔╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██║ ██╔══██║██╔═══╝ ██╔═══╝ ╚██╔╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" Logger.print(\"╚██████╗██║ ██║██║ ██║ ██║ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" Logger.print(\" ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" public void show(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + \" \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" public void show(String[] messages) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" for (String msg : messages) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + \" \" + msg);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" Logger.error(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" public void showError(Exception exception) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" Logger.error(exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" public void showGreetings() {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {\"Hello! I\u0027m Cappy\", \"What can I do for you?\"};","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" public void showExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" show(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":60}},{"path":"src/main/java/cappy/util/Logger.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.util;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public class Logger {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" public enum LogLevel {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" DEBUG,","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" INFO,","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" WARN,","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" ERROR","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" private static LogLevel logLevel \u003d LogLevel.INFO;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public static void setLogLevel(LogLevel logLevel) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" Logger.logLevel \u003d logLevel;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" public static void print(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" public static void debug(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.DEBUG) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[DEBUG] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public static void info(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.INFO) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" System.out.println(\"[INFO] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public static void warn(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.WARN) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[WARN] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" public static void error(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.ERROR) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[ERROR] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":44}},{"path":"src/test/java/cappy/parser/ParsedInputTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.Map;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class ParsedInputTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void numberOfPositionalArguments() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" String[] args \u003d {\"arg1\", \"arg2\", \"arg3\"};","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" for (String arg : args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(arg);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" assertEquals(positionalArgs.size(), parsedInput.numberOfPositionalArguments());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" public void numberOfNamedArguments() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e iterNamedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option2\", \"value2\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option3\", \"value3\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" for (Map.Entry\u003cString, String\u003e entry : namedArgs.entrySet()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" iterNamedArgs.put(entry.getKey(), entry.getValue());","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, iterNamedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" assertEquals(iterNamedArgs.size(), parsedInput.numberOfNamedArguments());","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" public void hasNamedArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" assertEquals(true, parsedInput.hasNamedArgument(\"option1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" assertEquals(false, parsedInput.hasNamedArgument(\"option2\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" public void getNamedArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" assertEquals(\"value1\", parsedInput.getNamedArgument(\"option1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" assertEquals(null, parsedInput.getNamedArgument(\"option2\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" public void getPositionalArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"arg1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" assertEquals(\"arg1\", parsedInput.getPositionalArgument(0));","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" assertEquals(\"\", parsedInput.getPositionalArgument(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":76}},{"path":"src/test/java/cappy/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import static cappy.parser.Parser.DATE_TIME_FORMAT;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime DUE \u003d LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime FROM \u003d LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime TO \u003d LocalDateTime.parse(\"2023-01-30T14:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void parse_emptyString() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" public void parse_invalidCommand() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d new ParsedInput(CommandType.INVALID, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"nonExistentCommand\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" public void parse_missingValueForOption() {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d new ParsedInput(CommandType.DEADLINE, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"deadline description /by\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Missing value for argument /by\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"deadline description /by \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Missing value for argument /by\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" public void parse_valueForOption() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"by\",\"2023-01-29T12:00\");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"description\");","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d new ParsedInput(CommandType.DEADLINE, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"deadline description /by 2023-01-29T12:00\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" public void parse_positionalArg() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"description\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d new ParsedInput(CommandType.TODO, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"todo description\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_todo() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"T,0,description,,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" Todo todo \u003d new Todo(\"description\", false);","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" assertEquals(todo, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_deadline() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"D,0,description,2023-01-29T12:00,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" Deadline deadline \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" assertEquals(deadline, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_event() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"E,0,description,2023-01-29T12:00,2023-01-30T14:00\";","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" Event event \u003d new Event(\"description\", false, FROM, TO);","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" assertEquals(event, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_missingField() {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"T,0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" Task task \u003d new Todo(\"description\", false);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" csvLine \u003d \"D,0,description,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" task \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_invalidDateFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"D,0,description,invalid date,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" Deadline task \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":129}},{"path":"src/test/java/cappy/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static cappy.parser.Parser.DATE_TIME_FORMAT;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"public class EventTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" public void testStringConversion() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d LocalDateTime.parse(\"2023-01-30T14:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" Event event \u003d new Event(\"test\", from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" assertEquals(\"[E][ ] test (from: 2023-01-29T12:00 to: 2023-01-30T14:00)\", event.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"todo borrow book","lastModifiedDate":"2024-01-20"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"mark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"mark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"unmark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"delete 1","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"something that does not exist","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"mark","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"mark a","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"mark 9999999","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"unmark","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"unmark a","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"unmark 9999999","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"todo","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"deadline","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"deadline a","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"deadline a /by","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"event","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"event a","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"event a /from /to","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"event a /from 2pm /to","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"event a /from /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"event a /from /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"delete","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"delete a","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"delete 9999999","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"bye","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":38}},{"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":"Dethada"},"content":"# delete data from previous run","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"if [ -e \"./cappy.csv\" ]","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" rm cappy.csv","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"fi","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"if ! javac -cp ../src/main/java/cappy -Xlint:none -d ../bin ../src/main/java/cappy/**/*.java","lastModifiedDate":"2024-01-29"},{"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":"Dethada"},"content":"java -classpath ../bin Cappy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"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":{"Dethada":8,"-":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":"Dethada"},"content":" showStandardStreams \u003d true","lastModifiedDate":"2024-01-29"},{"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":"Dethada"},"content":" mainClass.set(\"cappy.Cappy\")","lastModifiedDate":"2024-01-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":"Dethada"},"content":" archiveBaseName \u003d \"Cappy\"","lastModifiedDate":"2024-01-29"},{"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":{"Dethada":3,"-":39}},{"path":"src/main/java/cappy/Cappy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"public class Cappy {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" private static TaskList TASKS;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private static final String STORAGE_PATH \u003d \"./cappy.csv\";","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" private static final Ui UI \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" UI.showBanner();","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" UI.showGreetings();","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" storage \u003d new Storage(STORAGE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" TASKS \u003d TaskList.load(storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" inputLoop();","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" storage.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" } catch (IOException | CappyException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" UI.showError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" } finally {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" Cappy.UI.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" private static void inputLoop() {","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" input \u003d UI.getInput();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d Parser.parse(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" parsedInput.executeCommand(TASKS, UI, storage);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" if (parsedInput.getCommandType() \u003d\u003d CommandType.BYE) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" } catch (IOException | CappyException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" UI.showError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Dethada":46,"-":3}},{"path":"src/main/java/cappy/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * Shows an exit message in the user interface.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" ui.showExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":27}},{"path":"src/main/java/cappy/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" * Abstract class representing a command in the Cappy application.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Command} class serves as the base class for all specific command implementations.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * It declares an abstract method {@code execute} that must be implemented by concrete subclasses.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * Each concrete command class encapsulates a specific operation that can be performed.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * Executes the command with the provided task list, user interface, storage, and parsed input.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":31}},{"path":"src/main/java/cappy/command/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" * Enumeration representing different command types in the Cappy application.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code CommandType} enum encapsulates various command types that can be performed","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" * in the Cappy application. Each enum value associates a command string with its corresponding","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" * concrete command implementation.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"public enum CommandType {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" LIST(\"list\", new ListCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" MARK(\"mark\", new MarkCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" UNMARK(\"unmark\", new UnmarkCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" TODO(\"todo\", new TodoCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" DEADLINE(\"deadline\", new DeadlineCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" EVENT(\"event\", new EventCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" DELETE(\"delete\", new DeleteCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" FIND(\"find\", new FindCommand()),","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" BYE(\"bye\", new ByeCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" EMPTY(\"\", new EmptyCommand()),","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" INVALID(\"\", new InvalidCommand());","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" private Command command;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" private String commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" private CommandType(String commandString, Command command) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" this.commandString \u003d commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" * Returns the string representation of this enum value.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" * @return The string representation of this enum value.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" public String getCommandString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" return this.commandString;","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" public Command getCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" return this.command;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" * Converts a string to a CommandType. INVALID will be the CommandType returned","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" * if there are no other matches.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" * @param commandString The string to be converted.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" * @return The CommandType of the given string.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" public static CommandType fromString(String commandString) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" for (CommandType command : CommandType.values()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" if (command.getCommandString().equals(commandString)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" return command;","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" return INVALID;","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":59}},{"path":"src/main/java/cappy/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * Adds a new Deadline task to the task list, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" } else if (!input.hasNamedArgument(\"by\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" throw new CappyException(","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" \"Please specify the due date of the deadline task using /by [Date Time].\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" String description \u003d String.join(\" \", input.getPositionalArguments());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" String dueString \u003d input.getNamedArgument(\"by\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" LocalDateTime due \u003d Parser.parseDateTime(dueString);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" Deadline task \u003d new Deadline(description, due);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please use the correct datetime format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":47}},{"path":"src/main/java/cappy/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * Deletes the task at the given index from the task list, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * The index is retrieved from the parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" Task task \u003d tasks.getTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" tasks.removeTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" \"Noted. I\u0027ve removed this task:\",","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" task.toString(),","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":49}},{"path":"src/main/java/cappy/command/EmptyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class EmptyCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * An empty command does nothing.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {}","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":25}},{"path":"src/main/java/cappy/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * Adds a new Event task to the task list, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" } else if (!input.hasNamedArgument(\"from\") || !input.hasNamedArgument(\"to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" throw new CappyException(","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" \"Please specify the duration of the event using /from [Date Time] /to [Date\"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" + \" Time].\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" String description \u003d String.join(\" \", input.getPositionalArguments());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" String fromString \u003d input.getNamedArgument(\"from\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" String toString \u003d input.getNamedArgument(\"to\");","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d Parser.parseDateTime(fromString);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d Parser.parseDateTime(toString);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" Event task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please use the correct datetime format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":50}},{"path":"src/main/java/cappy/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input) throws CappyException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a keyword.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" String keyword \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" TaskList results \u003d tasks.search(keyword);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" if (results.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" ui.show(\"No matches found :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d new String[results.size() + 1];","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" messages[0] \u003d \" Here are the matching tasks in your list:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" System.arraycopy(results.toString().split(\"\\n\"), 0, messages, 1, results.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Dethada":31}},{"path":"src/main/java/cappy/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * Shows the message for invalid command entered in the user interface.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" ui.show(\"Sorry I can\u0027t help with that :(\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":27}},{"path":"src/main/java/cappy/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * Shows the tasks currently in the task list through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d new String[tasks.size() + 1];","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" messages[0] \u003d \"Here are the tasks in your list:\";","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" System.arraycopy(tasks.toString().split(\"\\n\"), 0, messages, 1, tasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":30}},{"path":"src/main/java/cappy/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * Marks the task at the given index from the task list as completed, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * The index is retrieved from the parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" tasks.getTask(index).done();","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" \"Nice! I\u0027ve marked this task as done:\", tasks.getTask(index).toString()","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":45}},{"path":"src/main/java/cappy/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * Adds a new Todo task to the task list, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter the task description.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" String description \u003d String.join(\" \", input.getPositionalArguments());","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" Todo task \u003d new Todo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" ui.showAddedTask(task, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":35}},{"path":"src/main/java/cappy/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.ParsedInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * Marks the task at the given index from the task list as incomplete, and notify the user through the UI.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * The index is retrieved from the parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * @param tasks The task list that stores the tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @param ui The user interface for interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * @param storage The storage for reading and writing task data.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * @param input The parsed user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If there is an application-specific exception during task execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs while interacting with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ParsedInput input)","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" if (input.numberOfPositionalArguments() \u003c 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter an index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" String indexStr \u003d input.getPositionalArgument(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" int index \u003d Integer.parseInt(indexStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" if (!tasks.validIndex(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" tasks.getTask(index).undone();","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" \"OK, I\u0027ve marked this task as not done yet:\", tasks.getTask(index).toString()","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" ui.show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" tasks.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Please enter a valid index.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":45}},{"path":"src/main/java/cappy/error/CappyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.error;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" * Represents an exception specific to Cappy.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"public class CappyException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" public CappyException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":10}},{"path":"src/main/java/cappy/parser/ParsedInput.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.util.Map;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * Represents the parsed input from the user command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code ParsedInput} class encapsulates the parsed information from the user\u0027s input,","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * including the command type, named arguments, and positional arguments. It provides methods","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" * to retrieve and interact with the parsed information.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"public class ParsedInput {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" private CommandType commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" private Command command;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" private Map\u003cString, String\u003e namedArguments;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" private List\u003cString\u003e positionalArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public ParsedInput(","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" CommandType commandType,","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" Map\u003cString, String\u003e namedArguments,","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" List\u003cString\u003e positionalArguments) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" this.command \u003d commandType.getCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" this.namedArguments \u003d namedArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" this.positionalArguments \u003d positionalArguments;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" public CommandType getCommandType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" return commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" * Returns the corresponding value for the named argument. Returns null if the argument","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" * does not exist.","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" * @param name The name of the argument.","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" * @return The corresponding value of the argument.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" public String getNamedArgument(String name) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" return namedArguments.get(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" * Returns the value of the positional argument at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" * Throws {@code IndexOutOfBoundsException} if the specified index is","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" * not a valid index.","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" * @param index The index of the positional argument to retrieve.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" * @return The value of the positional argument at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" * @throws IndexOutOfBoundsException If the specified index is negative or","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" * is greater than or equal to the size","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" * of the positional arguments.","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" public String getPositionalArgument(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" return positionalArguments.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" public List\u003cString\u003e getPositionalArguments() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" return positionalArguments;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" public int numberOfPositionalArguments() {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" return positionalArguments.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" public int numberOfNamedArguments() {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" return namedArguments.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" * Returns true if the named argument exists.","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" * @param name The name of the argument.","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" public boolean hasNamedArgument(String name) {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" return namedArguments.containsKey(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" public void executeCommand(TaskList tasks, Ui ui, Storage storage)","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" throws CappyException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" command.execute(tasks, ui, storage, this);","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof ParsedInput)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" ParsedInput other \u003d (ParsedInput) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" return commandType \u003d\u003d other.commandType","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" \u0026\u0026 namedArguments.equals(other.namedArguments)","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" \u0026\u0026 positionalArguments.equals(other.positionalArguments);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" return \"ParsedInput(\"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" + commandType","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" + \", \"","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" + namedArguments","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" + \", \"","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" + positionalArguments","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":114}},{"path":"src/main/java/cappy/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import java.util.StringTokenizer;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * Handles parsing user input and converting data formats.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Parser} class provides static methods for parsing user input,","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * converting date-time strings to LocalDateTime objects, and parsing CSV lines","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * into corresponding task objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" * The DateTimeFormatter for parsing and formatting date-time strings.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public static final DateTimeFormatter DATE_TIME_FORMAT \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd\u0027T\u0027HH:mm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" * Parses a input String into a ParsedInput object.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" * @param input The String to be parsed.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" * @return The parsed input as a ParsedInput object.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If the input is not valid.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" public static ParsedInput parse(String input) throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" StringTokenizer st \u003d new StringTokenizer(input, \" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" int numTokens \u003d st.countTokens();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" if (numTokens \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(CommandType.EMPTY, new HashMap\u003c\u003e(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" String commandString \u003d st.nextToken();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" CommandType command \u003d CommandType.fromString(commandString);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" if (command \u003d\u003d CommandType.INVALID || command \u003d\u003d CommandType.EMPTY) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(command, new HashMap\u003c\u003e(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArguments \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArguments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" while (st.hasMoreTokens()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" String token \u003d st.nextToken();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" if (token.startsWith(\"/\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" if (!st.hasMoreTokens()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Missing value for argument \" + token);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" namedArguments.put(token.substring(1), st.nextToken());","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" positionalArguments.add(token);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" return new ParsedInput(command, namedArguments, positionalArguments);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" * Converts a String into a LocalDateTime object. The expected format is yyyy-MM-dd\u0027T\u0027HH:mm.","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" * For example, 2023-01-29T14:00.","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" * @param input The string to be converted to a LocalDateTime object.","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" * @return The resulting LocalDateTime object from the conversion.","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" * @throws DateTimeParseException If the String is not in the expected format.","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" public static LocalDateTime parseDateTime(String input) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" return LocalDateTime.parse(input, DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" * Converts a LocalDateTime object into a String. The String format is yyyy-MM-dd\u0027T\u0027HH:mm.","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" * For example, 2023-01-29T14:00.","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" * @param input The LocalDateTime object to be converted to a String.","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" * @return The resulting String from the conversion.","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" public static String dateTimeToString(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" return dateTime.format(DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" * Parses a csv line into a Task object.","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" * @param csvLine The csv line to be parsed.","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" * @return The Task object created from the data in the csv line.","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" * @throws CappyException If the csv line is not in the excpected format.","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" public static Task parseCsvLine(String csvLine) throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" String[] data \u003d csvLine.split(\",\");","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" String type \u003d data[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" boolean isDone \u003d data[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" String description \u003d data[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" if (type.equals(Todo.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" return new Todo(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" } else if (type.equals(Deadline.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" LocalDateTime due \u003d parseDateTime(data[3]);","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" return new Deadline(description, isDone, due);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" } else if (type.equals(Event.TYPE_SYMBOL)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d parseDateTime(data[3]);","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d parseDateTime(data[4]);","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" return new Event(description, isDone, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Invalid Type\");","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" } catch (ArrayIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" throw new CappyException(\"Invalid storage format!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":117}},{"path":"src/main/java/cappy/storage/CsvFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public interface CsvFormat {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" * Returns the CSV string representation of this object.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" public String toCsv();","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Dethada":8}},{"path":"src/main/java/cappy/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" * Manages storage operations for the task management system.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Storage} class provides functionality for creating, reading, and writing","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * to a specified file path. It supports operations such as emptying the content, writing","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * a line to the end of the storage, and reading all content from the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003e\u003cstrong\u003eFile Path:\u003c/strong\u003e The path to the file associated with the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"public class Storage implements AutoCloseable {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" private final String path;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" private final File file;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" private BufferedWriter writer;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" * Constructs a new Storage object with the specified file path.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" * The file and its parent directories will be created if they do not exist.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" * @param path The file path for the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs during file or directory creation.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" public Storage(String path) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" this.file \u003d new File(path);","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" this.writer \u003d new BufferedWriter(new FileWriter(file, true));","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" * Emptys the content in the storage. The underlying file will be overwritten to","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" * contain nothing.","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" public void empty() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" close();","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" try (FileWriter fileWriter \u003d new FileWriter(file, false)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" fileWriter.write(\"\");","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" * Writes a line to the end of the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" public void writeLine(String line) throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" writer.write(line);","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" writer.newLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" * Reads all the content from the storage (underlying file) and return it as a string.","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" * @return The string that contains all the content from the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" public String readAll() throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" builder.append(line);","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" builder.append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" reader.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" return builder.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" public void close() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" writer.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Dethada":86}},{"path":"src/main/java/cappy/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" * The type symbol for the Deadline Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"D\";","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * The due date time for the Deadline Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime due;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" public Deadline(String description, LocalDateTime due) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" this.due \u003d due;","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" public Deadline(String description, boolean isDone, LocalDateTime due) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" this.due \u003d due;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" + (super.getDone() ? \"1\" : \"0\")","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" + super.getDescription()","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(due)","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" + \",\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" return \"[\"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" + TYPE_SYMBOL","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" + \"]\"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" + super.toString()","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" + \" (by: \"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(due)","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Deadline)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" Deadline other \u003d (Deadline) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" return super.equals(other) \u0026\u0026 due.equals(other.due);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":58}},{"path":"src/main/java/cappy/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" * The type symbol for the Event Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"E\";","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * The starting date time for the Event Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime begin;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * The ending date time for the Event Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private final LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" public Event(String description, LocalDateTime begin, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" this.begin \u003d begin;","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public Event(String description, boolean isDone, LocalDateTime begin, LocalDateTime end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" this.begin \u003d begin;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" + (super.getDone() ? \"1\" : \"0\")","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" + super.getDescription()","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(begin)","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(end);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" return \"[\"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" + TYPE_SYMBOL","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" + \"]\"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" + super.toString()","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" + \" (from: \"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(begin)","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" + \" to: \"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" + Parser.dateTimeToString(end)","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Event)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" Event other \u003d (Event) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" return super.equals(other) \u0026\u0026 begin.equals(other.begin) \u0026\u0026 end.equals(other.end);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":67}},{"path":"src/main/java/cappy/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.storage.CsvFormat;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" * Abstract base class representing a generic task in the task management system.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Task} class provides a common structure for various task types","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" * by defining properties such as description and completion status. It also implements","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" * the {@link CsvFormat} interface for conversion to CSV (Comma-Separated Values) format.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003e\u003cstrong\u003eDescription:\u003c/strong\u003e The description of the task, specifying its details or content.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * \u003cbr\u003e\u003cstrong\u003eCompletion Status:\u003c/strong\u003e The status of the task, indicating whether it is done or not.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"public abstract class Task implements CsvFormat {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * The description for the Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private String description;","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" * The status of the Task, true if it is done.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-20"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" return description;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" * Returns the status of the Task, true if it is done.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" public boolean getDone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" return isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" * Sets the status of the task to be done (complete).","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" public void done() {","lastModifiedDate":"2024-01-20"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" * Sets the status of the task to be undone (incomplete).","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" public void undone() {","lastModifiedDate":"2024-01-20"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" return \"[\" + (isDone ? \"X\" : \" \") + \"] \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Task)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" Task other \u003d (Task) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" return description.equals(other.description) \u0026\u0026 isDone \u003d\u003d other.isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":72}},{"path":"src/main/java/cappy/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" * Represents a collection of tasks in the task management system.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code TaskList} class manages a list of tasks and provides operations such as adding,","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * retrieving, removing tasks, and saving/loading tasks to/from storage. Each task is associated","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * with a 1-based index within the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"public class TaskList {","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private final List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" private TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" storage \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" private TaskList(Storage storage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" * Adds a task to this task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-20"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" * Returns the task at the specified 1-based index.","lastModifiedDate":"2024-01-20"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-20"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index of the task to return.","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" * @return the task at the specified 1-based index.","lastModifiedDate":"2024-01-20"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-20"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" return tasks.get(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" * Removes the task at the specified 1-based index.","lastModifiedDate":"2024-01-21"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index of the task to remove.","lastModifiedDate":"2024-01-21"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" public void removeTask(int index) {","lastModifiedDate":"2024-01-21"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" /** Returns the number of tasks in this task list. */","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" public int size() {","lastModifiedDate":"2024-01-20"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" * Returns true if the specified index is valid.","lastModifiedDate":"2024-01-21"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" * @param index 1-based index to check.","lastModifiedDate":"2024-01-21"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" * @return true if the specified index is valid.","lastModifiedDate":"2024-01-21"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" public boolean validIndex(int index) {","lastModifiedDate":"2024-01-20"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" return index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" * Saves the current state of the task list to storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" * @throws IOException If any I/O Error is encountered when saving.","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" public void save() throws IOException {","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" if (storage !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" storage.empty();","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" storage.writeLine(task.toCsv());","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" * Creates a new TaskList using the data stored in the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" * @param storage The storage to load data from.","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" * @return The newly created TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" public static TaskList load(Storage storage) throws IOException, CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" TaskList taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" String[] csvLines \u003d storage.readAll().split(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" for (String line : csvLines) {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" if (!line.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" taskList.addTask(Parser.parseCsvLine(line));","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" return taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" * Returns a new TaskList containing all tasks that match the specified keyword.","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" * @param keyword The keyword to search for.","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" * @return A new TaskList containing all tasks that match the specified keyword.","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" public TaskList search(String keyword) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" if (task.getDescription().contains(keyword)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" return taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-20"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" sb.append(i + 1).append(\". \").append(tasks.get(i).toString()).append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" return sb.toString();","lastModifiedDate":"2024-01-20"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":130}},{"path":"src/main/java/cappy/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" * The type symbol for the Todo Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" public static final String TYPE_SYMBOL \u003d \"T\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" return TYPE_SYMBOL","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" + (super.getDone() ? \"1\" : \"0\")","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" + \",\"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" + super.getDescription()","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" + \",,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" return \"[\" + TYPE_SYMBOL + \"]\" + super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" if (!(obj instanceof Todo)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" Todo other \u003d (Todo) obj;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" return super.equals(other);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":40}},{"path":"src/main/java/cappy/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import cappy.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import cappy.util.Logger;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" * User Interface (Ui) class for interacting with the user and displaying messages.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Ui} class provides methods for displaying various messages to the user, including","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * newly added tasks, banners, error messages, greetings, and farewell messages. It utilizes the","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * {@link Logger} class for outputting messages to the console with a consistent format.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"public class Ui implements AutoCloseable {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" private static final String HORIZONTAL_LINE \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" \"____________________________________________________________\";","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private static final String INDENT \u003d \" \";","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" private final Scanner SCANNER \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * Reads a line from Standard inupt and return that.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" * @return The line read from stdin.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" public String getInput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" return SCANNER.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" * Shows the newly added task and the current number of tasks in the task list to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" * @param task The newly added task.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" * @param tasks The current TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" public void showAddedTask(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" \"Got it. I\u0027ve added this task:\",","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" task.toString(),","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" /** Shows the Cappy banner to the user. */","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public void showBanner() {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" Logger.print(\" ██████╗ █████╗ ██████╗ ██████╗ ██╗ ██╗\");","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██╔════╝██╔══██╗██╔══██╗██╔══██╗╚██╗ ██╔╝\");","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██║ ███████║██████╔╝██████╔╝ ╚████╔╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" Logger.print(\"██║ ██╔══██║██╔═══╝ ██╔═══╝ ╚██╔╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" Logger.print(\"╚██████╗██║ ██║██║ ██║ ██║ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" Logger.print(\" ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ \");","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" * Shows a message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" * @param message The message to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" * @since 1.0","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" public void show(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + \" \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" * Shows the given messages to the user. Each message will be on a newline.","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" * @param message The String array of messages to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" public void show(String[] messages) {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" for (String msg : messages) {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + \" \" + msg);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" Logger.print(INDENT + HORIZONTAL_LINE + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" * Shows an error message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" Logger.error(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" * Shows an exception to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" * @param exception The exception to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" public void showError(Exception exception) {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" Logger.error(exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" /** Shows a greeting message to the user. */","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" public void showGreetings() {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" String[] messages \u003d {\"Hello! I\u0027m Cappy\", \"What can I do for you?\"};","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" show(messages);","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" /** Shows a farewell message to the user. */","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" public void showExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" show(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" public void close() {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" SCANNER.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":114}},{"path":"src/main/java/cappy/util/Logger.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.util;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":" * Utility class for logging messages at different log levels.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe {@code Logger} class provides methods to log messages at various log levels,","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":" * allowing developers to control the granularity of logging based on the severity of messages.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":" * The supported log levels include DEBUG, INFO, WARN, and ERROR.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003e\u003cstrong\u003eLog Levels:\u003c/strong\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" * \u003cli\u003e{@code DEBUG}: Fine-grained debugging information. Typically used for diagnosing issues during development.\u003c/li\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * \u003cli\u003e{@code INFO}: General information about the application\u0027s state or significant events. Used for informative purposes.\u003c/li\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * \u003cli\u003e{@code WARN}: Warning messages indicating potential issues that may require attention but do not disrupt normal operation.\u003c/li\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * \u003cli\u003e{@code ERROR}: Critical error messages indicating a failure or issue that requires immediate attention.\u003c/li\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eThe log level can be dynamically set using the {@link #setLogLevel(LogLevel)} method.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"public class Logger {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * Enumeration representing different log levels.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public enum LogLevel {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" * Fine-grained debugging information.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" * Typically used for diagnosing issues during development.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" DEBUG,","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" * General information about the application\u0027s state or significant events.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" * Used for informative purposes.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" INFO,","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" * Warning messages indicating potential issues that may require attention","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" * but do not disrupt normal operation.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" WARN,","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" * Critical error messages indicating a failure or issue that requires immediate attention.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" ERROR","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" private static LogLevel logLevel \u003d LogLevel.INFO;","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" * Sets the log level for the Logger.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" * \u003cp\u003eMessages below the specified log level will not be printed.","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" * @param logLevel The desired log level.","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" public static void setLogLevel(LogLevel logLevel) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" Logger.logLevel \u003d logLevel;","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" * Prints a general message to the standard output.","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" * @param message The message to be printed.","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" public static void print(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" * Logs a debug message to the error stream if the log level allows it.","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" * @param message The debug message to be logged.","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" public static void debug(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.DEBUG) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[DEBUG] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" * Logs an info message to the standard output if the log level allows it.","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" * @param message The info message to be logged.","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" public static void info(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.INFO) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" System.out.println(\"[INFO] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" * Logs a warning message to the error stream if the log level allows it.","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" * @param message The warning message to be logged.","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" public static void warn(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" if (Logger.logLevel.compareTo(LogLevel.WARN) \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[WARN] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" * Logs an error message to the error stream.","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" * @param message The error message to be logged.","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" public static void error(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[ERROR] \" + message);","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" * Logs an exception to the error stream.","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" * @param message The exception to be logged.","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" public static void error(Exception exception) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" System.err.println(\"[ERROR] \" + exception.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Dethada":121}},{"path":"src/test/java/cappy/parser/ParsedInputTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.util.Map;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"public class ParsedInputTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" public void numberOfPositionalArguments() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" String[] args \u003d {\"arg1\", \"arg2\", \"arg3\"};","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" for (String arg : args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(arg);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" assertEquals(positionalArgs.size(), parsedInput.numberOfPositionalArguments());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public void numberOfNamedArguments() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e iterNamedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option2\", \"value2\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option3\", \"value3\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" for (Map.Entry\u003cString, String\u003e entry : namedArgs.entrySet()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" iterNamedArgs.put(entry.getKey(), entry.getValue());","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.EMPTY, iterNamedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" assertEquals(iterNamedArgs.size(), parsedInput.numberOfNamedArguments());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" public void hasNamedArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" assertEquals(true, parsedInput.hasNamedArgument(\"option1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" assertEquals(false, parsedInput.hasNamedArgument(\"option2\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" public void getNamedArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"option1\", \"value1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" assertEquals(\"value1\", parsedInput.getNamedArgument(\"option1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" assertEquals(null, parsedInput.getNamedArgument(\"option2\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" public void getPositionalArgument() {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"arg1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" ParsedInput parsedInput \u003d new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" assertEquals(\"arg1\", parsedInput.getPositionalArgument(0));","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" assertEquals(\"\", parsedInput.getPositionalArgument(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":78}},{"path":"src/test/java/cappy/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static cappy.parser.Parser.DATE_TIME_FORMAT;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import cappy.command.CommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import cappy.error.CappyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import cappy.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import cappy.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import cappy.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import cappy.task.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime DUE \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime FROM \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime TO \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" LocalDateTime.parse(\"2023-01-30T14:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" public void parse_emptyString() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.EMPTY, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" public void parse_invalidCommand() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.INVALID, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"nonExistentCommand\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" public void parse_missingValueForOption() {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.DEADLINE, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"deadline description /by\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Missing value for argument /by\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"deadline description /by \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Missing value for argument /by\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" public void parse_valueForOption() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" namedArgs.put(\"by\", \"2023-01-29T12:00\");","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"description\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.DEADLINE, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" expectedParsedInput, Parser.parse(\"deadline description /by 2023-01-29T12:00\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" public void parse_positionalArg() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" HashMap\u003cString, String\u003e namedArgs \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" ArrayList\u003cString\u003e positionalArgs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" positionalArgs.add(\"description\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" ParsedInput expectedParsedInput \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" new ParsedInput(CommandType.TODO, namedArgs, positionalArgs);","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" assertEquals(expectedParsedInput, Parser.parse(\"todo description\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_todo() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"T,0,description,,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" Todo todo \u003d new Todo(\"description\", false);","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" assertEquals(todo, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_deadline() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"D,0,description,2023-01-29T12:00,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" Deadline deadline \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" assertEquals(deadline, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_event() throws CappyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"E,0,description,2023-01-29T12:00,2023-01-30T14:00\";","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" Event event \u003d new Event(\"description\", false, FROM, TO);","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" assertEquals(event, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_missingField() {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"T,0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" Task task \u003d new Todo(\"description\", false);","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" csvLine \u003d \"D,0,description,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" task \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"Dethada"},"content":" public void parseCsvLine_invalidDateFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"Dethada"},"content":" String csvLine \u003d \"D,0,description,invalid date,\";","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"Dethada"},"content":" Deadline task \u003d new Deadline(\"description\", false, DUE);","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"Dethada"},"content":" assertEquals(task, Parser.parseCsvLine(csvLine));","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"Dethada"},"content":" fail();","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"Dethada"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"Dethada"},"content":" assertEquals(\"Invalid storage format!\", e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":141}},{"path":"src/test/java/cappy/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package cappy.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static cappy.parser.Parser.DATE_TIME_FORMAT;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class EventTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void testStringConversion() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" LocalDateTime from \u003d LocalDateTime.parse(\"2023-01-29T12:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" LocalDateTime to \u003d LocalDateTime.parse(\"2023-01-30T14:00\", DATE_TIME_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" Event event \u003d new Event(\"test\", from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" assertEquals(\"[E][ ] test (from: 2023-01-29T12:00 to: 2023-01-30T14:00)\", event.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Dethada":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"todo borrow book","lastModifiedDate":"2024-01-20"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"mark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"mark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"unmark 1","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"delete 1","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"something that does not exist","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"mark","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"mark a","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"mark 9999999","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"unmark","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"unmark a","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"unmark 9999999","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"todo","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"deadline","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"deadline a","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"deadline a /by","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"event","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"event a","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"event a /from /to","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"event a /from 2pm /to","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"event a /from /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"event a /from /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"delete","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"delete a","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"delete 9999999","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"bye","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"Dethada":38}},{"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":"Dethada"},"content":"# delete data from previous run","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"if [ -e \"./cappy.csv\" ]","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" rm cappy.csv","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"fi","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"if ! javac -cp ../src/main/java/cappy -Xlint:none -d ../bin ../src/main/java/cappy/**/*.java","lastModifiedDate":"2024-01-29"},{"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":"Dethada"},"content":"java -classpath ../bin Cappy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"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":{"Dethada":8,"-":36}}] diff --git a/Dethada_ip_master/commits.json b/Dethada_ip_master/commits.json index 201572ec..38b4d302 100644 --- a/Dethada_ip_master/commits.json +++ b/Dethada_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Dethada":[{"date":"2024-01-20","commitResults":[{"hash":"296bf48387ea18686a0284b8b317cd416cf99779","isMergeCommit":false,"messageTitle":"Renamed chatbot and finish initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"259dff0d8d8b0c2858c3e3e6b5178708b1015403","isMergeCommit":false,"messageTitle":"Echo user input - created a print function to handle output formatting","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"c68bf75be6e0b8912e485307dfd7d7b60bc5f37d","isMergeCommit":false,"messageTitle":"Edited print method to take String[] instead","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"b4b3e29f82cfa212e62c5e759a0be76ed298e96a","isMergeCommit":false,"messageTitle":"Fix chatbot name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"94fb560eaece5ffbff07c7e3867a5999ee4dd5a9","isMergeCommit":false,"messageTitle":"Able to add and list tasks now","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"aea886e68066322e3c5dec29ec2a29946bc4bc35","isMergeCommit":false,"messageTitle":"Mark tasks as done - Switch from stroing tasks in ArrayList\u003cString\u003e to Task and TaskList - Added ability to mark tasks as done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":13}}},{"hash":"f414732bb03550d7f5efebda3708b92cd6b26171","isMergeCommit":false,"messageTitle":"Add ability to unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"23bc8a35484251e6056b441510a8fe73ffd5efba","isMergeCommit":false,"messageTitle":"Add indentations to output","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"c7e7860b46992f725391c3546c88431870747fcf","isMergeCommit":false,"messageTitle":"Added new task types: Todos, Events and Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":5}}},{"hash":"4f01a598f6f731e15312259a3a7837d44a3c84a9","isMergeCommit":false,"messageTitle":"Convert bye and list commands to static fields too","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"61632b25a2417792938c9164e60206104742c648","isMergeCommit":false,"messageTitle":"Added print(String msg) and removed Duke.* prefix","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":28}}},{"hash":"4f16994095b30a8a3a7d37df54b2ef6a23a4a341","isMergeCommit":false,"messageTitle":"use the stored HORIZONTAL_LINE and INDENT","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"2217adf3a74b39df272e5d5a68e2a8cca2404294","isMergeCommit":false,"messageTitle":"Switch to use print(String msg)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"000037c4d55f649a6ea6ab4746e8c90ccd9d94a3","isMergeCommit":false,"messageTitle":"Fix compilation errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"c927d9b249f5e272b8fd9a7f3c405270e2cb0124","isMergeCommit":false,"messageTitle":"Add \"Here are the tasks in your list:\" to output of list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"6732b84eac1158d79c59e42f6472f485debc0a48","isMergeCommit":false,"messageTitle":"Added input and expected output for testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0}}},{"hash":"a95264ae9560560fdae8ae4cb8dcd73647893ebc","isMergeCommit":false,"messageTitle":"command prefix -\u003e command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}}]},{"date":"2024-01-21","commitResults":[{"hash":"e554dbcc91b98b0c00da2a0e0368be313d78aa38","isMergeCommit":false,"messageTitle":"Handle errors for mark/unmark commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":19}}},{"hash":"4c6dc32225eb0be110e74cf875d5b73cd0f1c27f","isMergeCommit":false,"messageTitle":"Use custom exception class DukeException","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":75}}},{"hash":"1dbc28371aeac60b5412006bae583ff40090ff62","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"94d45ee6365506bbfc0d19eb0d45a69c3c3822ec","isMergeCommit":false,"messageTitle":"Reformat","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":15}}},{"hash":"525bc1fad5a188c91e951e826afe2bd6e2cea985","isMergeCommit":false,"messageTitle":"Handle errors for todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"9eecdfa32d1e78dc69d0649b98eed0f0e9e89ef8","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"6bc32ba726933fff407030b1069ea7a017370b52","isMergeCommit":false,"messageTitle":"Handle errors for deadline and event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"523aa37a0d8bd1ae81c3c3b78ec0c4fa10f48d51","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"a3dee402a75b77f4cb78f8baa86a1e74b8db2843","isMergeCommit":false,"messageTitle":"Added delete command","messageBody":"","tags":["Level-6","A-Inheritance","A-Collections","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"7a2258d2684c53af96b53a6c243ca210eb438abe","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"e6dc1722fc941207bd945196a39bd754ccf2f420","isMergeCommit":false,"messageTitle":"Save tasks to disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":10}}}]},{"date":"2024-01-27","commitResults":[{"hash":"e588bb0a570aed2f987530eff5587490ef5fc0bf","isMergeCommit":false,"messageTitle":"New feature: Save to and load task list from disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":30}}},{"hash":"67f96a2644c10c6aefaa1d18664f9a2a8ccbffd4","isMergeCommit":false,"messageTitle":"Updated test script to remove generated data","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":7,"deletions":1}}},{"hash":"76875c8fa3aed53895d84ac7b8102a02757a83f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"69ac60ab66e50d1c7e4a0579e9e0f21a74c73f4f","isMergeCommit":false,"messageTitle":"Parse datetime for datetime inputs","messageBody":"Datetime inputs was previously stored as a String.\n","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":18}}},{"hash":"d5fdc2054558a53a8f8a95fb6cc05f169e7f4f66","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"25d054e756324fb78ad138b848721b611f11c907","isMergeCommit":false,"messageTitle":"Split into more classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":457,"deletions":231}}},{"hash":"614005a7e0a2b7f8bb0a70e752f58d2b7a892ba6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP","A-Enums"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"0590bd3cdcc94a29dab3d280cf69047d20542e72","isMergeCommit":false,"messageTitle":"Organize into Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":236,"deletions":81}}},{"hash":"8b34f32a8cd871b9281595899d2b11c309af61a2","isMergeCommit":false,"messageTitle":"Update test script to handle new dir structure","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":2,"deletions":2}}},{"hash":"396fedc591d38a59e3dde98bf535b63bcf3daa1f","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"1af9abb6966bd2470bc53cf70ee262d38a9c90d1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"557382addf738360dc3131b1911c017e4447a7dc","isMergeCommit":false,"messageTitle":"Update class path","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"28ceb1ff08aeff376d102b2efa18dc992dc34fcd","isMergeCommit":false,"messageTitle":"Add a dummy junit test class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"b018c4fc5cf3805899d8b1a9da8ced05b2748e44","isMergeCommit":false,"messageTitle":"Add junit tests","messageBody":"- Also update gitignore to ignore gradle generated files\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":263,"deletions":9}}},{"hash":"c44ea68b0c3538481ab35525f315adfd37535290","isMergeCommit":true,"messageTitle":"Merge branch \u0027junit\u0027","messageBody":"","tags":["A-Junit"],"fileTypesAndContributionMap":{}},{"hash":"b567dc323c05958dd9da86aa378ff718d54d86c5","isMergeCommit":false,"messageTitle":"Update Jar filename","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Dethada":{"java":1170,"md":0,"fxml":0,"sh":8,"bat":0,"gradle":3,"txt":38}},"authorContributionVariance":{"Dethada":69365.97},"authorDisplayNameMap":{"Dethada":"DAVI..YUAN"}} +{"authorDailyContributionsMap":{"Dethada":[{"date":"2024-01-20","commitResults":[{"hash":"296bf48387ea18686a0284b8b317cd416cf99779","isMergeCommit":false,"messageTitle":"Renamed chatbot and finish initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"259dff0d8d8b0c2858c3e3e6b5178708b1015403","isMergeCommit":false,"messageTitle":"Echo user input - created a print function to handle output formatting","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"c68bf75be6e0b8912e485307dfd7d7b60bc5f37d","isMergeCommit":false,"messageTitle":"Edited print method to take String[] instead","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"b4b3e29f82cfa212e62c5e759a0be76ed298e96a","isMergeCommit":false,"messageTitle":"Fix chatbot name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"94fb560eaece5ffbff07c7e3867a5999ee4dd5a9","isMergeCommit":false,"messageTitle":"Able to add and list tasks now","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"aea886e68066322e3c5dec29ec2a29946bc4bc35","isMergeCommit":false,"messageTitle":"Mark tasks as done - Switch from stroing tasks in ArrayList\u003cString\u003e to Task and TaskList - Added ability to mark tasks as done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":13}}},{"hash":"f414732bb03550d7f5efebda3708b92cd6b26171","isMergeCommit":false,"messageTitle":"Add ability to unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"23bc8a35484251e6056b441510a8fe73ffd5efba","isMergeCommit":false,"messageTitle":"Add indentations to output","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"c7e7860b46992f725391c3546c88431870747fcf","isMergeCommit":false,"messageTitle":"Added new task types: Todos, Events and Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":5}}},{"hash":"4f01a598f6f731e15312259a3a7837d44a3c84a9","isMergeCommit":false,"messageTitle":"Convert bye and list commands to static fields too","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"61632b25a2417792938c9164e60206104742c648","isMergeCommit":false,"messageTitle":"Added print(String msg) and removed Duke.* prefix","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":28}}},{"hash":"4f16994095b30a8a3a7d37df54b2ef6a23a4a341","isMergeCommit":false,"messageTitle":"use the stored HORIZONTAL_LINE and INDENT","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"2217adf3a74b39df272e5d5a68e2a8cca2404294","isMergeCommit":false,"messageTitle":"Switch to use print(String msg)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"000037c4d55f649a6ea6ab4746e8c90ccd9d94a3","isMergeCommit":false,"messageTitle":"Fix compilation errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"c927d9b249f5e272b8fd9a7f3c405270e2cb0124","isMergeCommit":false,"messageTitle":"Add \"Here are the tasks in your list:\" to output of list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"6732b84eac1158d79c59e42f6472f485debc0a48","isMergeCommit":false,"messageTitle":"Added input and expected output for testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0}}},{"hash":"a95264ae9560560fdae8ae4cb8dcd73647893ebc","isMergeCommit":false,"messageTitle":"command prefix -\u003e command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}}]},{"date":"2024-01-21","commitResults":[{"hash":"e554dbcc91b98b0c00da2a0e0368be313d78aa38","isMergeCommit":false,"messageTitle":"Handle errors for mark/unmark commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":19}}},{"hash":"4c6dc32225eb0be110e74cf875d5b73cd0f1c27f","isMergeCommit":false,"messageTitle":"Use custom exception class DukeException","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":75}}},{"hash":"1dbc28371aeac60b5412006bae583ff40090ff62","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"94d45ee6365506bbfc0d19eb0d45a69c3c3822ec","isMergeCommit":false,"messageTitle":"Reformat","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":15}}},{"hash":"525bc1fad5a188c91e951e826afe2bd6e2cea985","isMergeCommit":false,"messageTitle":"Handle errors for todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"9eecdfa32d1e78dc69d0649b98eed0f0e9e89ef8","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"6bc32ba726933fff407030b1069ea7a017370b52","isMergeCommit":false,"messageTitle":"Handle errors for deadline and event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"523aa37a0d8bd1ae81c3c3b78ec0c4fa10f48d51","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"a3dee402a75b77f4cb78f8baa86a1e74b8db2843","isMergeCommit":false,"messageTitle":"Added delete command","messageBody":"","tags":["Level-6","A-Inheritance","A-Collections","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"7a2258d2684c53af96b53a6c243ca210eb438abe","isMergeCommit":false,"messageTitle":"Updated test files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"e6dc1722fc941207bd945196a39bd754ccf2f420","isMergeCommit":false,"messageTitle":"Save tasks to disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":10}}}]},{"date":"2024-01-27","commitResults":[{"hash":"e588bb0a570aed2f987530eff5587490ef5fc0bf","isMergeCommit":false,"messageTitle":"New feature: Save to and load task list from disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":30}}},{"hash":"67f96a2644c10c6aefaa1d18664f9a2a8ccbffd4","isMergeCommit":false,"messageTitle":"Updated test script to remove generated data","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":7,"deletions":1}}},{"hash":"76875c8fa3aed53895d84ac7b8102a02757a83f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"69ac60ab66e50d1c7e4a0579e9e0f21a74c73f4f","isMergeCommit":false,"messageTitle":"Parse datetime for datetime inputs","messageBody":"Datetime inputs was previously stored as a String.\n","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":18}}},{"hash":"d5fdc2054558a53a8f8a95fb6cc05f169e7f4f66","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"25d054e756324fb78ad138b848721b611f11c907","isMergeCommit":false,"messageTitle":"Split into more classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":457,"deletions":231}}},{"hash":"614005a7e0a2b7f8bb0a70e752f58d2b7a892ba6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP","A-Enums"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"0590bd3cdcc94a29dab3d280cf69047d20542e72","isMergeCommit":false,"messageTitle":"Organize into Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":236,"deletions":81}}},{"hash":"8b34f32a8cd871b9281595899d2b11c309af61a2","isMergeCommit":false,"messageTitle":"Update test script to handle new dir structure","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":2,"deletions":2}}},{"hash":"396fedc591d38a59e3dde98bf535b63bcf3daa1f","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"1af9abb6966bd2470bc53cf70ee262d38a9c90d1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"557382addf738360dc3131b1911c017e4447a7dc","isMergeCommit":false,"messageTitle":"Update class path","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"28ceb1ff08aeff376d102b2efa18dc992dc34fcd","isMergeCommit":false,"messageTitle":"Add a dummy junit test class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"b018c4fc5cf3805899d8b1a9da8ced05b2748e44","isMergeCommit":false,"messageTitle":"Add junit tests","messageBody":"- Also update gitignore to ignore gradle generated files\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":263,"deletions":9}}},{"hash":"c44ea68b0c3538481ab35525f315adfd37535290","isMergeCommit":true,"messageTitle":"Merge branch \u0027junit\u0027","messageBody":"","tags":["A-Junit"],"fileTypesAndContributionMap":{}},{"hash":"b567dc323c05958dd9da86aa378ff718d54d86c5","isMergeCommit":false,"messageTitle":"Update Jar filename","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"354d9f5e4f871af06417f4c545d26d3faf0a4e05","isMergeCommit":false,"messageTitle":"Auto format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":229,"deletions":166}}},{"hash":"44911421adcdefd484c1418d694ba73459e9b308","isMergeCommit":false,"messageTitle":"Avoid unnecessary use of this with fields","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":33}}}]},{"date":"2024-01-30","commitResults":[{"hash":"e7e2272556b25c24fac484a32e38da0f150dadb9","isMergeCommit":false,"messageTitle":"Add javadocs for main source code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":458,"deletions":26}}},{"hash":"ed5981305c61d51a1b0ed284994842fb6e87a44f","isMergeCommit":false,"messageTitle":"Add find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":3}}},{"hash":"f7e7d0aa1aa1bf752c3e22aa0ceee9efad869d8f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Javadoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"91517bb789ff34404294d1d94147d914a921c05b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"996acd5cbb73d2e85a2fd60ea11c55de3e46ad6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"0a42ff511f0d3396d2053df29439ac06e4df7c91","isMergeCommit":false,"messageTitle":"Rename boolean variables","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}},{"hash":"3dd81c4de66df4163c28810433c3ad4081d21835","isMergeCommit":false,"messageTitle":"Allow multi word descriptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"86534bb6a2d02ba24054ed27b03ef1e95b38e542","isMergeCommit":false,"messageTitle":"Change HashMap to Map","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"d5f12a66216a353b68678fa32f84df4001cd1625","isMergeCommit":false,"messageTitle":"Add javadoc for TaskList::search","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"Dethada":{"java":1722,"md":0,"fxml":0,"sh":8,"bat":0,"gradle":3,"txt":38}},"authorContributionVariance":{"Dethada":118289.74},"authorDisplayNameMap":{"Dethada":"DAVI..YUAN"}} diff --git a/DingBao-sys_ip_master/authorship.json b/DingBao-sys_ip_master/authorship.json index b73de684..db951a99 100644 --- a/DingBao-sys_ip_master/authorship.json +++ b/DingBao-sys_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" String deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public Deadline(String descr, String deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super(descr);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.deadlineDate \u003d deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[D]%s(by: %s)\", super.toString(), this.deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":12}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" private static final String hRULER \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" private static boolean isNumeric(String s) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" if (s \u003d\u003d null) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" Integer.parseInt(s);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" private static void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":" ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":" int currentIdx \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"DingBao-sys"},"content":" String echoInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"DingBao-sys"},"content":" Task newTask;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"DingBao-sys"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Here are the tasks in your list:\\n\", hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 0; i \u003c currentIdx; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\" %d.%s\\n\", i + 1, storage.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"DingBao-sys"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.substring(0, 4).equals(\"mark\")","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"DingBao-sys"},"content":" \u0026\u0026 isNumeric(echoInput.substring(5))) {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx \u003d Integer.parseInt(echoInput.substring(5));","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"DingBao-sys"},"content":" storage.get(taskIdx - 1).markDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"DingBao-sys"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"DingBao-sys"},"content":" else if (echoInput.substring(0, 4).equals(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new ToDo(echoInput.substring(5));","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"DingBao-sys"},"content":" else if (echoInput.substring(0, 5).equals(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.length() \u003d\u003d 5) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"event\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"DingBao-sys"},"content":" int startIdx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"DingBao-sys"},"content":" int numOfSlash \u003d 0;","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"DingBao-sys"},"content":" while (startIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.charAt(startIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"DingBao-sys"},"content":" startIdx++;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"DingBao-sys"},"content":" numOfSlash++;","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"DingBao-sys"},"content":" int endIdx \u003d startIdx + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"DingBao-sys"},"content":" while (endIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.charAt(endIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"DingBao-sys"},"content":" endIdx++;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"DingBao-sys"},"content":" numOfSlash++;","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"DingBao-sys"},"content":" if (numOfSlash \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidEventException();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new Event(echoInput.substring(6, startIdx),","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"DingBao-sys"},"content":" echoInput.substring(startIdx + 6, endIdx),","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"DingBao-sys"},"content":" echoInput.substring(endIdx + 4));","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"DingBao-sys"},"content":" else if (echoInput.substring(0, 6).equals(\"unmark\") \u0026\u0026","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"DingBao-sys"},"content":" isNumeric(echoInput.substring(7))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx \u003d Integer.parseInt(echoInput.substring(7));","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"DingBao-sys"},"content":" storage.get(taskIdx - 1).unMarkDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"DingBao-sys"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"DingBao-sys"},"content":" else if (echoInput.substring(0, 6).equals(\"delete\") \u0026\u0026","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"DingBao-sys"},"content":" isNumeric(echoInput.substring(7))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx \u003d Integer.parseInt(echoInput.substring(7));","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"DingBao-sys"},"content":" Task removed \u003d storage.remove(taskIdx - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"DingBao-sys"},"content":" currentIdx--;","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Noted. I\u0027ve removed this task:\\n %s\\n Now you have %d tasks in the list.\\n%s\",","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"DingBao-sys"},"content":" hRULER, removed, currentIdx, hRULER);","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"DingBao-sys"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"DingBao-sys"},"content":" else if (echoInput.substring(0, 8).equals(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.length() \u003d\u003d 8) {","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"deadline\");","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"DingBao-sys"},"content":" int deadlineStartIdx \u003d 0;","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"DingBao-sys"},"content":" boolean foundTime \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"DingBao-sys"},"content":" while (deadlineStartIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"DingBao-sys"},"content":" if (echoInput.charAt(deadlineStartIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"DingBao-sys"},"content":" deadlineStartIdx++;","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"DingBao-sys"},"content":" foundTime \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"DingBao-sys"},"content":" if (!foundTime) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new Deadline(echoInput.substring(9, deadlineStartIdx),","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"DingBao-sys"},"content":" echoInput.substring(deadlineStartIdx + 4));","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"DingBao-sys"},"content":" else {","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"DingBao-sys"},"content":" throw new UnknownInputException();","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"DingBao-sys"},"content":" storage.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"DingBao-sys"},"content":" currentIdx++;","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"DingBao-sys"},"content":" \" %s\\n Now you have %d tasks in the list.\\n%s\", hRULER, newTask, currentIdx, hRULER);","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"DingBao-sys"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s%s%s\", hRULER, new UnknownInputException(), hRULER);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"DingBao-sys"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s%s%s\", hRULER, e, hRULER);","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":139,"author":{"gitId":"DingBao-sys"},"content":" String[] token \u003d new String[]{","lastModifiedDate":"2024-01-22"},{"lineNumber":140,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\",","lastModifiedDate":"2024-01-22"},{"lineNumber":141,"author":{"gitId":"DingBao-sys"},"content":" \"Hello! I\u0027m chinesepoliceman\",","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"DingBao-sys"},"content":" \"What can I do for you?\",","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\",","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"DingBao-sys"},"content":" \" Bye. Hope to see you again soon!\",","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\"","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"DingBao-sys"},"content":" };","lastModifiedDate":"2024-01-22"},{"lineNumber":147,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 0; i \u003c 4; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(token[i]);","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"DingBao-sys"},"content":" run();","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 3; i \u003c 6; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(token[i]);","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"DingBao-sys":151,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class DukeException extends Throwable {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public DukeException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":5}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class EmptyDescriptionException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" String taskType;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public EmptyDescriptionException(String TaskType) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.taskType \u003d TaskType;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"You definitely are a genius creating a %s with no description.\\nI hope you are genius enough \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" \"to try again with an adequate description\\n\", this.taskType);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" private String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" public Event(String desc, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" super(desc);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[E]%s(from: %sto: %s)\",","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" super.toString(),start, end);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":14}},{"path":"src/main/java/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" return \"Maybe you do not know what a deadline is,\\nbut please have key in a valid time or day as a deadline following\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" \"a \u0027/\u0027\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":10}},{"path":"src/main/java/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public InvalidEventException() {","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return \"After I try so hard, you want to cook me by keying the date and time wrongly\\n\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" \"try again by adding the time in the format [task description] / from: starttime / end : endtime\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":11}},{"path":"src/main/java/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidTaskIndexException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private int currentSize;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public InvalidTaskIndexException(int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.currentSize \u003d size;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\" Stop trolling and pick a number\\n within %d\\n\", currentSize);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":13}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private final static String hRULER \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" private final String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" private String status \u003d \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" public Task(String token) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" this.description \u003d token;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" public void markDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" this.status \u003d \"[X]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Nice! I\u0027ve marked this task as done:\\n %s\\n%s\",","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" hRULER, this.toString(), hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":" public void unMarkDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":" this.status \u003d \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s OK, I\u0027ve marked this task as not done yet:\\n %s\\n%s\",","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" hRULER, this.toString(), hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"%s %s\", this.status, this.description);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"DingBao-sys":23}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public ToDo(String s) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super(s);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":10}},{"path":"src/main/java/UnknownInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class UnknownInputException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public UnknownInputException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return \"If you want to type gibberish you can craft your own Duke,\\nhowever if you wish to continue talking to me \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" \"here are the available commands:\\nlist\\ntodo\\nevent\\ndeadline\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"todo borrow book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":4}},{"path":"text-ui-test/input1.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"todo read book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"mark 1","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"mark 2","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":"todo join sport club","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"mark 4","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":"todo borrow book","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"delete 4","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"mark 5","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"unmark 5","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":12}},{"path":"text-ui-test/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"\u001b[?1049h\u001b[\u003e4;2m\u001b[?1h\u001b\u003d\u001b[?2004h\u001b[?1004h\u001b[1;67r\u001b[?12h\u001b[?12l\u001b[22;2t\u001b[22;1t\u001b[27m\u001b[23m\u001b[29m\u001b[m\u001b[H\u001b[2J\u001b[?25l\u001b[67;1H\"runtest.sh\" [noeol] 38L, 848B\u001b[1;1H\u001b[96m#!/usr/bin/env bash","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"# create bin directory if it doesn\u0027t exist\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[93m!\u001b[m \u001b[93m-d\u001b[m \u001b[93m\"\u001b[m\u001b[95m../bin\u001b[m\u001b[93m\"\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mmkdir\u001b[m ../bin","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# delete output from previous run\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[93m-e\u001b[m \u001b[93m\"\u001b[m\u001b[95m./ACTUAL.TXT\u001b[m\u001b[93m\"\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mrm\u001b[m ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# compile the code into the bin folder, terminates if error occurred\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif !\u001b[m javac \u001b[38;5;224m-cp\u001b[m ../src/main/java \u001b[38;5;224m-Xlint\u001b[m:none \u001b[93m-d\u001b[m ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mthen","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95m********** BUILD FAILURE **********\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m1\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":"java \u001b[38;5;224m-classpath\u001b[m ../bin Duke \u001b[93m\u003c\u001b[m input.txt \u001b[93m\u003e\u001b[m ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# convert to UNIX format\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"DingBao-sys"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"DingBao-sys"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# compare the output to the expected output\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"DingBao-sys"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[38;5;81m$?\u001b[m \u001b[93m-eq\u001b[m \u001b[95m0\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95mTest result: PASSED\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m0\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93melse","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95mTest result: FAILED\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m1\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"DingBao-sys"},"content":"\u001b[94m~ \u001b[40;1H~ \u001b[41;1H~ \u001b[42;1H~ \u001b[43;1H~ \u001b[44;1H~ \u001b[45;1H~ \u001b[46;1H~ \u001b[47;1H~ \u001b[48;1H~ \u001b[49;1H~ \u001b[50;1H~ \u001b[51;1H~ \u001b[52;1H~ \u001b[53;1H~ \u001b[54;1H~ \u001b[55;1H~ \u001b[56;1H~ \u001b[57;1H~ \u001b[58;1H~ \u001b[59;1H~ \u001b[60;1H~ \u001b[61;1H~ \u001b[62;1H~ \u001b[63;1H~ \u001b[64;1H~ \u001b[65;1H~ \u001b[66;1H~ \u001b[m\u001b[67;197H1,1\u001b[11CAll\u001b[1;1H\u001b[?25h\u001b[?4m\u001b[?25l\u001b[67;197H2,0-1\u001b[2;1H\u001b[?25h\u001b[67;1H\u001b[?2004l\u001b[\u003e4;m\u001b[23;2t\u001b[23;1t\u001b[67;1H\u001b[K\u001b[67;1H\u001b[?1004l\u001b[?2004l\u001b[?1l\u001b\u003e\u001b[?1049l\u001b[\u003e4;m","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":39}},{"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":"DingBao-sys"},"content":"if [ -e \"./ACTUAL1.TXT\" ]","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" rm ACTUAL1.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":"fi","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003cinput.txt \u003eACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":"java -classpath ../bin Duke \u003c input1.txt \u003e ACTUAL1.TXT","lastModifiedDate":"2024-01-29"},{"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":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"DingBao-sys"},"content":"cp EXPECTED1.TXT EXPECTED1-UNIX.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"DingBao-sys"},"content":"diff ACTUAL1.TXT EXPECTED1-UNIX.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"DingBao-sys"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"DingBao-sys"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"DingBao-sys"},"content":" exit 0","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"DingBao-sys"},"content":"else","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"DingBao-sys"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"DingBao-sys"},"content":" exit 1","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"DingBao-sys"},"content":"fi","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":17,"-":35}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" String deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public Deadline(String descr, String deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super(descr);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.deadlineDate \u003d deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[D]%s(by: %s)\", super.toString(), this.deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":12}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" private static final String hRULER \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" private enum Commands {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" bye,","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" list,","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" mark,","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" todo,","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" event,","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" unmark,","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":" delete,","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":" deadline","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":" private static boolean isNumeric(String s) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" if (s \u003d\u003d null) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":" Integer.parseInt(s);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"DingBao-sys"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"DingBao-sys"},"content":" private static void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"DingBao-sys"},"content":" ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":" int currentIdx \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"DingBao-sys"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"DingBao-sys"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"DingBao-sys"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"DingBao-sys"},"content":" String echoInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"DingBao-sys"},"content":" String[] words \u003d echoInput.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"DingBao-sys"},"content":" Commands token \u003d Commands.valueOf(words[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"DingBao-sys"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"DingBao-sys"},"content":" switch (token) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"DingBao-sys"},"content":" case bye:","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"DingBao-sys"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"DingBao-sys"},"content":" case list:","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Here are the tasks in your list:\\n\", hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 0; i \u003c currentIdx; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\" %d.%s\\n\", i + 1, storage.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"DingBao-sys"},"content":" case mark:","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1 || !isNumeric(words[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx \u003e\u003d currentIdx || taskIdx \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"DingBao-sys"},"content":" storage.get(taskIdx).markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"DingBao-sys"},"content":" case unmark:","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1 || !isNumeric(words[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx1 \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx1 \u003e\u003d currentIdx || taskIdx1 \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"DingBao-sys"},"content":" storage.get(taskIdx1).unMarkDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"DingBao-sys"},"content":" case delete:","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1 || !isNumeric(words[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"DingBao-sys"},"content":" int taskIdx2 \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"DingBao-sys"},"content":" if (taskIdx2 \u003e\u003d currentIdx || taskIdx2 \u003c 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"DingBao-sys"},"content":" Task removed \u003d storage.remove(taskIdx2);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"DingBao-sys"},"content":" currentIdx--;","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Noted. I\u0027ve removed this task:\\n %s\\n Now you have %d tasks in the list.\\n%s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"DingBao-sys"},"content":" hRULER, removed, currentIdx, hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"DingBao-sys"},"content":" case todo:","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new ToDo(words[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"DingBao-sys"},"content":" case event:","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"event\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"DingBao-sys"},"content":" int startIdx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"DingBao-sys"},"content":" int numOfSlash \u003d 0;","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"DingBao-sys"},"content":" while (startIdx \u003c words[1].length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"DingBao-sys"},"content":" if (words[1].charAt(startIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"DingBao-sys"},"content":" startIdx++;","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"DingBao-sys"},"content":" numOfSlash++;","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"DingBao-sys"},"content":" int endIdx \u003d startIdx + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"DingBao-sys"},"content":" while (endIdx \u003c words[1].length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"DingBao-sys"},"content":" if (words[1].charAt(endIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"DingBao-sys"},"content":" endIdx++;","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"DingBao-sys"},"content":" numOfSlash++;","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"DingBao-sys"},"content":" if (numOfSlash \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidEventException();","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new Event(words[1].substring(0, startIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"DingBao-sys"},"content":" words[1].substring(startIdx + 6, endIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"DingBao-sys"},"content":" words[1].substring(endIdx + 4));","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"DingBao-sys"},"content":" case deadline:","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"DingBao-sys"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"DingBao-sys"},"content":" throw new EmptyDescriptionException(\"deadline\");","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"DingBao-sys"},"content":" int deadlineStartIdx \u003d 0;","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"DingBao-sys"},"content":" boolean foundTime \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"DingBao-sys"},"content":" while (deadlineStartIdx \u003c words[1].length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"DingBao-sys"},"content":" if (words[1].charAt(deadlineStartIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"DingBao-sys"},"content":" deadlineStartIdx++;","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"DingBao-sys"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"DingBao-sys"},"content":" foundTime \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"DingBao-sys"},"content":" if (!foundTime) {","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"DingBao-sys"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"DingBao-sys"},"content":" newTask \u003d new Deadline(words[1].substring(0, deadlineStartIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"DingBao-sys"},"content":" words[1].substring(deadlineStartIdx + 4));","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"DingBao-sys"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"DingBao-sys"},"content":" if (newTask !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"DingBao-sys"},"content":" storage.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"DingBao-sys"},"content":" currentIdx++;","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"DingBao-sys"},"content":" \" %s\\n Now you have %d tasks in the list.\\n%s\", hRULER, newTask, currentIdx, hRULER);","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"DingBao-sys"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s%s%s\", hRULER, new UnknownInputException(), hRULER);","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"DingBao-sys"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s%s%s\", hRULER, e, hRULER);","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":153,"author":{"gitId":"DingBao-sys"},"content":" String[] token \u003d new String[]{","lastModifiedDate":"2024-01-22"},{"lineNumber":154,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\",","lastModifiedDate":"2024-01-22"},{"lineNumber":155,"author":{"gitId":"DingBao-sys"},"content":" \"Hello! I\u0027m chinesepoliceman\",","lastModifiedDate":"2024-01-22"},{"lineNumber":156,"author":{"gitId":"DingBao-sys"},"content":" \"What can I do for you?\",","lastModifiedDate":"2024-01-22"},{"lineNumber":157,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\",","lastModifiedDate":"2024-01-22"},{"lineNumber":158,"author":{"gitId":"DingBao-sys"},"content":" \" Bye. Hope to see you again soon!\",","lastModifiedDate":"2024-01-22"},{"lineNumber":159,"author":{"gitId":"DingBao-sys"},"content":" \"____________________________________________________________\"","lastModifiedDate":"2024-01-22"},{"lineNumber":160,"author":{"gitId":"DingBao-sys"},"content":" };","lastModifiedDate":"2024-01-22"},{"lineNumber":161,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 0; i \u003c 4; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(token[i]);","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"DingBao-sys"},"content":" run();","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"DingBao-sys"},"content":" for (int i \u003d 3; i \u003c 6; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"DingBao-sys"},"content":" System.out.println(token[i]);","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":170,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"DingBao-sys"},"content":"// private static void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"DingBao-sys"},"content":"// ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"DingBao-sys"},"content":"// int currentIdx \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"DingBao-sys"},"content":"// Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"DingBao-sys"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"DingBao-sys"},"content":"// while (true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"DingBao-sys"},"content":"// try {","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"DingBao-sys"},"content":"// String echoInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"DingBao-sys"},"content":"// Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"DingBao-sys"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"DingBao-sys"},"content":"// return;","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\"%s Here are the tasks in your list:\\n\", hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"DingBao-sys"},"content":"// for (int i \u003d 0; i \u003c currentIdx; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\" %d.%s\\n\", i + 1, storage.get(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"DingBao-sys"},"content":"// System.out.println(hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"DingBao-sys"},"content":"// continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.substring(0, 4).equals(\"mark\")","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"DingBao-sys"},"content":"// \u0026\u0026 isNumeric(echoInput.substring(5))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"DingBao-sys"},"content":"// int taskIdx \u003d Integer.parseInt(echoInput.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"DingBao-sys"},"content":"// if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"DingBao-sys"},"content":"// throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"DingBao-sys"},"content":"// storage.get(taskIdx - 1).markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"DingBao-sys"},"content":"// continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"DingBao-sys"},"content":"// else if (echoInput.substring(0, 4).equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"DingBao-sys"},"content":"// throw new EmptyDescriptionException(\"todo\");","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"DingBao-sys"},"content":"// newTask \u003d new ToDo(echoInput.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"DingBao-sys"},"content":"// else if (echoInput.substring(0, 5).equals(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.length() \u003d\u003d 5) {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"DingBao-sys"},"content":"// throw new EmptyDescriptionException(\"event\");","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"DingBao-sys"},"content":"// int startIdx \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"DingBao-sys"},"content":"// int numOfSlash \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"DingBao-sys"},"content":"// while (startIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.charAt(startIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"DingBao-sys"},"content":"// startIdx++;","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"DingBao-sys"},"content":"// } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"DingBao-sys"},"content":"// numOfSlash++;","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"DingBao-sys"},"content":"// break;","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"DingBao-sys"},"content":"// int endIdx \u003d startIdx + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"DingBao-sys"},"content":"// while (endIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.charAt(endIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"DingBao-sys"},"content":"// endIdx++;","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"DingBao-sys"},"content":"// } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"DingBao-sys"},"content":"// numOfSlash++;","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"DingBao-sys"},"content":"// break;","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"DingBao-sys"},"content":"// if (numOfSlash \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"DingBao-sys"},"content":"// throw new InvalidEventException();","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"DingBao-sys"},"content":"// newTask \u003d new Event(echoInput.substring(6, startIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"DingBao-sys"},"content":"// echoInput.substring(startIdx + 6, endIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"DingBao-sys"},"content":"// echoInput.substring(endIdx + 4));","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"DingBao-sys"},"content":"// else if (echoInput.substring(0, 6).equals(\"unmark\") \u0026\u0026","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"DingBao-sys"},"content":"// isNumeric(echoInput.substring(7))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"DingBao-sys"},"content":"// int taskIdx \u003d Integer.parseInt(echoInput.substring(7));","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"DingBao-sys"},"content":"// if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"DingBao-sys"},"content":"// throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"DingBao-sys"},"content":"// storage.get(taskIdx - 1).unMarkDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"DingBao-sys"},"content":"// continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"DingBao-sys"},"content":"// else if (echoInput.substring(0, 6).equals(\"delete\") \u0026\u0026","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"DingBao-sys"},"content":"// isNumeric(echoInput.substring(7))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"DingBao-sys"},"content":"// int taskIdx \u003d Integer.parseInt(echoInput.substring(7));","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"DingBao-sys"},"content":"// if (taskIdx \u003e\u003d currentIdx) {","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"DingBao-sys"},"content":"// throw new InvalidTaskIndexException(currentIdx);","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"DingBao-sys"},"content":"// Task removed \u003d storage.remove(taskIdx - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"DingBao-sys"},"content":"// currentIdx--;","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\"%s Noted. I\u0027ve removed this task:\\n %s\\n Now you have %d tasks in the list.\\n%s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"DingBao-sys"},"content":"// hRULER, removed, currentIdx, hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"DingBao-sys"},"content":"// continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"DingBao-sys"},"content":"// else if (echoInput.substring(0, 8).equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.length() \u003d\u003d 8) {","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"DingBao-sys"},"content":"// throw new EmptyDescriptionException(\"deadline\");","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"DingBao-sys"},"content":"// int deadlineStartIdx \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"DingBao-sys"},"content":"// boolean foundTime \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"DingBao-sys"},"content":"// while (deadlineStartIdx \u003c echoInput.length()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"DingBao-sys"},"content":"// if (echoInput.charAt(deadlineStartIdx) !\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"DingBao-sys"},"content":"// deadlineStartIdx++;","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"DingBao-sys"},"content":"// } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"DingBao-sys"},"content":"// foundTime \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"DingBao-sys"},"content":"// break;","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"DingBao-sys"},"content":"// if (!foundTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"DingBao-sys"},"content":"// throw new InvalidDeadlineException();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"DingBao-sys"},"content":"// newTask \u003d new Deadline(echoInput.substring(9, deadlineStartIdx),","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"DingBao-sys"},"content":"// echoInput.substring(deadlineStartIdx + 4));","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"DingBao-sys"},"content":"// else {","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"DingBao-sys"},"content":"// throw new UnknownInputException();","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"DingBao-sys"},"content":"// storage.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"DingBao-sys"},"content":"// currentIdx++;","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\"%s Got it. I\u0027ve added this task:\\n \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"DingBao-sys"},"content":"// \" %s\\n Now you have %d tasks in the list.\\n%s\", hRULER, newTask, currentIdx, hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"DingBao-sys"},"content":"// } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\"%s%s%s\", hRULER, new UnknownInputException(), hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"DingBao-sys"},"content":"// } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"DingBao-sys"},"content":"// System.out.printf(\"%s%s%s\", hRULER, e, hRULER);","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"DingBao-sys"},"content":"// }","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"DingBao-sys":287,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class DukeException extends Throwable {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public DukeException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":5}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class EmptyDescriptionException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" String taskType;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public EmptyDescriptionException(String TaskType) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.taskType \u003d TaskType;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"You definitely are a genius creating a %s with no description.\\nI hope you are genius enough \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" \"to try again with an adequate description\\n\", this.taskType);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" private String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" public Event(String desc, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" super(desc);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[E]%s(from: %sto: %s)\",","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" super.toString(),start, end);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":14}},{"path":"src/main/java/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" return \"Maybe you do not know what a deadline is,\\nbut please have key in a valid time or day as a deadline following\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" \"a \u0027/\u0027\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":10}},{"path":"src/main/java/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public InvalidEventException() {","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return \"After I try so hard, you want to cook me by keying the date and time wrongly\\n\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" \"try again by adding the time in the format [task description] / from: starttime / end : endtime\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":11}},{"path":"src/main/java/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class InvalidTaskIndexException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private int currentSize;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" public InvalidTaskIndexException(int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" this.currentSize \u003d size;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\" Stop trolling and pick a positive number\\n within %d\\n\", currentSize);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":13}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" private final static String hRULER \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" private final String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" private String status \u003d \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":" public Task(String token) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" this.description \u003d token;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" public void markDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" this.status \u003d \"[X]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s Nice! I\u0027ve marked this task as done:\\n %s\\n%s\",","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":" hRULER, this.toString(), hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":" public void unMarkDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":" this.status \u003d \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":" System.out.printf(\"%s OK, I\u0027ve marked this task as not done yet:\\n %s\\n%s\",","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" hRULER, this.toString(), hRULER);","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"%s %s\", this.status, this.description);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"DingBao-sys":23}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public ToDo(String s) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super(s);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"DingBao-sys":10}},{"path":"src/main/java/UnknownInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"public class UnknownInputException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":" public UnknownInputException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":" super();","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":" return \"If you want to type gibberish you can craft your own Duke,\\nhowever if you wish to continue talking to me \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":" \"here are the available commands:\\nlist\\ntodo\\nevent\\ndeadline\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"DingBao-sys":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"todo borrow book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":4}},{"path":"text-ui-test/input1.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"todo read book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"mark 1","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"mark 2","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":"todo join sport club","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"mark 4","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":"todo borrow book","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"delete 4","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"mark 5","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"unmark 5","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":12}},{"path":"text-ui-test/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"DingBao-sys"},"content":"\u001b[?1049h\u001b[\u003e4;2m\u001b[?1h\u001b\u003d\u001b[?2004h\u001b[?1004h\u001b[1;67r\u001b[?12h\u001b[?12l\u001b[22;2t\u001b[22;1t\u001b[27m\u001b[23m\u001b[29m\u001b[m\u001b[H\u001b[2J\u001b[?25l\u001b[67;1H\"runtest.sh\" [noeol] 38L, 848B\u001b[1;1H\u001b[96m#!/usr/bin/env bash","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"DingBao-sys"},"content":"# create bin directory if it doesn\u0027t exist\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[93m!\u001b[m \u001b[93m-d\u001b[m \u001b[93m\"\u001b[m\u001b[95m../bin\u001b[m\u001b[93m\"\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mmkdir\u001b[m ../bin","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# delete output from previous run\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[93m-e\u001b[m \u001b[93m\"\u001b[m\u001b[95m./ACTUAL.TXT\u001b[m\u001b[93m\"\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mrm\u001b[m ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# compile the code into the bin folder, terminates if error occurred\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif !\u001b[m javac \u001b[38;5;224m-cp\u001b[m ../src/main/java \u001b[38;5;224m-Xlint\u001b[m:none \u001b[93m-d\u001b[m ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mthen","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95m********** BUILD FAILURE **********\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m1\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"DingBao-sys"},"content":"java \u001b[38;5;224m-classpath\u001b[m ../bin Duke \u001b[93m\u003c\u001b[m input.txt \u001b[93m\u003e\u001b[m ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# convert to UNIX format\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"DingBao-sys"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"DingBao-sys"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":"\u001b[96m# compare the output to the expected output\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"DingBao-sys"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mif [\u001b[m \u001b[38;5;81m$?\u001b[m \u001b[93m-eq\u001b[m \u001b[95m0\u001b[m \u001b[93m]","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95mTest result: PASSED\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m0\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93melse","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mecho\u001b[m\u001b[95m \u001b[m\u001b[93m\"\u001b[m\u001b[95mTest result: FAILED\u001b[m\u001b[93m\"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"DingBao-sys"},"content":"\u001b[m \u001b[93mexit\u001b[m \u001b[95m1\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"DingBao-sys"},"content":"\u001b[93mfi\u001b[m","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"DingBao-sys"},"content":"\u001b[94m~ \u001b[40;1H~ \u001b[41;1H~ \u001b[42;1H~ \u001b[43;1H~ \u001b[44;1H~ \u001b[45;1H~ \u001b[46;1H~ \u001b[47;1H~ \u001b[48;1H~ \u001b[49;1H~ \u001b[50;1H~ \u001b[51;1H~ \u001b[52;1H~ \u001b[53;1H~ \u001b[54;1H~ \u001b[55;1H~ \u001b[56;1H~ \u001b[57;1H~ \u001b[58;1H~ \u001b[59;1H~ \u001b[60;1H~ \u001b[61;1H~ \u001b[62;1H~ \u001b[63;1H~ \u001b[64;1H~ \u001b[65;1H~ \u001b[66;1H~ \u001b[m\u001b[67;197H1,1\u001b[11CAll\u001b[1;1H\u001b[?25h\u001b[?4m\u001b[?25l\u001b[67;197H2,0-1\u001b[2;1H\u001b[?25h\u001b[67;1H\u001b[?2004l\u001b[\u003e4;m\u001b[23;2t\u001b[23;1t\u001b[67;1H\u001b[K\u001b[67;1H\u001b[?1004l\u001b[?2004l\u001b[?1l\u001b\u003e\u001b[?1049l\u001b[\u003e4;m","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"DingBao-sys":39}},{"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":"DingBao-sys"},"content":"if [ -e \"./ACTUAL1.TXT\" ]","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"DingBao-sys"},"content":" rm ACTUAL1.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"DingBao-sys"},"content":"fi","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003cinput.txt \u003eACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"DingBao-sys"},"content":"java -classpath ../bin Duke \u003c input1.txt \u003e ACTUAL1.TXT","lastModifiedDate":"2024-01-29"},{"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":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"DingBao-sys"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"DingBao-sys"},"content":"cp EXPECTED1.TXT EXPECTED1-UNIX.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"DingBao-sys"},"content":"diff ACTUAL1.TXT EXPECTED1-UNIX.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"DingBao-sys"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"DingBao-sys"},"content":"then","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"DingBao-sys"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"DingBao-sys"},"content":" exit 0","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"DingBao-sys"},"content":"else","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"DingBao-sys"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"DingBao-sys"},"content":" exit 1","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"DingBao-sys"},"content":"fi","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"DingBao-sys":17,"-":35}}] diff --git a/DingBao-sys_ip_master/commits.json b/DingBao-sys_ip_master/commits.json index dd12b01f..cf5d57b4 100644 --- a/DingBao-sys_ip_master/commits.json +++ b/DingBao-sys_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"DingBao-sys":[{"date":"2024-01-22","commitResults":[{"hash":"2e7dc4b115b01d0aa2034e5ff0a9b06c646f6d9c","isMergeCommit":false,"messageTitle":"Finished Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}}]},{"date":"2024-01-23","commitResults":[{"hash":"29273a320de1db49e891a1d54269e0e5e16a85a7","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"52efefd51fa42926a4e5ada3033b32cb76083b30","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2-Add-List"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":13}}},{"hash":"32f1371f27a9cb17fdafa3c53c35a90309c6ad67","isMergeCommit":false,"messageTitle":"Level-3-Mark-as-Done","messageBody":"","tags":["Level-3-Mark-As-Done"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"a26517def06a2a436b994fe7ffad457111055531","isMergeCommit":false,"messageTitle":"Level-4-ToDo-Events-Deadline","messageBody":"","tags":["level-4-todo-event-deadline"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":12}}}]},{"date":"2024-01-25","commitResults":[{"hash":"fafbe8763629aea4dd07958ecaa9ff58b143bec3","isMergeCommit":false,"messageTitle":"Level-6-Exceptions","messageBody":"","tags":["Level-5-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":60}}},{"hash":"908549e2bc0535026c4810aed28b985c104c30d0","isMergeCommit":false,"messageTitle":"Level-6-Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":7}}}]},{"date":"2024-01-26","commitResults":[{"hash":"80881420503505f0a4ed3b4ad3a366d3314814a9","isMergeCommit":false,"messageTitle":"Delete src/main/java/Command.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"64902f938a064c14230027891a180371752b3ec3","isMergeCommit":false,"messageTitle":"level-6","messageBody":"","tags":["Level-6-Delete"],"fileTypesAndContributionMap":{"txt":{"insertions":48,"deletions":0},"java":{"insertions":42,"deletions":12}}}]},{"date":"2024-01-29","commitResults":[{"hash":"be1d45668af67cb240e8b445cb0edecee6ffdc53","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"sh":{"insertions":19,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"DingBao-sys":{"java":273,"md":0,"fxml":0,"sh":17,"bat":0,"gradle":0,"txt":55}},"authorContributionVariance":{"DingBao-sys":4622.5947},"authorDisplayNameMap":{"DingBao-sys":"CS2103T-T11-1 SIM .. HAO"}} +{"authorDailyContributionsMap":{"DingBao-sys":[{"date":"2024-01-22","commitResults":[{"hash":"2e7dc4b115b01d0aa2034e5ff0a9b06c646f6d9c","isMergeCommit":false,"messageTitle":"Finished Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}}]},{"date":"2024-01-23","commitResults":[{"hash":"29273a320de1db49e891a1d54269e0e5e16a85a7","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"52efefd51fa42926a4e5ada3033b32cb76083b30","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2-Add-List"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":13}}},{"hash":"32f1371f27a9cb17fdafa3c53c35a90309c6ad67","isMergeCommit":false,"messageTitle":"Level-3-Mark-as-Done","messageBody":"","tags":["Level-3-Mark-As-Done"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"a26517def06a2a436b994fe7ffad457111055531","isMergeCommit":false,"messageTitle":"Level-4-ToDo-Events-Deadline","messageBody":"","tags":["level-4-todo-event-deadline"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":12}}}]},{"date":"2024-01-25","commitResults":[{"hash":"fafbe8763629aea4dd07958ecaa9ff58b143bec3","isMergeCommit":false,"messageTitle":"Level-6-Exceptions","messageBody":"","tags":["Level-5-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":60}}},{"hash":"908549e2bc0535026c4810aed28b985c104c30d0","isMergeCommit":false,"messageTitle":"Level-6-Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":7}}}]},{"date":"2024-01-26","commitResults":[{"hash":"80881420503505f0a4ed3b4ad3a366d3314814a9","isMergeCommit":false,"messageTitle":"Delete src/main/java/Command.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"64902f938a064c14230027891a180371752b3ec3","isMergeCommit":false,"messageTitle":"level-6","messageBody":"","tags":["Level-6-Delete"],"fileTypesAndContributionMap":{"txt":{"insertions":48,"deletions":0},"java":{"insertions":42,"deletions":12}}}]},{"date":"2024-01-29","commitResults":[{"hash":"be1d45668af67cb240e8b445cb0edecee6ffdc53","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"sh":{"insertions":19,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"be110de188297cb79ab492885fd45607fdfc764d","isMergeCommit":false,"messageTitle":"Done Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":238,"deletions":102}}}]}]},"authorFileTypeContributionMap":{"DingBao-sys":{"java":409,"md":0,"fxml":0,"sh":17,"bat":0,"gradle":0,"txt":55}},"authorContributionVariance":{"DingBao-sys":10501.583},"authorDisplayNameMap":{"DingBao-sys":"CS2103T-T11-1 SIM .. HAO"}} diff --git a/HongRay_ip_master/authorship.json b/HongRay_ip_master/authorship.json index dbbc2b09..c1f02ffb 100644 --- a/HongRay_ip_master/authorship.json +++ b/HongRay_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":13}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" public Event (String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":15}},{"path":"src/main/java/Handler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Handler {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public static void handleDelete(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" Task removedTask \u003d taskList.deleteTask(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nNoted. I\u0027ve removed this task:\\n \" + removedTask + \"\\nNow you have \" + taskList.getTaskCount() + \" tasks in the list.\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteInvalidException();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" public static void handleUnmark(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkTaskExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" taskList.markTaskAsNotDone(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nOK, I\u0027ve marked this task as not done yet:\\n \" + taskList.getTask(taskNumber) + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkException();","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" public static void handleDeadline(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" String[] deadlineParts \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" if (deadlineParts.length \u003c 2 || deadlineParts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" throw JayneException.deadlineException();","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" Deadline newDeadline \u003d new Deadline(deadlineParts[0], deadlineParts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" public static void handleTodo(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" throw JayneException.todoException();","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" Todo newTodo \u003d new Todo(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":" public static void handleEvent(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":" throw JayneException.emptyEventException();","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"HongRay"},"content":" String[] eventParts \u003d parts[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"HongRay"},"content":" if (eventParts.length \u003c 2 || eventParts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"HongRay"},"content":" throw JayneException.eventStartException();","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"HongRay"},"content":" String[] times \u003d eventParts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"HongRay"},"content":" if (times.length \u003c 2 || times[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"HongRay"},"content":" throw JayneException.eventEndException();","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"HongRay"},"content":" Event newEvent \u003d new Event(eventParts[0], times[0], times[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"HongRay"},"content":" public static void handleMark(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"HongRay"},"content":" throw JayneException.markEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"HongRay"},"content":" throw JayneException.markTaskExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"HongRay"},"content":" taskList.markTaskAsDone(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nNice! I\u0027ve marked this task as done:\\n \" + taskList.getTask(taskNumber) + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"HongRay"},"content":" throw JayneException.markInvalidTaskException();","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"HongRay"},"content":" public static void handleBye(String dash) {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"HongRay"},"content":" public static void handleList(TaskList taskList, String dash) {","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"HongRay"},"content":" taskList.display();","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":105}},{"path":"src/main/java/Jayne.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"public class Jayne {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" String dash \u003d \"___________________________________\";","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Hello, I\u0027m Jayne\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" System.out.println(\"What can I do for you?\\n\" + dash);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Input cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" // Handle different cases","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" switch (parts[0].toLowerCase()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" Handler.handleBye(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" return; // Exit the program","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" Handler.handleList(taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" Handler.handleMark(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" Handler.handleUnmark(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" Handler.handleTodo(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" Handler.handleDeadline(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" Handler.handleEvent(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" Handler.handleDelete(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"What are you typing. please include either bye, list, mark, umark, todo, deadline or event in your inputs please\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" } catch (JayneException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nHuh?!?!? \" + e.getMessage() + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":55}},{"path":"src/main/java/JayneException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class JayneException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public JayneException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" //Deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" public static JayneException deadlineException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Where can have empty deadline time, enter deadline lah. E.g. deadline return book /by Sunday\");","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" //Unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkTaskExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"What are you doing? The number of the task to unmark cannot be empty lah. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" //Delete","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The task number to delete cannot be empty. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteInvalidException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" //to-do","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" public static JayneException todoException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Huh?? why your description of a todo is empty! Please enter description. E.g. todo read book\");","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" //event","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" public static JayneException emptyEventException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The description of an event cannot be empty lah. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" public static JayneException eventStartException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The event start time cannot be empty. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" public static JayneException eventEndException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The event end time cannot be empty please. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" //Mark","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" public static JayneException markEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The task number to mark cannot be empty. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" public static JayneException markTaskExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":" public static JayneException markInvalidTaskException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":63}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" return getStatusIcon() + \" \" + description;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":26}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"import java.util.List;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"//test","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"public class TaskList {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" private final List\u003cTask\u003e taskArray;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" private int taskCount;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" public TaskList() {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" this.taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":"// public void add(String taskDescription) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"// taskArray.add(new Task(taskDescription));","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":"// }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" public int getTaskCount() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" return taskCount;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" public Task deleteTask(int taskNumber) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e taskArray.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Task number \" + taskNumber + \" does not exist.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" this.taskCount \u003d taskCount - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" return taskArray.remove(taskNumber - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" taskArray.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" this.taskCount \u003d taskCount + 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" return taskArray.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Index invalid\");","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" return null;","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" public void markTaskAsDone(int taskNumber) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003e\u003d 1 \u0026\u0026 taskNumber \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" taskArray.get(taskNumber - 1).markAsDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" public void markTaskAsNotDone(int taskNumber) {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003e\u003d 1 \u0026\u0026 taskNumber \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" taskArray.get(taskNumber - 1).markAsNotDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" for (int i \u003d 0; i \u003c taskArray.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" System.out.println((i + 1) + \". \" + taskArray.get(i).toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":59}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"John Doe","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":"deadline return book","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"event","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":"event project meeting","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"event project meeting /from","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"event project meeting /to","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"mark 10","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":"unmark 10","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":"delete 10","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"HongRay":29}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"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":15,"author":{"gitId":"HongRay"},"content":"java -classpath ..\\bin Jayne \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":2,"-":17}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" this.by \u003d parseDate(by);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" private LocalDate parseDate(String dateString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" return LocalDate.parse(dateString);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Unable to parse the date: \" + dateString);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" return null; // Or handle it another way","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" private LocalDate parseDateTime(String dateTimeString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" return LocalDate.parse(dateTimeString, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Unable to parse the date and time: \" + dateTimeString);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" return null; // Or handle it another way","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" private String formatDate(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" return \"no date\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" return date.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatDate(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ISO_LOCAL_DATE;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" return \"D | \" + super.toFileFormat() + \" | \" + (by !\u003d null ? by.format(formatter) : \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" public static Task fromFileFormat(String line) throws JayneException {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 4 || !\"D\".equals(parts[0])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Invalid line format for Deadline\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" Deadline task \u003d new Deadline(parts[2], parts[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" if (\"1\".equals(parts[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":61}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" public Event (String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" return \"E | \" + super.toFileFormat() + \" | \" + start + \"-\" + end;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" public static Task fromFileFormat(String line) throws JayneException {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 4 || !\"E\".equals(parts[0])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Invalid line format for Event\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" // The \u0027from\u0027 and \u0027to\u0027 parts are combined in parts[3], so we need to split them","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" String[] times \u003d parts[3].split(\" to \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" if (times.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Invalid time format for Event\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" Event task \u003d new Event(parts[2], times[0], times[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" if (\"1\".equals(parts[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":39}},{"path":"src/main/java/Handler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Handler {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public static void handleDelete(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" Task removedTask \u003d taskList.deleteTask(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nNoted. I\u0027ve removed this task:\\n \" + removedTask + \"\\nNow you have \" + taskList.getTaskCount() + \" tasks in the list.\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" throw JayneException.deleteInvalidException();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" public static void handleUnmark(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkTaskExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" taskList.markTaskAsNotDone(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nOK, I\u0027ve marked this task as not done yet:\\n \" + taskList.getTask(taskNumber) + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" throw JayneException.unmarkException();","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" public static void handleDeadline(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" String[] deadlineParts \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" if (deadlineParts.length \u003c 2 || deadlineParts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" throw JayneException.deadlineException();","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" Deadline newDeadline \u003d new Deadline(deadlineParts[0], deadlineParts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" public static void handleTodo(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" throw JayneException.todoException();","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" Todo newTodo \u003d new Todo(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"HongRay"},"content":" public static void handleEvent(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2 || parts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"HongRay"},"content":" throw JayneException.emptyEventException();","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"HongRay"},"content":" String[] eventParts \u003d parts[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"HongRay"},"content":" if (eventParts.length \u003c 2 || eventParts[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"HongRay"},"content":" throw JayneException.eventStartException();","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"HongRay"},"content":" String[] times \u003d eventParts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"HongRay"},"content":" if (times.length \u003c 2 || times[1].isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"HongRay"},"content":" throw JayneException.eventEndException();","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"HongRay"},"content":" Event newEvent \u003d new Event(eventParts[0], times[0], times[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"HongRay"},"content":" taskList.addTask(newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nGot it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"HongRay"},"content":" System.out.println(\" \" + newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Now you have \" + taskList.getTaskCount() + \" tasks in the list.\" + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"HongRay"},"content":" public static void handleMark(String[] parts, TaskList taskList, String dash) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"HongRay"},"content":" throw JayneException.markEmptyException();","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"HongRay"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c\u003d 0 || taskNumber \u003e taskList.getTaskCount()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"HongRay"},"content":" throw JayneException.markTaskExistException(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"HongRay"},"content":" taskList.markTaskAsDone(taskNumber);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nNice! I\u0027ve marked this task as done:\\n \" + taskList.getTask(taskNumber) + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"HongRay"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"HongRay"},"content":" throw JayneException.markInvalidTaskException();","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"HongRay"},"content":" taskList.saveTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"HongRay"},"content":" public static void handleBye(String dash) {","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"HongRay"},"content":" public static void handleList(TaskList taskList, String dash) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"HongRay"},"content":" taskList.display();","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":118}},{"path":"src/main/java/Jayne.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"public class Jayne {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" String dash \u003d \"___________________________________\";","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" System.out.println(dash);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Hello, I\u0027m Jayne\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" System.out.println(\"What can I do for you?\\n\" + dash);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Input cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" // Handle different cases","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" switch (parts[0].toLowerCase()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" Handler.handleBye(dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" return; // Exit the program","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" Handler.handleList(taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" Handler.handleMark(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" Handler.handleUnmark(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" Handler.handleTodo(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" Handler.handleDeadline(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" Handler.handleEvent(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" Handler.handleDelete(parts, taskList, dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"What are you typing. please include either bye, list, mark, umark, todo, deadline or event in your inputs please\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" } catch (JayneException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" System.out.println(dash + \"\\nHuh?!?!? \" + e.getMessage() + \"\\n\" + dash);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":55}},{"path":"src/main/java/JayneException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class JayneException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public JayneException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" //Deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" public static JayneException deadlineException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Where can have empty deadline time, enter deadline lah. E.g. deadline return book /by Sunday\");","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" //Unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkTaskExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" public static JayneException unmarkEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"What are you doing? The number of the task to unmark cannot be empty lah. E.g. unmark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" //Delete","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The task number to delete cannot be empty. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteInvalidException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" public static JayneException deleteExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. delete 2\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" //to-do","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" public static JayneException todoException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Huh?? why your description of a todo is empty! Please enter description. E.g. todo read book\");","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" //event","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" public static JayneException emptyEventException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The description of an event cannot be empty lah. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" public static JayneException eventStartException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The event start time cannot be empty. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" public static JayneException eventEndException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The event end time cannot be empty please. E.g. event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" //Mark","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" public static JayneException markEmptyException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"The task number to mark cannot be empty. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" public static JayneException markTaskExistException(int taskNumber) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"Task number \" + taskNumber + \" does not exist. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":" public static JayneException markInvalidTaskException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":" return new JayneException(\"??? Invalid task number. Enter a valid number please. E.g. mark 1\");","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":63}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" return (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" public static Task fromFileFormat(String line) throws JayneException {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Invalid line format\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" Task task \u003d new Task(parts[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" if (\"1\".equals(parts[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" return getStatusIcon() + \" \" + description;","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":42}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"import java.util.List;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"import java.io.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"import java.nio.file.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":"import java.util.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":"//test","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":"public class TaskList {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" private final List\u003cTask\u003e taskArray;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" private static final String FILE_PATH \u003d \"./data/jayne.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" private int taskCount;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":" public TaskList() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":" this.taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":" //checkAndDeleteFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":" renameFileIfExists();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":" loadTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":" private void checkAndDeleteFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":" Path path \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":" // Check if the file exists","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":" // Delete the file","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":" Files.delete(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":" System.out.println(FILE_PATH + \" has been detected and deleted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":" System.out.println(FILE_PATH + \" does not exist, no need to delete.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HongRay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HongRay"},"content":" System.out.println(\"An error occurred while checking/deleting the file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"HongRay"},"content":" private void renameFileIfExists() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"HongRay"},"content":" Path path \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"HongRay"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"HongRay"},"content":" String newFileName \u003d getNewFileName(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"HongRay"},"content":" Files.move(path, path.resolveSibling(newFileName));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"HongRay"},"content":" System.out.println(FILE_PATH + \" has been renamed to \" + newFileName);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"HongRay"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"HongRay"},"content":" System.out.println(FILE_PATH + \" does not exist, no need to rename.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"HongRay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"HongRay"},"content":" System.out.println(\"An error occurred while renaming the file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"HongRay"},"content":" private String getNewFileName(Path originalPath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"HongRay"},"content":" int counter \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"HongRay"},"content":" String originalFileName \u003d originalPath.getFileName().toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"HongRay"},"content":" String fileWithoutExtension \u003d originalFileName.replaceFirst(\"[.][^.]+$\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"HongRay"},"content":" String extension \u003d originalFileName.substring(originalFileName.lastIndexOf(\".\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"HongRay"},"content":" Path parentDir \u003d originalPath.getParent();","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"HongRay"},"content":" while (true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"HongRay"},"content":" String newName \u003d fileWithoutExtension + \"(\" + counter + \")\" + extension;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"HongRay"},"content":" Path newPath \u003d parentDir.resolve(newName);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"HongRay"},"content":" if (!Files.exists(newPath)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"HongRay"},"content":" return newName;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"HongRay"},"content":" counter++;","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"HongRay"},"content":" public void saveTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"HongRay"},"content":" Path path \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"HongRay"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"HongRay"},"content":" BufferedWriter bw \u003d new BufferedWriter(new FileWriter(FILE_PATH));","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"HongRay"},"content":" for (Task task : taskArray) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"HongRay"},"content":" bw.write(task.toFileFormat() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"HongRay"},"content":" bw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"HongRay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"HongRay"},"content":" System.out.println(\"An error occurred while saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"HongRay"},"content":" private void loadTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"HongRay"},"content":" Path path \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"HongRay"},"content":" if (!Files.exists(path)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"HongRay"},"content":" return; // File doesn\u0027t exist, nothing to load","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"HongRay"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"HongRay"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"HongRay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"HongRay"},"content":" Task task \u003d Task.fromFileFormat(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"HongRay"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"HongRay"},"content":" taskArray.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"HongRay"},"content":" } catch (JayneException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Error parsing line from file: \" + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"HongRay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"HongRay"},"content":" System.out.println(\"An error occurred while loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"HongRay"},"content":" public int getTaskCount() {","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"HongRay"},"content":" return taskCount;","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"HongRay"},"content":" public Task deleteTask(int taskNumber) throws JayneException {","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e taskArray.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"HongRay"},"content":" throw new JayneException(\"Task number \" + taskNumber + \" does not exist.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"HongRay"},"content":" this.taskCount \u003d taskCount - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"HongRay"},"content":" return taskArray.remove(taskNumber - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"HongRay"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"HongRay"},"content":" taskArray.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"HongRay"},"content":" this.taskCount \u003d taskCount + 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":122,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":123,"author":{"gitId":"HongRay"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"HongRay"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":125,"author":{"gitId":"HongRay"},"content":" return taskArray.get(index - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Index invalid\");","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"HongRay"},"content":" return null;","lastModifiedDate":"2024-01-22"},{"lineNumber":129,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":130,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"HongRay"},"content":" public void markTaskAsDone(int taskNumber) {","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003e\u003d 1 \u0026\u0026 taskNumber \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":133,"author":{"gitId":"HongRay"},"content":" taskArray.get(taskNumber - 1).markAsDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"HongRay"},"content":" public void markTaskAsNotDone(int taskNumber) {","lastModifiedDate":"2024-01-22"},{"lineNumber":138,"author":{"gitId":"HongRay"},"content":" if (taskNumber \u003e\u003d 1 \u0026\u0026 taskNumber \u003c\u003d taskArray.size()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":139,"author":{"gitId":"HongRay"},"content":" taskArray.get(taskNumber - 1).markAsNotDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":140,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":141,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"HongRay"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"HongRay"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"HongRay"},"content":" for (int i \u003d 0; i \u003c taskArray.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"HongRay"},"content":" System.out.println((i + 1) + \". \" + taskArray.get(i).toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":147,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":148,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":149}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":" return \"T | \" + super.toFileFormat();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"HongRay":13}},{"path":"text-ui-test/TEST.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"todo read book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"event project meeting Aug 6th /from 2 /to 4pm","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"todo join sport club","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":"mark 1","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":"mark 4","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"HongRay":6}},{"path":"text-ui-test/data/jayne.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"D | 0 | return book | June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"E | 0 | project meeting Aug 6th | 2-4pm","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"T | 1 | join sport club","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"HongRay":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"HongRay"},"content":"John Doe","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"HongRay"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"HongRay"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"HongRay"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"HongRay"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"HongRay"},"content":"deadline return book","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"HongRay"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"HongRay"},"content":"event","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"HongRay"},"content":"event project meeting","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"HongRay"},"content":"event project meeting /from","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"HongRay"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"HongRay"},"content":"event project meeting /to","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"HongRay"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"HongRay"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"HongRay"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"HongRay"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"mark 10","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"HongRay"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"HongRay"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"HongRay"},"content":"unmark 10","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"HongRay"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"HongRay"},"content":"delete 10","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"HongRay"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"HongRay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"HongRay"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"HongRay":29}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"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":15,"author":{"gitId":"HongRay"},"content":"java -classpath ..\\bin Jayne \u003c TEST.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"HongRay"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"HongRay":2,"-":17}}] diff --git a/HongRay_ip_master/commits.json b/HongRay_ip_master/commits.json index 25ce56a1..ee125942 100644 --- a/HongRay_ip_master/commits.json +++ b/HongRay_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"HongRay":[{"date":"2024-01-22","commitResults":[{"hash":"7ed79f9d915e1fde5ced004e0290f9bd3569a300","isMergeCommit":false,"messageTitle":"Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"fe0d02eeeb6d5b031e94133774343762b8968c16","isMergeCommit":false,"messageTitle":"Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5f8a3515fd15533b5dd211a6c1777513affde9e0","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"2e9487dce036629d3425290e4ca55c7ed46925fc","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"4e2029d26b77d1e5b0b8beef8145435f0bf6647d","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":17}}},{"hash":"bc281f62a15c17a88f58efd5486b7d2b2e5a2de7","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"09f54f3fcdec0ec026c65443858b59c4ebaaf047","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"c8f3deb78408962b908601e48875f6f04abf3e24","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"328563673d4ba3109553639378e9d003daccfee0","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":5}}},{"hash":"fffe9ba9a86eb0d2c9e575fff7bdfa5fd199aa3a","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":9}}}]},{"date":"2024-01-23","commitResults":[{"hash":"2fb99d263ff302a7197db3694f3c7eb44c101620","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":10,"deletions":10},"bat":{"insertions":1,"deletions":4}}}]},{"date":"2024-01-24","commitResults":[{"hash":"c93c7e2f448bff8aea5deb9b8f68463eccd2d760","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":170,"deletions":65},"bat":{"insertions":1,"deletions":0}}},{"hash":"d2bbe2dd7eef0627ad2e1e355c489cf1a382eb5d","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":50,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"HongRay":{"java":346,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":29}},"authorContributionVariance":{"HongRay":17428.584},"authorDisplayNameMap":{"HongRay":"CS2103T-W13-3 NG H.. RAY"}} +{"authorDailyContributionsMap":{"HongRay":[{"date":"2024-01-22","commitResults":[{"hash":"7ed79f9d915e1fde5ced004e0290f9bd3569a300","isMergeCommit":false,"messageTitle":"Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"fe0d02eeeb6d5b031e94133774343762b8968c16","isMergeCommit":false,"messageTitle":"Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5f8a3515fd15533b5dd211a6c1777513affde9e0","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"2e9487dce036629d3425290e4ca55c7ed46925fc","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"4e2029d26b77d1e5b0b8beef8145435f0bf6647d","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":17}}},{"hash":"bc281f62a15c17a88f58efd5486b7d2b2e5a2de7","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"09f54f3fcdec0ec026c65443858b59c4ebaaf047","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"c8f3deb78408962b908601e48875f6f04abf3e24","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"328563673d4ba3109553639378e9d003daccfee0","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":5}}},{"hash":"fffe9ba9a86eb0d2c9e575fff7bdfa5fd199aa3a","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":9}}}]},{"date":"2024-01-23","commitResults":[{"hash":"2fb99d263ff302a7197db3694f3c7eb44c101620","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":10,"deletions":10},"bat":{"insertions":1,"deletions":4}}}]},{"date":"2024-01-24","commitResults":[{"hash":"c93c7e2f448bff8aea5deb9b8f68463eccd2d760","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":170,"deletions":65},"bat":{"insertions":1,"deletions":0}}},{"hash":"d2bbe2dd7eef0627ad2e1e355c489cf1a382eb5d","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":50,"deletions":4}}}]},{"date":"2024-01-30","commitResults":[{"hash":"ba842f34415f2cde6ba20e82a5ec00508ec64fd3","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":4},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":0,"deletions":38}}},{"hash":"04658cc0821d533c35216635ede9b6445ee63557","isMergeCommit":false,"messageTitle":"Add test files","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"142d38f48502ccd0fb446ba3dd6dff06f1319666","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":5}}},{"hash":"0b8a8b97662943cec23c9038c0feaebb8c67a3a2","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"60823a1ea2a98e086e51993e84bcf1cbcf10588e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"HongRay":{"java":540,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":39}},"authorContributionVariance":{"HongRay":14380.8545},"authorDisplayNameMap":{"HongRay":"CS2103T-W13-3 NG H.. RAY"}} diff --git a/HusseinSafwan02_ip_master/authorship.json b/HusseinSafwan02_ip_master/authorship.json index 1b494e9d..2e423d34 100644 --- a/HusseinSafwan02_ip_master/authorship.json +++ b/HusseinSafwan02_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HusseinSafwan02"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"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":"HusseinSafwan02"},"content":" String cat \u003d \"(\\\\_/)\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HusseinSafwan02"},"content":" \"( •,•)\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"HusseinSafwan02"},"content":" \"(\\\")_(\\\")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(\"RAWR!\\n\" + cat);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"HusseinSafwan02"},"content":" String intro \u003d \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HusseinSafwan02"},"content":" \" Hello! I\u0027m Mickey\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HusseinSafwan02"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"HusseinSafwan02"},"content":" String outro \u003d \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"HusseinSafwan02"},"content":" \" Bye. See you soon!\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(intro);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"HusseinSafwan02"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HusseinSafwan02"},"content":" String userInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HusseinSafwan02"},"content":" while(true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HusseinSafwan02"},"content":" userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HusseinSafwan02"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(outro);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HusseinSafwan02"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HusseinSafwan02"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"HusseinSafwan02":30,"-":4}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HusseinSafwan02"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"HusseinSafwan02"},"content":" public static String addComment (String task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"HusseinSafwan02"},"content":" return \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"HusseinSafwan02"},"content":" \" Added: \" + task + \"\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"HusseinSafwan02"},"content":" public static void listTasks(String[] taskList, int count) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"HusseinSafwan02"},"content":" for (int i \u003d 0; i \u003c count; i++ ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"HusseinSafwan02"},"content":" int number \u003d i + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"HusseinSafwan02"},"content":" String result \u003d number + \". \" + taskList[i];","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(result);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"HusseinSafwan02"},"content":" String mickey \u003d \"(\\\\_/)\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"HusseinSafwan02"},"content":" \"( •,•)\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"HusseinSafwan02"},"content":" \"(\\\")_(\\\")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(\"RAWR!\\n\" + mickey);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"HusseinSafwan02"},"content":" String intro \u003d \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"HusseinSafwan02"},"content":" \" Hello! I\u0027m Mickey\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"HusseinSafwan02"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"HusseinSafwan02"},"content":" String outro \u003d \"____________________________________________________________\\r\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"HusseinSafwan02"},"content":" \" Bye. See you soon!\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"HusseinSafwan02"},"content":" \"____________________________________________________________\\r\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(intro);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"HusseinSafwan02"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"HusseinSafwan02"},"content":" String userInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"HusseinSafwan02"},"content":" String[] tasks \u003d new String[100];","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"HusseinSafwan02"},"content":" int count \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"HusseinSafwan02"},"content":" while(true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"HusseinSafwan02"},"content":" userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"HusseinSafwan02"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(outro);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"HusseinSafwan02"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"HusseinSafwan02"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.print(\"____________________________________________________________\\r\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"HusseinSafwan02"},"content":" listTasks(tasks, count);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(\"____________________________________________________________\\r\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"HusseinSafwan02"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"HusseinSafwan02"},"content":" tasks[count] \u003d userInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"HusseinSafwan02"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"HusseinSafwan02"},"content":" System.out.println(addComment(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"HusseinSafwan02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"HusseinSafwan02":54,"-":4}}] diff --git a/HusseinSafwan02_ip_master/commits.json b/HusseinSafwan02_ip_master/commits.json index 058aadb7..d9b109f7 100644 --- a/HusseinSafwan02_ip_master/commits.json +++ b/HusseinSafwan02_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"HusseinSafwan02":[{"date":"2024-01-30","commitResults":[{"hash":"8df1c580a7ed3c407beb0b9815d312ef0fbb545d","isMergeCommit":false,"messageTitle":"Rename, Greet and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"ad5e2fc5ec3c44dbbc7986c51ba6c3edef0fd18e","isMergeCommit":false,"messageTitle":"Echo and \"bye\"","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"HusseinSafwan02":{"java":30,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"HusseinSafwan02":147.88887},"authorDisplayNameMap":{"HusseinSafwan02":"CS2103T-T16-4 MUHA..SEIN"}} +{"authorDailyContributionsMap":{"HusseinSafwan02":[{"date":"2024-01-30","commitResults":[{"hash":"8df1c580a7ed3c407beb0b9815d312ef0fbb545d","isMergeCommit":false,"messageTitle":"Rename, Greet and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"ad5e2fc5ec3c44dbbc7986c51ba6c3edef0fd18e","isMergeCommit":false,"messageTitle":"Echo and \"bye\"","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"f8d119250456b5b5ff0e7256e1feb876486fe622","isMergeCommit":false,"messageTitle":"Added ability to store tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"HusseinSafwan02":{"java":54,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"HusseinSafwan02":441.2222},"authorDisplayNameMap":{"HusseinSafwan02":"CS2103T-T16-4 MUHA..SEIN"}} diff --git a/Jajared_ip_master/authorship.json b/Jajared_ip_master/authorship.json index 14a16444..28551e27 100644 --- a/Jajared_ip_master/authorship.json +++ b/Jajared_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" public static Deadline createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" String[] parts \u003d input.split(\"/by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" String description \u003d parts[0].split(\"deadline \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" String by \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" return new Deadline(description, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid deadline format. Please use \u0027deadline description /by date\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":25}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" private static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();// Array of tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" String botName \u003d \"GeePeeTee\";","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" // Welcome Message","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Hello! I\u0027m \" + botName + \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" System.out.println(\"\\n--------------------------------------------------\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" processInput(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":" e.printErrorMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" System.out.println(\"--------------------------------------------------\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Jajared"},"content":" * Process input","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Jajared"},"content":" private static void processInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Jajared"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Jajared"},"content":" printList(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Jajared"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Jajared"},"content":" if (index \u003e getTaskCount()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Jajared"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Jajared"},"content":" if (taskList.get(index - 1) \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + index + \" does not exist.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Jajared"},"content":" taskList.get(index - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Jajared"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Jajared"},"content":" if (index \u003e getTaskCount()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Jajared"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Jajared"},"content":" if (taskList.get(index - 1) \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + index + \" does not exist.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Jajared"},"content":" taskList.get(index - 1).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Jajared"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Jajared"},"content":" if (index \u003e getTaskCount()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Jajared"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Jajared"},"content":" if (taskList.get(index - 1) \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + index + \" does not exist.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Jajared"},"content":" removeTask(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Jajared"},"content":" Event newEvent \u003d Event.createFromInput(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Jajared"},"content":" addTask(newEvent);","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Jajared"},"content":" Deadline newDeadline \u003d Deadline.createFromInput(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"Jajared"},"content":" addTask(newDeadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"Jajared"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Jajared"},"content":" ToDo newToDo \u003d ToDo.createFromInput(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Jajared"},"content":" addTask(newToDo);","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Jajared"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":96,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"Jajared"},"content":" * Prints the list of tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Jajared"},"content":" private static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"Jajared"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"Jajared"},"content":" System.out.println((i + 1) + \". \" + list.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Jajared"},"content":" * Returns the number of tasks in the list","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"Jajared"},"content":" private static int getTaskCount() {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"Jajared"},"content":" return taskList.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"Jajared"},"content":" * Return number of task message","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"Jajared"},"content":" private static String getTaskCountMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Jajared"},"content":" if (getTaskCount() \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"Jajared"},"content":" return \"Now you have \" + getTaskCount() + \" task in the list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"Jajared"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"Jajared"},"content":" return \"Now you have \" + getTaskCount() + \" tasks in the list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"Jajared"},"content":" * Adds a task to the list","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"Jajared"},"content":" private static void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"Jajared"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"Jajared"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"Jajared"},"content":" System.out.println(getTaskCountMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"Jajared"},"content":" * Removes a task from the list","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"Jajared"},"content":" private static void removeTask(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"Jajared"},"content":" System.out.println(taskList.get(index - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Jajared"},"content":" taskList.remove(index - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"Jajared"},"content":" System.out.println(getTaskCountMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Jajared":140,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" public void printErrorMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" System.out.println(getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":9}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected String at;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" public static Event createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" String[] parts \u003d input.split(\"/from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" String description \u003d parts[0].split(\"event \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" String at \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" String by \u003d parts[2];","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" return new Event(description, at, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid event format. Please use \u0027event description /from start /to end\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" public Event(String description, String at, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" return \"[E]\" + super.toString() + \" (from: \" + at + \" to: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":28}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" System.out.println(this);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" System.out.println(this);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":31}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" public static ToDo createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" String description \u003d input.split(\"todo \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" return new ToDo(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid todo format. Please use \u0027todo description\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":7}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" public static Deadline createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" String[] parts \u003d input.split(\"/by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" String description \u003d parts[0].split(\"deadline \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" String by \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" return new Deadline(description, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid deadline format. Please use \u0027deadline description /by date\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":" return \"D | \" + (this.isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":30}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" public void printErrorMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" System.out.println(getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":9}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected String at;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" public static Event createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" String[] parts \u003d input.split(\"/from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" String description \u003d parts[0].split(\"event \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" String at \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" String by \u003d parts[2];","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" return new Event(description, at, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid event format. Please use \u0027event description /from start /to end\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" public Event(String description, String at, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" return \"[E]\" + super.toString() + \" (from: \" + at + \" to: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jajared"},"content":" return \"E | \" + (this.isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + at + \" | \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":33}},{"path":"src/main/java/GeePeeTee.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":"public class GeePeeTee {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" private static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();// Array of tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" taskList \u003d loadTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" System.out.println(\"File not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Error loading the task list file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" e.printErrorMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" String botName \u003d \"GeePeeTee\";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" // Welcome Message","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Hello! I\u0027m \" + botName + \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":" System.out.println(\"\\n--------------------------------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jajared"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jajared"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jajared"},"content":" processInput(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jajared"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jajared"},"content":" e.printErrorMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jajared"},"content":" System.out.println(\"--------------------------------------------------\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Jajared"},"content":" * Process input","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Jajared"},"content":" private static void processInput(String input) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Jajared"},"content":" String command \u003d input.split(\" \")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Jajared"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Jajared"},"content":" // Help command","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Jajared"},"content":" case \"help\":","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Jajared"},"content":" getListOfCommands();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Jajared"},"content":" // Bye command","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Jajared"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Jajared"},"content":" // List command","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Jajared"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Jajared"},"content":" printList(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Jajared"},"content":" // Mark command","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Jajared"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Jajared"},"content":" int markIndex \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Jajared"},"content":" if (markIndex \u003e getTaskCount()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Jajared"},"content":" if (markIndex \u003c\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Jajared"},"content":" Task taskToMark \u003d taskList.get(markIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Jajared"},"content":" if (taskToMark \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + markIndex + \" does not exist.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Jajared"},"content":" taskToMark.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Jajared"},"content":" System.out.println(taskToMark);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Jajared"},"content":" // Unmark command","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Jajared"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Jajared"},"content":" int unmarkIndex \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Jajared"},"content":" if (unmarkIndex \u003e getTaskCount()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Jajared"},"content":" if (unmarkIndex \u003c\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Jajared"},"content":" Task taskToUnmark \u003d taskList.get(unmarkIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Jajared"},"content":" if (taskToUnmark \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + unmarkIndex + \" does not exist.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Jajared"},"content":" taskToUnmark.unmarkAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Jajared"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Jajared"},"content":" System.out.println(taskToUnmark);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Jajared"},"content":" // Delete command","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Jajared"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Jajared"},"content":" if (input.trim().equals(\"delete\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Jajared"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Jajared"},"content":" if (index \u003e getTaskCount()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be greater than the number of tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Jajared"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The index of a task cannot be 0 or negative.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Jajared"},"content":" if (taskList.get(index - 1) \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"The task at index \" + index + \" does not exist.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Jajared"},"content":" removeTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Jajared"},"content":" // Create event command","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Jajared"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Jajared"},"content":" Event newEvent \u003d Event.createFromInput(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Jajared"},"content":" addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Jajared"},"content":" // Create deadline command","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Jajared"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Jajared"},"content":" Deadline newDeadline \u003d Deadline.createFromInput(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Jajared"},"content":" addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Jajared"},"content":" // Create todo command","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Jajared"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Jajared"},"content":" ToDo newToDo \u003d ToDo.createFromInput(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Jajared"},"content":" addTask(newToDo);","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Jajared"},"content":" saveTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Jajared"},"content":" // Invalid command","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Jajared"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Jajared"},"content":" * Prints the list of tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Jajared"},"content":" private static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Jajared"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Jajared"},"content":" System.out.println((i + 1) + \". \" + list.get(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Jajared"},"content":" * Returns the number of tasks in the list","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Jajared"},"content":" private static int getTaskCount() {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"Jajared"},"content":" return taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Jajared"},"content":" * Return number of task message","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Jajared"},"content":" private static String getTaskCountMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Jajared"},"content":" if (getTaskCount() \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Jajared"},"content":" return \"Now you have \" + getTaskCount() + \" task in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Jajared"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Jajared"},"content":" return \"Now you have \" + getTaskCount() + \" tasks in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Jajared"},"content":" * Prints available commands","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Jajared"},"content":" private static void getListOfCommands() {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Here are the available commands:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Jajared"},"content":" System.out.println(\"list\");","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"Jajared"},"content":" System.out.println(\"todo \u003cdescription\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Jajared"},"content":" System.out.println(\"deadline \u003cdescription\u003e /by \u003cdate\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Jajared"},"content":" System.out.println(\"event \u003cdescription\u003e /from \u003cdate\u003e /to \u003cdate\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"Jajared"},"content":" System.out.println(\"delete \u003cindex\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"Jajared"},"content":" System.out.println(\"mark \u003cindex\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"Jajared"},"content":" System.out.println(\"unmark \u003cindex\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Jajared"},"content":" System.out.println(\"bye\");","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Jajared"},"content":" * Adds a task to the list","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Jajared"},"content":" private static void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"Jajared"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"Jajared"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"Jajared"},"content":" System.out.println(getTaskCountMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Jajared"},"content":" * Removes a task from the list","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"Jajared"},"content":" private static void removeTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"Jajared"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"Jajared"},"content":" System.out.println(taskList.get(index - 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"Jajared"},"content":" taskList.remove(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"Jajared"},"content":" System.out.println(getTaskCountMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"Jajared"},"content":" * Load task list from hard disk","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Jajared"},"content":" private static ArrayList\u003cTask\u003e loadTaskList() throws FileNotFoundException, DukeException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"Jajared"},"content":" ArrayList\u003cTask\u003e result \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"Jajared"},"content":" File f \u003d new File(\"./data/GeePeeTee.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"Jajared"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"Jajared"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"Jajared"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Jajared"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"Jajared"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"Jajared"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"Jajared"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"Jajared"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"Jajared"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"Jajared"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"Jajared"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"Jajared"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"Jajared"},"content":" task \u003d new Deadline(description, parts[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"Jajared"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"Jajared"},"content":" task \u003d new Event(description, parts[3], parts[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"Jajared"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"Jajared"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"File contains invalid task type.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"Jajared"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"Jajared"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"Jajared"},"content":" result.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"Jajared"},"content":" s.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"Jajared"},"content":" return result;","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"Jajared"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"Jajared"},"content":" * Save task list to hard disk","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"Jajared"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"Jajared"},"content":" private static void saveTaskList() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"Jajared"},"content":" File file \u003d new File(\"./data/GeePeeTee.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"Jajared"},"content":" try (FileWriter fw \u003d new FileWriter(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"Jajared"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"Jajared"},"content":" fw.write(task.toFileString() + System.lineSeparator());","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"Jajared"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"Jajared"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Error saving the task list file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jajared":272}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Jajared"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jajared"},"content":" return (this.isDone ? \"1\" : \"0\") + \" | \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":31}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":" public static ToDo createFromInput(String input) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":" String description \u003d input.split(\"todo \")[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":" return new ToDo(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jajared"},"content":" throw new DukeException(\"Invalid todo format. Please use \u0027todo description\u0027.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jajared"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jajared"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Jajared"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Jajared"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Jajared"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jajared"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jajared"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jajared"},"content":" return \"T | \" + (this.isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jajared"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jajared"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":25}},{"path":"src/main/java/data/GeePeeTee.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"E | 0 | borrow book | Now | tomorrow","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jajared":1}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jajared"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jajared"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jajared"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jajared"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jajared"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jajared"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jajared"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jajared":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":"Jajared"},"content":"java -classpath ..\\bin GeePeeTee \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"-":20,"Jajared":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":"Jajared"},"content":"java -classpath ../bin GeePeeTee \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"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,"Jajared":1}}] diff --git a/Jajared_ip_master/commits.json b/Jajared_ip_master/commits.json index 559e28cc..9cc04e51 100644 --- a/Jajared_ip_master/commits.json +++ b/Jajared_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Jajared":[{"date":"2024-01-25","commitResults":[{"hash":"480177d13d5e5e9325c31e076719e37c34016487","isMergeCommit":false,"messageTitle":"refactor: changed message and updated git ignore file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"b672d8722896fd139a10f85457697227e6cb4e03","isMergeCommit":false,"messageTitle":"feat: added user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"d51b81672b6ca4aa48691dc655e3fe9a06acfdf2","isMergeCommit":false,"messageTitle":"feat: added task list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"cb47f8fef3c677c854705fe4e1fad97917ba4a6a","isMergeCommit":false,"messageTitle":"feat: added mark and list functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":8}}},{"hash":"b96f4635aeb1ab327883c11b627a63998f6cec8b","isMergeCommit":false,"messageTitle":"feat: added event, deadline and todo","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":9}}},{"hash":"9f1b8dab812c7d45f4c3af3723b4b60ac8c8384c","isMergeCommit":false,"messageTitle":"test: added simple automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"539da1d7176fc049f9ade8d73398488de7050feb","isMergeCommit":false,"messageTitle":"refactor: added error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":37}}},{"hash":"3170ca15ff3affcf67074609d2188094a72a8d53","isMergeCommit":false,"messageTitle":"feat: added delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":69}}}]}]},"authorFileTypeContributionMap":{"Jajared":{"java":253,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"Jajared":32982.98},"authorDisplayNameMap":{"Jajared":"CS2103T-T09-4 JARE.. JIE"}} +{"authorDailyContributionsMap":{"Jajared":[{"date":"2024-01-25","commitResults":[{"hash":"480177d13d5e5e9325c31e076719e37c34016487","isMergeCommit":false,"messageTitle":"refactor: changed message and updated git ignore file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"b672d8722896fd139a10f85457697227e6cb4e03","isMergeCommit":false,"messageTitle":"feat: added user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"d51b81672b6ca4aa48691dc655e3fe9a06acfdf2","isMergeCommit":false,"messageTitle":"feat: added task list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"cb47f8fef3c677c854705fe4e1fad97917ba4a6a","isMergeCommit":false,"messageTitle":"feat: added mark and list functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":8}}},{"hash":"b96f4635aeb1ab327883c11b627a63998f6cec8b","isMergeCommit":false,"messageTitle":"feat: added event, deadline and todo","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":9}}},{"hash":"9f1b8dab812c7d45f4c3af3723b4b60ac8c8384c","isMergeCommit":false,"messageTitle":"test: added simple automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"539da1d7176fc049f9ade8d73398488de7050feb","isMergeCommit":false,"messageTitle":"refactor: added error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":37}}},{"hash":"3170ca15ff3affcf67074609d2188094a72a8d53","isMergeCommit":false,"messageTitle":"feat: added delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":69}}}]},{"date":"2024-01-30","commitResults":[{"hash":"ea2b1b6cce5f943c4b190d098755dc64c9ba6777","isMergeCommit":false,"messageTitle":"feat: add file save functionality","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":292,"deletions":150},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Jajared":{"java":400,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":8}},"authorContributionVariance":{"Jajared":32617.25},"authorDisplayNameMap":{"Jajared":"CS2103T-T09-4 JARE.. JIE"}} diff --git a/Jawad280_ip_master/authorship.json b/Jawad280_ip_master/authorship.json index 056a716f..4967cfac 100644 --- a/Jawad280_ip_master/authorship.json +++ b/Jawad280_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Tobias.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"import command.Command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class Tobias {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private Storage storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" private Ui ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" public Tobias(String filePath) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" storage.createLocalStorage();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" tasks \u003d storage.localToCurrent();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" public void run() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" ui.helloPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" Command c \u003d Parser.parseCommands(fullCommand, tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" new Tobias(\"data/Tobias.txt\").run();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":43}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":9}},{"path":"src/main/java/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public DeadlineCommand(String description, LocalDateTime deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public DeadlineCommand(String description, LocalDateTime deadline, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new Deadline(description, isDone, deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":40}},{"path":"src/main/java/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public DeleteCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" tasks.removeFromList(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Noted, I\u0027ve removed this task: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":29}},{"path":"src/main/java/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Event;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new Event(description, isDone, from, to);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":44}},{"path":"src/main/java/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" storage.storeToLocal(tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" ui.goodbyePrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" return true;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":19}},{"path":"src/main/java/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" tasks.printList();","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":18}},{"path":"src/main/java/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public MarkCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" curr.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":31}},{"path":"src/main/java/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.ToDo;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public TodoCommand(String description, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":33}},{"path":"src/main/java/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public UnmarkCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" curr.markAsUndone();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done : \");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":29}},{"path":"src/main/java/exception/TobiasException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package exception;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"public class TobiasException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":" public TobiasException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" public void printMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" String divider \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\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\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\u003d\u003d\u003d\u003d\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" System.out.println(getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":14}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import command.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"public class Parser {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public static LocalDateTime dateFromString(String dateTime) throws TobiasException {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" return LocalDateTime.parse(dateTime.trim(), DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly enter the date or time in this format : dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public static Command parseCommands(String command, TaskList tasks) throws TobiasException {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" if(command.equals(\"list\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ListCommand lc \u003d new ListCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" return lc;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(4,5);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after todo!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(5);","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" TodoCommand td \u003d new TodoCommand(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" return td;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" } catch(TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(8,9);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after deadline!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" int byIndex \u003d command.indexOf(\"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" if (byIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please use \u0027/by\u0027 to specify the deadline!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(9, byIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" int deadlineIndex \u003d byIndex+4;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" if (deadlineIndex \u003e command.length()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a date \u0026 time in this format : dd-MM-yyyy HHmm !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" String deadline \u003d command.substring(byIndex + 4);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" LocalDateTime dd \u003d dateFromString(deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" if (deadline.isEmpty() || deadline.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a date \u0026 time in this format : dd-MM-yyyy HHmm !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(description, dd);","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" return dc;","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(5,6);","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after event!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" int fromIndex \u003d command.indexOf(\"/from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" int toIndex \u003d command.indexOf(\"/to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003d\u003d -1 \u0026\u0026 toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from and /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" if (toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003e toIndex \u0026\u0026 toIndex \u003e 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, you have to enter /from before /to !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":" String from \u003d command.substring(fromIndex + 6, toIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"Jawad280"},"content":" if (from.isEmpty() || from.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"Jawad280"},"content":" if ((toIndex + 4) \u003e command.length()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"Jawad280"},"content":" String to \u003d command.substring(toIndex + 4);","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"Jawad280"},"content":" if (to.isEmpty() || to.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(6, fromIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"Jawad280"},"content":" LocalDateTime f \u003d dateFromString(from);","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"Jawad280"},"content":" LocalDateTime t \u003d dateFromString(to);","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"Jawad280"},"content":" EventCommand ec \u003d new EventCommand(description, f, t);","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"Jawad280"},"content":" return ec;","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":149,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to MARK them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":158,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":159,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(4,5);","lastModifiedDate":"2024-01-26"},{"lineNumber":160,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":161,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":162,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after mark!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(5)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" MarkCommand mc \u003d new MarkCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"Jawad280"},"content":" return mc;","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":171,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":176,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":177,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":178,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to UNMARK them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"unmark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":187,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":188,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":189,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(6,7);","lastModifiedDate":"2024-01-26"},{"lineNumber":190,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":192,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after unmark!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":193,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":194,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":195,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":196,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":197,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":198,"author":{"gitId":"Jawad280"},"content":" UnmarkCommand uc \u003d new UnmarkCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"Jawad280"},"content":" return uc;","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":203,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":208,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":209,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":210,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to DELETE them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":213,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":214,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":217,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":218,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":219,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(6,7);","lastModifiedDate":"2024-01-26"},{"lineNumber":220,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":221,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":222,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after delete!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":224,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":225,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":226,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":227,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":228,"author":{"gitId":"Jawad280"},"content":" DeleteCommand dc \u003d new DeleteCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":229,"author":{"gitId":"Jawad280"},"content":" return dc;","lastModifiedDate":"2024-01-26"},{"lineNumber":230,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":231,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":232,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":233,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":234,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":235,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":236,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":237,"author":{"gitId":"Jawad280"},"content":" else if (command.equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":238,"author":{"gitId":"Jawad280"},"content":" ExitCommand ec \u003d new ExitCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":239,"author":{"gitId":"Jawad280"},"content":" return ec;","lastModifiedDate":"2024-01-26"},{"lineNumber":240,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":241,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(","lastModifiedDate":"2024-01-26"},{"lineNumber":242,"author":{"gitId":"Jawad280"},"content":" \" You can ask me stuff like : \u0027bye\u0027, \u0027list\u0027, \u0027mark\u0027, \u0027unmark\u0027,\u0027delete\u0027\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":243,"author":{"gitId":"Jawad280"},"content":" \" You can ask me to create these : \u0027todo\u0027, \u0027deadline\u0027, \u0027event\u0027\");","lastModifiedDate":"2024-01-26"},{"lineNumber":244,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":245,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":246,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":246}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.io.File;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"public class Storage {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" private String filePath;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public void createLocalStorage() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" File created successfully: \" + file.getAbsolutePath());","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" File alr exists: \" + file.getAbsolutePath());","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" public static void localToList(String data, TaskList tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" if (data.startsWith(\"T\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" else if (data.startsWith(\"D\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" int by \u003d data.indexOf(\"|by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5, by);","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" String byDate \u003d data.substring(by+3);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" LocalDateTime dd \u003d Parser.dateFromString(byDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new Deadline(description, isDone, dd);","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" else if (data.startsWith(\"E\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" int from \u003d data.indexOf(\"|from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" int to \u003d data.indexOf(\"|to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5, from);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" String fromDate \u003d data.substring(from+5, to);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" String toDate \u003d data.substring(to+3);","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":" LocalDateTime f \u003d Parser.dateFromString(fromDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" LocalDateTime t \u003d Parser.dateFromString(toDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new Event(description, isDone, f, t);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" else {","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Saved file is corrupted!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Jawad280"},"content":" System.out.println(\"local to list function \" + e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Jawad280"},"content":" public TaskList localToCurrent() {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" localToList(s.nextLine(), tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" s.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" System.out.println(\"local to current function \" + e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":" return tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":" public void storeToLocal(TaskList tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Jawad280"},"content":" String result \u003d tasks.saveMechanism();","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":" FileWriter fw \u003d new FileWriter(\"data/tobias.txt\");","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":" fw.write(result);","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" fw.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":116}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"public class TaskList {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public TaskList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public void addToList(Task task) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" public void removeFromList(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" public String saveMechanism() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" String result \u003d \"\";","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" result +\u003d task.storagePrinter() + System.lineSeparator();","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" return result;","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" public int taskNum() {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" return tasks.size();","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" public void printList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" int index \u003d tasks.indexOf(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" task.taskPrinter(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" Ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":61}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class Ui {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" private static final String DIVIDER \u003d \" ---------------------------------------------------------------------------------------\";","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private static final String BOTNAME \u003d \"TOBIAS\";","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void helloPrinter() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Hello there! I\u0027m \" + BOTNAME);","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" What can I do for you today ?\");","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public void goodbyePrinter() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" I say this with a heavy heart but Goodbye my lover :( Hope to see you soon!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public void addedTaskPrinter(Task task, int size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Got it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" task.taskPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Now you have \" + size + \" tasks in the list!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" public static void printDivider() {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" String command \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" return command;","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":40}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"todo Run","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"deadline Submission /by Friday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"event Openhouse /from 25 Jan /to 28 Jan","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":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":"Jawad280"},"content":"java -classpath ../bin Tobias \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"Jawad280":1,"-":37}}] +[{"path":"src/main/java/Tobias.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"import command.Command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class Tobias {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private Storage storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" private Ui ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" public Tobias(String filePath) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" storage.createLocalStorage();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" tasks \u003d storage.localToCurrent();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" public void run() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" ui.helloPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" Command c \u003d Parser.parseCommands(fullCommand, tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" new Tobias(\"data/Tobias.txt\").run();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":43}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":9}},{"path":"src/main/java/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public DeadlineCommand(String description, LocalDateTime deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public DeadlineCommand(String description, LocalDateTime deadline, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new Deadline(description, isDone, deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":40}},{"path":"src/main/java/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public DeleteCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" tasks.removeFromList(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Noted, I\u0027ve removed this task: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":29}},{"path":"src/main/java/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Event;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" public EventCommand(String description, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new Event(description, isDone, from, to);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":44}},{"path":"src/main/java/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" storage.storeToLocal(tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" ui.goodbyePrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" return true;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":19}},{"path":"src/main/java/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" tasks.printList();","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":18}},{"path":"src/main/java/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public MarkCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" curr.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":31}},{"path":"src/main/java/command/NoreplyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class NoreplyCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jawad280":18}},{"path":"src/main/java/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.ToDo;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public TodoCommand(String description, boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" Task task \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" ui.addedTaskPrinter(task, tasks.taskNum());","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":33}},{"path":"src/main/java/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package command;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private int taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public UnmarkCommand(int taskIndex) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" Task curr \u003d tasks.getTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" curr.markAsUndone();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done : \");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" curr.taskPrinter(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":29}},{"path":"src/main/java/exception/TobiasException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package exception;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"public class TobiasException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":" public TobiasException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" public void printMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" String divider \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\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\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\u003d\u003d\u003d\u003d\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" System.out.println(getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":14}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import command.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"public class Parser {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public static LocalDateTime dateFromString(String dateTime) throws TobiasException {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" return LocalDateTime.parse(dateTime.trim(), DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly enter the date or time in this format : dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public static Command parseCommands(String command, TaskList tasks) throws TobiasException {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" if(command.equals(\"list\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" ListCommand lc \u003d new ListCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" return lc;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(4,5);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after todo!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(5);","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" TodoCommand td \u003d new TodoCommand(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" return td;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" } catch(TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(8,9);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after deadline!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" int byIndex \u003d command.indexOf(\"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" if (byIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please use \u0027/by\u0027 to specify the deadline!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(9, byIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" int deadlineIndex \u003d byIndex+4;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" if (deadlineIndex \u003e command.length()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a date \u0026 time in this format : dd-MM-yyyy HHmm !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" String deadline \u003d command.substring(byIndex + 4);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" LocalDateTime dd \u003d dateFromString(deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" if (deadline.isEmpty() || deadline.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a date \u0026 time in this format : dd-MM-yyyy HHmm !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(description, dd);","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" return dc;","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a description !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(5,6);","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after event!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" int fromIndex \u003d command.indexOf(\"/from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" int toIndex \u003d command.indexOf(\"/to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003d\u003d -1 \u0026\u0026 toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from and /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" if (toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" if (fromIndex \u003e toIndex \u0026\u0026 toIndex \u003e 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, you have to enter /from before /to !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":" String from \u003d command.substring(fromIndex + 6, toIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"Jawad280"},"content":" if (from.isEmpty() || from.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /from date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"Jawad280"},"content":" if ((toIndex + 4) \u003e command.length()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"Jawad280"},"content":" String to \u003d command.substring(toIndex + 4);","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"Jawad280"},"content":" if (to.isEmpty() || to.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Hey, please enter a /to date/day/time!!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"Jawad280"},"content":" String description \u003d command.substring(6, fromIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"Jawad280"},"content":" LocalDateTime f \u003d dateFromString(from);","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"Jawad280"},"content":" LocalDateTime t \u003d dateFromString(to);","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"Jawad280"},"content":" EventCommand ec \u003d new EventCommand(description, f, t);","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"Jawad280"},"content":" return ec;","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":149,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to MARK them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":158,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":159,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(4,5);","lastModifiedDate":"2024-01-26"},{"lineNumber":160,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":161,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":162,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after mark!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(5)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" MarkCommand mc \u003d new MarkCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"Jawad280"},"content":" return mc;","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":171,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":176,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":177,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":178,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to UNMARK them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"unmark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":187,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":188,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":189,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(6,7);","lastModifiedDate":"2024-01-26"},{"lineNumber":190,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":192,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after unmark!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":193,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":194,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":195,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":196,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":197,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":198,"author":{"gitId":"Jawad280"},"content":" UnmarkCommand uc \u003d new UnmarkCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"Jawad280"},"content":" return uc;","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":203,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":" else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":208,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":209,"author":{"gitId":"Jawad280"},"content":" int size \u003d tasks.taskNum();","lastModifiedDate":"2024-01-26"},{"lineNumber":210,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment, add some todos/events/deadlines to DELETE them!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":213,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":214,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" if (command.equals(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" No index provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":217,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":218,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":219,"author":{"gitId":"Jawad280"},"content":" String blank \u003d command.substring(6,7);","lastModifiedDate":"2024-01-26"},{"lineNumber":220,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":221,"author":{"gitId":"Jawad280"},"content":" if (!blank.isBlank()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":222,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Kindly type your task a space after delete!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":224,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":225,"author":{"gitId":"Jawad280"},"content":" int index \u003d Integer.parseInt(command.substring(7)) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":226,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":227,"author":{"gitId":"Jawad280"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":228,"author":{"gitId":"Jawad280"},"content":" DeleteCommand dc \u003d new DeleteCommand(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":229,"author":{"gitId":"Jawad280"},"content":" return dc;","lastModifiedDate":"2024-01-26"},{"lineNumber":230,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":231,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Invalid number provided! Please give a valid index from 1 to \" + size +\" !!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":232,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":233,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":234,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":235,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":236,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":237,"author":{"gitId":"Jawad280"},"content":" else if (command.equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":238,"author":{"gitId":"Jawad280"},"content":" ExitCommand ec \u003d new ExitCommand();","lastModifiedDate":"2024-01-26"},{"lineNumber":239,"author":{"gitId":"Jawad280"},"content":" return ec;","lastModifiedDate":"2024-01-26"},{"lineNumber":240,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":241,"author":{"gitId":"Jawad280"},"content":" else {","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(","lastModifiedDate":"2024-01-26"},{"lineNumber":243,"author":{"gitId":"Jawad280"},"content":" \" You can ask me stuff like : \u0027bye\u0027, \u0027list\u0027, \u0027mark\u0027, \u0027unmark\u0027,\u0027delete\u0027\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":244,"author":{"gitId":"Jawad280"},"content":" \" You can ask me to create these : \u0027todo\u0027, \u0027deadline\u0027, \u0027event\u0027\");","lastModifiedDate":"2024-01-26"},{"lineNumber":245,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":246,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":247,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"Jawad280"},"content":" return new NoreplyCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":250}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.*;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.io.File;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"public class Storage {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" private String filePath;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public void createLocalStorage() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" File created successfully: \" + file.getAbsolutePath());","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" File alr exists: \" + file.getAbsolutePath());","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" public static void localToList(String data, TaskList tasks) throws TobiasException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" if (data.startsWith(\"T\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" else if (data.startsWith(\"D\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" int by \u003d data.indexOf(\"|by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5, by);","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" String byDate \u003d data.substring(by+3);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" LocalDateTime dd \u003d Parser.dateFromString(byDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new Deadline(description, isDone, dd);","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" else if (data.startsWith(\"E\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" boolean isDone \u003d Integer.parseInt(data.substring(8,9)) \u003d\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" int desc \u003d data.indexOf(\"|desc\");","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" int from \u003d data.indexOf(\"|from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" int to \u003d data.indexOf(\"|to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" String description \u003d data.substring(desc+5, from);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" String fromDate \u003d data.substring(from+5, to);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" String toDate \u003d data.substring(to+3);","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":" LocalDateTime f \u003d Parser.dateFromString(fromDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" LocalDateTime t \u003d Parser.dateFromString(toDate);","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":" Task newTask \u003d new Event(description, isDone, f, t);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":" tasks.addToList(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" else {","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Saved file is corrupted!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Jawad280"},"content":" System.out.println(\"local to list function \" + e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Jawad280"},"content":" public TaskList localToCurrent() {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" localToList(s.nextLine(), tasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" s.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException tE) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" tE.printMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":" System.out.println(\"local to current function \" + e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":" return tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":" public void storeToLocal(TaskList tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" String result \u003d tasks.saveMechanism();","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" FileWriter fw \u003d new FileWriter(\"data/tobias.txt\");","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" fw.write(result);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" fw.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":118}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"public class TaskList {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public TaskList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" public void addToList(Task task) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" public void removeFromList(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" public String saveMechanism() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" String result \u003d \"\";","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" result +\u003d task.storagePrinter() + System.lineSeparator();","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" return result;","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" public int taskNum() {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" return tasks.size();","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" public void printList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" throw new TobiasException(\" Your list is empty at the moment !\");","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" int index \u003d tasks.indexOf(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" task.taskPrinter(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" Ui.printDivider();","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":61}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package ui;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"public class Ui {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" private static final String DIVIDER \u003d \" ---------------------------------------------------------------------------------------\";","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":" private static final String BOTNAME \u003d \"TOBIAS\";","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public void helloPrinter() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Hello there! I\u0027m \" + BOTNAME);","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" What can I do for you today ?\");","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public void goodbyePrinter() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" I say this with a heavy heart but Goodbye my lover :( Hope to see you soon!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" public void addedTaskPrinter(Task task, int size) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Got it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" task.taskPrinter();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" System.out.println(\" Now you have \" + size + \" tasks in the list!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" public static void printDivider() {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" String command \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" return command;","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Jawad280":40}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public void no_from_and_to_for_events() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" Parser.parseCommands(\"event marathon\", testList);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" Exception m \u003d new TobiasException(\" Hey, please enter a /from and /to date/day/time!!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" assertEquals(m.getMessage(), e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" public void invalid_date_syntax() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" Parser.parseCommands(\"deadline subission /from 11-january-2023 5am\", testList);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" Exception m \u003d new TobiasException(\" Hey, please enter a date \u0026 time in this format : dd-MM-yyyy HHmm !\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" assertEquals(m.getMessage(), e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jawad280":32}},{"path":"src/test/java/storage/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import exception.TobiasException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class StorageTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" public void corrupted_saved_file() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" // Instead of D for deadline, the file is corrupted and adds a G instead","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" String testStoredCommand \u003d \"G|isdone1|descmarathon |from15-03-2024 1000|to15-03-2024 1600\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" Storage.localToList(testStoredCommand, testList);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" assert(e.getMessage().equals(\" Saved file is corrupted!\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" public void correct_stored_data_is_loaded() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" // Should store an event command that is :","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" // isDone: true,","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" // description : marathon,","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" // from \u0026 to : 15/03/2024 10 am to 15/03/2024 4pm","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" String testStoredCommand \u003d \"E|isdone1|descmarathon |from15-03-2024 1000|to15-03-2024 1600\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" LocalDateTime from \u003d LocalDateTime.parse(\"15-03-2024 1000\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" LocalDateTime to \u003d LocalDateTime.parse(\"15-03-2024 1600\", DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" Task expected \u003d new Event(\"marathon \", true, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" Storage.localToList(testStoredCommand, testList);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" assert(expected.equals(testList.getTask(0)));","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" } catch (TobiasException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" e.printMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jawad280":46}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"todo Run","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"deadline Submission /by Friday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"event Openhouse /from 25 Jan /to 28 Jan","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Jawad280":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":"Jawad280"},"content":"java -classpath ../bin Tobias \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"Jawad280":1,"-":37}}] diff --git a/Jawad280_ip_master/commits.json b/Jawad280_ip_master/commits.json index f5944479..3884e9a6 100644 --- a/Jawad280_ip_master/commits.json +++ b/Jawad280_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Jawad280":[{"date":"2024-01-25","commitResults":[{"hash":"eda016a6895c6d68a6c31bdaef554a79d2147310","isMergeCommit":false,"messageTitle":"Level 0 added","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"669b67933075f2bc73d239c47594b1f7dc6b1911","isMergeCommit":false,"messageTitle":"level-1 Echo updated","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":10}}},{"hash":"e2bca9cab6dc9dd1132e4df6d1b51b345b5f4239","isMergeCommit":false,"messageTitle":"Level 2 : Added list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"2b6359c9bd1504feebb249ee4d23ea0efa85560d","isMergeCommit":false,"messageTitle":"Level 3 : Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"ca79b74af7dfea51e72b963e0853942836bb01d9","isMergeCommit":false,"messageTitle":"Level 4 : Todos, Event, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":5}}},{"hash":"385aa2aa8fa7ffc859d212bddd2eb4ee4ed79194","isMergeCommit":false,"messageTitle":"accidentally ignored the external classes, adding them back","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":0}}},{"hash":"bcf8ffd3b57ae915e51470b4b32c6d9f28d38cec","isMergeCommit":false,"messageTitle":"Renamed Duke, Added TobiasExceptions and Delete function","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":275,"deletions":124}}},{"hash":"5f4914d5db87b878d794ca86f46083dc3dd12bdb","isMergeCommit":false,"messageTitle":"Simplified taskPrinter() \u0026 added a checkmark","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":22}}},{"hash":"9fa1370cacac642ef5d7167704f157869eecfc91","isMergeCommit":false,"messageTitle":"A-TextUiTesting added","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"866add7ebf38ad3e719ae072fb66fb4feeee6963","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":8}}},{"hash":"f6bad2f713df0fa8d3ad8a15e5fb879bbbedcc6d","isMergeCommit":false,"messageTitle":"Level 8 - Handling DateTime Objects","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":24}}},{"hash":"047f42d3994b7827576975c03bc296d88ed57259","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":656,"deletions":388}}},{"hash":"14d97cfa3bf3cb6c2c1f50b5c4f3279edb4f5e32","isMergeCommit":false,"messageTitle":"A-Packages : Partitioned the classes into respective packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":143}}},{"hash":"7423056a189c7bf251ba7cf8a839062c3cffd64a","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027 into branch-Level-8","messageBody":"* commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027:\n Bump gradle and lib version\n Add Gradle support\n docs/README.md: Tweak document template\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Jawad280":{"java":772,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"Jawad280":278355.97},"authorDisplayNameMap":{"Jawad280":"CS2103T-F14-1 JAWA..THAB"}} +{"authorDailyContributionsMap":{"Jawad280":[{"date":"2024-01-25","commitResults":[{"hash":"eda016a6895c6d68a6c31bdaef554a79d2147310","isMergeCommit":false,"messageTitle":"Level 0 added","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"669b67933075f2bc73d239c47594b1f7dc6b1911","isMergeCommit":false,"messageTitle":"level-1 Echo updated","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":10}}},{"hash":"e2bca9cab6dc9dd1132e4df6d1b51b345b5f4239","isMergeCommit":false,"messageTitle":"Level 2 : Added list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"2b6359c9bd1504feebb249ee4d23ea0efa85560d","isMergeCommit":false,"messageTitle":"Level 3 : Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"ca79b74af7dfea51e72b963e0853942836bb01d9","isMergeCommit":false,"messageTitle":"Level 4 : Todos, Event, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":5}}},{"hash":"385aa2aa8fa7ffc859d212bddd2eb4ee4ed79194","isMergeCommit":false,"messageTitle":"accidentally ignored the external classes, adding them back","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":0}}},{"hash":"bcf8ffd3b57ae915e51470b4b32c6d9f28d38cec","isMergeCommit":false,"messageTitle":"Renamed Duke, Added TobiasExceptions and Delete function","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":275,"deletions":124}}},{"hash":"5f4914d5db87b878d794ca86f46083dc3dd12bdb","isMergeCommit":false,"messageTitle":"Simplified taskPrinter() \u0026 added a checkmark","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":22}}},{"hash":"9fa1370cacac642ef5d7167704f157869eecfc91","isMergeCommit":false,"messageTitle":"A-TextUiTesting added","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"866add7ebf38ad3e719ae072fb66fb4feeee6963","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":169,"deletions":8}}},{"hash":"f6bad2f713df0fa8d3ad8a15e5fb879bbbedcc6d","isMergeCommit":false,"messageTitle":"Level 8 - Handling DateTime Objects","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":24}}},{"hash":"047f42d3994b7827576975c03bc296d88ed57259","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":656,"deletions":388}}},{"hash":"14d97cfa3bf3cb6c2c1f50b5c4f3279edb4f5e32","isMergeCommit":false,"messageTitle":"A-Packages : Partitioned the classes into respective packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":143}}},{"hash":"7423056a189c7bf251ba7cf8a839062c3cffd64a","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027 into branch-Level-8","messageBody":"* commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027:\n Bump gradle and lib version\n Add Gradle support\n docs/README.md: Tweak document template\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"0c14dc03c62a4e20576a82b3cb33325fd920727b","isMergeCommit":false,"messageTitle":"A-Gradle \u0026 A-JUnit \u0026 A-Jar","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"Jawad280":{"java":874,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"Jawad280":200452.88},"authorDisplayNameMap":{"Jawad280":"CS2103T-F14-1 JAWA..THAB"}} diff --git a/Jerome-j_ip_master/authorship.json b/Jerome-j_ip_master/authorship.json index b53a4e18..49c17e4e 100644 --- a/Jerome-j_ip_master/authorship.json +++ b/Jerome-j_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"database.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"D | cook coconut milk | true | Sunday","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"T | abcd | true","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"T | abcd | true","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":3}},{"path":"src/main/java/CustomExceptions/BlankEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package CustomExceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class BlankEventException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public BlankEventException(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":7}},{"path":"src/main/java/CustomExceptions/MalformedUserInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package CustomExceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class MalformedUserInputException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public MalformedUserInputException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":7}},{"path":"src/main/java/CustomExceptions/NoTaskCreatedYetException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package CustomExceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class NoTaskCreatedYetException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public NoTaskCreatedYetException(){","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" super(\"There appears to be some problem with your user input.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":7}},{"path":"src/main/java/CustomExceptions/TooManyTasksException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package CustomExceptions;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class TooManyTasksException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public TooManyTasksException(){","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" super(\"There are too many tasks.. So much that the array cannot hold anymore.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":7}},{"path":"src/main/java/DataStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.NoTaskCreatedYetException;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.TooManyTasksException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"import java.util.LinkedList;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"public class DataStorage {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" private ArrayList\u003cTask\u003e tasksList;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" private int taskCount;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" private int maxTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" private File file;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" public DataStorage(int maxTask, String fileName) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" this.maxTask \u003d maxTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" this.tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" this.taskCount \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" this.file \u003d new File(fileName);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_files_create.asp","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" if (this.file.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t The database has not been created. A new database has been created at the following location: \" + this.file.getAbsolutePath());","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" // This means that the file already exists here.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Using the existing database located at: \" + this.file.getAbsolutePath());","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" this.tasksList \u003d readFromDatabaseIfAlreadyCreated();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":" System.err.println(\"An error occurred while opening the file. \\n\" + \"An error occurred on your device; please check that there is at least 100 MB of free disk space.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" System.exit(1); // Exit the program. Non-zero indicates abnormal termination.","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" if (index \u003c 0 || index \u003e this.taskCount) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":" return this.tasksList.get(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" public void addTask(Task task) throws TooManyTasksException {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":" if (taskCount \u003e\u003d maxTask) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" throw new TooManyTasksException();","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" addTaskToFile(task.toStorageString(), true);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" this.taskCount++;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":" public void addTaskToFile(String line, boolean isAppend) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from: https://www.w3schools.com/java/java_files_create.asp","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":" FileWriter myWriter \u003d new FileWriter(this.file, isAppend);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" myWriter.append(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" myWriter.append(\"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":" myWriter.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"An error occurred while writing to the file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" public ArrayList\u003cTask\u003e readFromDatabaseIfAlreadyCreated() {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":" ArrayList\u003cTask\u003e tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" FileReader fileReader \u003d new FileReader(this.file);","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":" String line;","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Jerome-j"},"content":" // Continuously read until the end of file.","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Jerome-j"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d parseTask(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Jerome-j"},"content":" tasksList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Jerome-j"},"content":" this.taskCount++;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Jerome-j"},"content":" bufferedReader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Jerome-j"},"content":" fileReader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Jerome-j"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"The file was not found.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"An error occurred while reading from the file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException malformedUserInputException) {","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"Your database may be corrupted. \" + malformedUserInputException.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Jerome-j"},"content":" return tasksList;","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"Jerome-j"},"content":" private Task parseTask(String line) throws MalformedUserInputException {","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Jerome-j"},"content":" String[] splitTask \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Jerome-j"},"content":" int length \u003d splitTask.length;","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Jerome-j"},"content":" // TODO: Handle a dirty input.","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Jerome-j"},"content":" if (line.startsWith(\"T\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"Jerome-j"},"content":" // then it is a task","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 3) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Jerome-j"},"content":" return new Todo(splitTask[1], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"Jerome-j"},"content":" } else if (line.startsWith(\"D\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Jerome-j"},"content":" // then it is a deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 4) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Jerome-j"},"content":" return new Deadline(splitTask[1], splitTask[3], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"Jerome-j"},"content":" } else if (line.startsWith(\"E\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"Jerome-j"},"content":" // then it is an event","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 5) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Jerome-j"},"content":" return new Event(splitTask[1], splitTask[3], splitTask[4], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your database is potentially corrupted\");","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"Jerome-j"},"content":" public void setTaskStatus(int taskIndex, boolean status) throws NoTaskCreatedYetException {","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"Jerome-j"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e this.maxTask) {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"Jerome-j"},"content":" } else if (taskIndex \u003e\u003d taskCount) {","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"Jerome-j"},"content":" // It is a valid index, but there is no task there yet.","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"Jerome-j"},"content":" throw new NoTaskCreatedYetException();","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.get(taskIndex).setDone(status);","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"Jerome-j"},"content":" // We rebuild the dataStorage again","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"Jerome-j"},"content":" rebuildStorage();","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"Jerome-j"},"content":" public int getTaskCount() {","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"Jerome-j"},"content":" return this.taskCount;","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"Jerome-j"},"content":" private void rebuildStorage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"Jerome-j"},"content":" // TODO: might not be a very good idea to rebuild the entire database.","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"Jerome-j"},"content":" for (int i \u003d 0; i \u003c this.taskCount; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"Jerome-j"},"content":" // i !\u003d 0 means that refresh the whole file.","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"Jerome-j"},"content":" addTaskToFile(tasksList.get(i).toStorageString(), i !\u003d 0);","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"Jerome-j"},"content":" public void deleteTask(int indexToDelete) throws NoTaskCreatedYetException {","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"Jerome-j"},"content":" if (indexToDelete \u003c 0 || indexToDelete \u003e this.maxTask) {","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"Jerome-j"},"content":" } else if (indexToDelete \u003e\u003d this.taskCount) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"Jerome-j"},"content":" // It is a valid index, but there is no task there yet.","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"Jerome-j"},"content":" throw new NoTaskCreatedYetException();","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"Jerome-j"},"content":" // If we reach here, it means that there is no problem.","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.remove(indexToDelete);","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"Jerome-j"},"content":" this.taskCount--;","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"Jerome-j"},"content":" // We rebuild the dataStorage again","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"Jerome-j"},"content":" rebuildStorage();","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":171}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.BlankEventException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.NoTaskCreatedYetException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.TooManyTasksException;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import Parser.EventParser;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" // Outsource the dataStorage.","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" DataStorage dataStorage \u003d new DataStorage(Integer.MAX_VALUE, \"database.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" // To read in user input","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" String welcomeMessage \u003d \"\\t ____________________________________________________________\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" \"\\t Hello! I\u0027m JeromeGPT\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" \"\\t What can I do for you?\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" \"\\t ____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" System.out.println(welcomeMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" // Keep reading user input until they type \"bye\"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" // Print out all the tasks.","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" for (int i \u003d 0; i \u003c dataStorage.getTaskCount(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" int humanReadableId \u003d i + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" Task currentTask \u003d dataStorage.getTask(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + humanReadableId + \". \" + currentTask.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":" handleCommandWithIndex(dataStorage, userInput, TypeOfActions.MARK);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":" handleCommandWithIndex(dataStorage, userInput, TypeOfActions.UNMARK);","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":" handleCommandWithIndex(dataStorage, userInput, TypeOfActions.DELETE);","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" // We further do another Regex search","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":" // In this format: todo borrow book.","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d EventParser.toDoParser(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":" createNewTask(dataStorage, task);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException malformedUserInputException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t You have a malformed input for your todo command. \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" \"\\t It is likely that you are missing the todo name\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" \"\\t Your command should be in this format: todo event_name\"","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" } catch (BlankEventException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" // We further do another Regex search","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d EventParser.deadlineParser(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":" createNewTask(dataStorage, task);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException malformedUserInputException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t You have a malformed input for your deadline command. \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"Jerome-j"},"content":" \"\\t It is likely that you are missing the event name and or a by date.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"Jerome-j"},"content":" \"\\t Your command should be in this format: deadline return book /by Sunday \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Jerome-j"},"content":" \"\\t \" + malformedUserInputException.getMessage()","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Jerome-j"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"Jerome-j"},"content":" } catch (BlankEventException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"Jerome-j"},"content":" // We further do another Regex search","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"Jerome-j"},"content":" // In this format: event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d EventParser.eventParser(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"Jerome-j"},"content":" createNewTask(dataStorage, task);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException malformedUserInputException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t You have a malformed input for your event command.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"Jerome-j"},"content":" \"\\t It is likely that you are missing the event name\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"Jerome-j"},"content":" \"\\t Your command should be in this format: event project meeting /from Mon 2pm /to 4pm\");","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"Jerome-j"},"content":" } catch (BlankEventException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"Jerome-j"},"content":" } else if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"Jerome-j"},"content":" // Use this construct because we don\u0027t want to echo the bye message.","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"Jerome-j"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"Jerome-j"},"content":" // Emoji of \\uD83D\\uDE05 is 😅","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\" \\t I have no idea what you are trying to tell me??? \\uD83D\\uDE05\");","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\" \\t Please try again.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"Jerome-j"},"content":" System.out.println(","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"Jerome-j"},"content":" \"\\t ____________________________________________________________\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"Jerome-j"},"content":" \"\\t Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"Jerome-j"},"content":" \"\\t ____________________________________________________________\"","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"Jerome-j"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"Jerome-j"},"content":" private static void createNewTask(DataStorage dataStorage, Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"Jerome-j"},"content":" // This allows user to add in a new task.","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"Jerome-j"},"content":" dataStorage.addTask(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"Jerome-j"},"content":" System.out.println(","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"Jerome-j"},"content":" \"\\t ____________________________________________________________\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"Jerome-j"},"content":" \"\\t Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"Jerome-j"},"content":" \"\\t added: \" + task.toString() + \"\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"Jerome-j"},"content":" \"\\t Now you have \" + dataStorage.getTaskCount() + \" task(s) in the list.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"Jerome-j"},"content":" \"\\t ____________________________________________________________\"","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"Jerome-j"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"Jerome-j"},"content":" } catch (TooManyTasksException tooManyTaskException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t You are too busy .... how come you got so many tasks??\");","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t See la the array no space already. Delete some stuff or restart the program please.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"Jerome-j"},"content":" public static void handleCommandWithIndex(DataStorage dataStorage, String userInput, TypeOfActions typeOfActions) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"Jerome-j"},"content":" int idToMark \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"Jerome-j"},"content":" if (typeOfActions \u003d\u003d TypeOfActions.UNMARK) {","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"Jerome-j"},"content":" dataStorage.setTaskStatus(idToMark, false);","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as not completed yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + dataStorage.getTask(idToMark).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"Jerome-j"},"content":" } else if (typeOfActions \u003d\u003d TypeOfActions.MARK) {","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"Jerome-j"},"content":" dataStorage.setTaskStatus(idToMark, true);","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + dataStorage.getTask(idToMark).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"Jerome-j"},"content":" } else if (typeOfActions \u003d\u003d TypeOfActions.DELETE) {","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d dataStorage.getTask(idToMark);","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"Jerome-j"},"content":" dataStorage.deleteTask(idToMark);","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + task.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Now you have \" + dataStorage.getTaskCount() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"Jerome-j"},"content":" } catch (IndexOutOfBoundsException indexOutOfBoundsException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Please do not enter an invalid index. There are \" + dataStorage.getTaskCount() + \" task(s) currently.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"Jerome-j"},"content":" } catch (NoTaskCreatedYetException noTaskCreatedYetException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t No task is created here yet.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"Jerome-j"},"content":" } catch (NumberFormatException numberFormatException) {","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Please enter positive integers 1, 2, 3, ... etc only.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":210,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":206,"-":4}},{"path":"src/main/java/Parser/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"public class DateTimeParser {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" // Solution adapted from: https://stackoverflow.com/questions/22463062/how-can-i-parse-format-dates-with-localdatetime-java-8","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static final DateTimeFormatter DATE_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" public static final DateTimeFormatter DATE_OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" private LocalDate localDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" public DateTimeParser(String dateTime) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" // Possible formats","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" // 12 May","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" // 12 May HH:mm","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" // 12 May 2023","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" // 12 May 2024 11:22","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" // Monday","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" // Monday 2 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" // Monday 2:00 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" localDate \u003d LocalDate.parse(dateTime, DATE_INPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" } catch (DateTimeException dateTimeException) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Invalid date time format. \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" \"Please enter in format 2024-01-01.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" return this.localDate.format(DATE_INPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":" return this.localDate.format(DATE_OUTPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":44}},{"path":"src/main/java/Parser/EventParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package Parser;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.BlankEventException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Event;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import TaskList.Todo;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"public class EventParser {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" public static Task toDoParser(String userInput) throws MalformedUserInputException, BlankEventException {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^todo (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" Todo newTodoTask \u003d new Todo(task, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" return newTodoTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your todo command is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" public static Task deadlineParser(String userInput) throws MalformedUserInputException, BlankEventException {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^deadline (.+) \\\\/by (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":" String deadline \u003d matcher.group(2).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" } else if (deadline.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty deadline.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":" Deadline newDeadline \u003d new Deadline(task, deadline, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" return newDeadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your deadline command is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" public static Task eventParser(String userInput) throws MalformedUserInputException, BlankEventException {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^event (.+) \\\\/from (.+) \\\\/to (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" String from \u003d matcher.group(2).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" String to \u003d matcher.group(3).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":" } else if (from.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty from date.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" } else if (to.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":" throw new BlankEventException(\"Please do not enter an empty to date.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":" Event newEventTask \u003d new Event(task, from, to, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" return newEventTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your event input is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":84}},{"path":"src/main/java/TaskList/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package TaskList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import Parser.DateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" private DateTimeParser by;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public Deadline(String description, String by, boolean isDone) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" this.by \u003d new DateTimeParser(by);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" return \"D | \" + this.getDescription() + \" | \" + super.getStatus() + \" | \" + this.by.toStorageString();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":29}},{"path":"src/main/java/TaskList/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package TaskList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import CustomExceptions.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import Parser.DateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" private DateTimeParser startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" private DateTimeParser endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public Event(String description, String startTime, String endTime, boolean isDone) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" this.startTime \u003d new DateTimeParser(startTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" this.endTime \u003d new DateTimeParser(endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.startTime + \" to: \" + this.endTime + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" return \"E | \" + this.getDescription() + \" | \" + super.getStatus() + \" | \" + this.startTime.toStorageString() + \" | \" + this.endTime.toStorageString();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":29}},{"path":"src/main/java/TaskList/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package TaskList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" private String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" return this.isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" public void setDone(boolean status) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" return this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" * Allows saving of the Task object in a String format so that it can be stored in the database.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" * @return String interpretation of Task object.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" return \"T | \" + this.getStatus() + \" | \" + this.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":43}},{"path":"src/main/java/TaskList/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package TaskList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" return \"T | \" + this.getDescription() + \" | \" + super.getStatus();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":20}},{"path":"src/main/java/TypeOfActions.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"public enum TypeOfActions {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":" DELETE,","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":" MARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" UNMARK","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"somethingwrong","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"todo hello","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"event party /from Monday 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"event party /FROM Monday 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"mark -2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"delete 1","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"mark 12098765456t7yuioi8765467890-98765789","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"delete 3","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"unmark","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":17}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"import commands.ByeCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"import commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import commands.CommandResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import common.DataStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import parser.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" private DataStorage dataStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public Duke() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public void start() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" // TODO: There could be a try catch here","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" this.dataStorage \u003d new DataStorage(Integer.MAX_VALUE, \"database.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" * Prints the Goodbye message and exits.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" private void exit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" System.exit(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" start();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" runCommandLoopUntilExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" new Duke().run();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" public CommandResult executeCommand(Command command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" command.setData(dataStorage);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" CommandResult commandResult \u003d command.execute();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" return commandResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":" * Reads the user command and executes it, until the user issues the exit command.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" private void runCommandLoopUntilExitCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" Command command;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":" do {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" // Keep reading user input until they type \"bye\"","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" command \u003d new Parser().parseCommand(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":" CommandResult commandResult \u003d executeCommand(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" System.out.println(commandResult.feedbackToUser);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" } while (!ByeCommand.isExit(command));","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":69,"-":4}},{"path":"src/main/java/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Quits the program.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGMENT \u003d \"\\t Exiting as requested ...\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGMENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public static boolean isExit(Command command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" return command instanceof ByeCommand; // instanceof returns false if it is null","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":22}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import common.DataStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" * Represents an executable command.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"public class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" protected DataStorage dataStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" * TODO: Code referenced from: https://github.com/se-edu/addressbook-level2","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" throw new UnsupportedOperationException(\"This method is to be implemented by child classes\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" public void setData(DataStorage dataStorage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" this.dataStorage \u003d dataStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":24}},{"path":"src/main/java/commands/CommandResult.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"public class CommandResult {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" /** The feedback message to be shown to the user. Contains a description of the execution result */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" // TODO: Code referenced from: https://github.com/se-edu/addressbook-level2","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" public final String feedbackToUser;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" this.feedbackToUser \u003d feedbackToUser;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":16}},{"path":"src/main/java/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import static common.DateTimeHandler.DATE_INPUT_FORMAT_STRING;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d \"\\t \" + COMMAND_WORD + \": Adds an deadline. \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" + \"\\t Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" + \" boil hot water /by \" + DATE_INPUT_FORMAT_STRING ;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_EVENT \u003d \"\\t The event name cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_END_TIME \u003d \"\\t The end time cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Got it. I\u0027ve added this task: \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" \"\\t Now you have %d task(s) available!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" public static final Pattern DEADLINE_ARGUMENTS_FORMAT \u003d Pattern.compile(\"(?\u003ceventName\u003e.+) \\\\/by (?\u003cendTime\u003e\\\\S+)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" private final Deadline toAdd;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" public DeadlineCommand(String eventName, String by) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" this.toAdd \u003d new Deadline(eventName, by, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" dataStorage.addTask(this.toAdd);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd.toString(), dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":37}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d \"\\t \" + COMMAND_WORD + \": Delete a selected event when it exists. \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" + \"\\t Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" + \" 1 \";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Noted, I have removed this task:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" \"\\t Now you have %d task(s) in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_INVALID_ID \u003d \"\\t Please enter a integer that is 1 or larger.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_TASK_NOT_CREATED_YET \u003d \" \\t This is an invalid index\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" \"\\t There are %d tasks available.\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" private int targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" public DeleteCommand(int targetIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d dataStorage.getTask(targetIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" dataStorage.deleteTask(targetIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, task, dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" } catch (IndexOutOfBoundsException iobe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_TASK_NOT_CREATED_YET, dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":38}},{"path":"src/main/java/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import static common.DateTimeHandler.DATE_INPUT_FORMAT_STRING;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"event\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d \"\\t \" + COMMAND_WORD + \": Adds an event.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" + \"\\t Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" + \" go for CS2103 tutorial /from \" + DATE_INPUT_FORMAT_STRING + \" /to \" + DATE_INPUT_FORMAT_STRING;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" \"\\t Now you have %d task(s) available!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_EVENT \u003d \"\\t The event name cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_START_TIME \u003d \"\\t The start time cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_END_TIME \u003d \"\\t The end time cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" public static final Pattern EVENT_ARGUMENTS_FORMAT \u003d Pattern.compile(\"(?\u003ceventName\u003e.+) \\\\/from (?\u003cstartTime\u003e\\\\S+) \\\\/to (?\u003cendTime\u003e\\\\S+)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" private final Event toAdd;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" public EventCommand(String eventName, String startTime, String endTime) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" this.toAdd \u003d new Event(eventName, startTime, endTime, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" dataStorage.addTask(this.toAdd);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd.toString(), dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":38}},{"path":"src/main/java/commands/IncorrectCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" * Represents an incorrect command. Upon execution, produces some feedback to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" * TODO: taken from","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"public class IncorrectCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" public final String feedbackToUser;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public IncorrectCommand(String feedbackToUser) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" this.feedbackToUser \u003d feedbackToUser;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(feedbackToUser);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":21}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" private static final String MESSAGE_INDIVIDUAL_LISTING_FORMAT \u003d \"\\t %d. %s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" StringBuilder listViewBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" for (int i \u003d 0; i \u003c dataStorage.getTaskCount(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" Task currentTask \u003d dataStorage.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" listViewBuilder.append(String.format(MESSAGE_INDIVIDUAL_LISTING_FORMAT, i + 1, currentTask.toString()));","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" // Append blank line if it is not last line.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" if (i \u003c dataStorage.getTaskCount() - 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" listViewBuilder.append(System.lineSeparator());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(listViewBuilder.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":28}},{"path":"src/main/java/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import static common.DateTimeHandler.DATE_INPUT_FORMAT_STRING;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d \"\\t \" + COMMAND_WORD + \": Marks an event as completed.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" + \"\\t Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" + \" 1 \";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_INVALID_ID \u003d \"\\t Please enter a integer that is 1 or larger.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_TASK_NOT_CREATED_YET \u003d \" \\t This is an invalid index\\n\"+","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" \"\\t There are %d tasks available.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" private int targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" public MarkCommand(int targetIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" dataStorage.setTaskStatus(targetIndex, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, dataStorage.getTask(targetIndex)));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" } catch (IndexOutOfBoundsException iobe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_TASK_NOT_CREATED_YET, dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":38}},{"path":"src/main/java/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a todo task. \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" + \" boil coconut milk\";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" \"\\t Now you have %d task(s) available!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_BLANK_EVENT \u003d \"\\t The event name cannot be empty!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" private final Todo toAdd;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" public TodoCommand(String taskName) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" this.toAdd \u003d new Todo(taskName, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" dataStorage.addTask(this.toAdd);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd.toString(), dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":29}},{"path":"src/main/java/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_USAGE \u003d \"\\t \" + COMMAND_WORD + \": Marks an event as uncompleted.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" + \"\\t Example: \" + COMMAND_WORD","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" + \" 1 \";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_SUCCESS \u003d \"\\t Nice! I\u0027ve marked this task as uncompleted:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" \"\\t %s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_INVALID_ID \u003d \"\\t Please enter a integer that is 1 or larger.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_TASK_NOT_CREATED_YET \u003d \" \\t This is an invalid index\\n\"+","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" \"\\t There are %d tasks available.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" private int targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" public UnmarkCommand(int targetIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" dataStorage.setTaskStatus(targetIndex, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, dataStorage.getTask(targetIndex)));","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" } catch (IndexOutOfBoundsException iobe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" return new CommandResult(String.format(MESSAGE_TASK_NOT_CREATED_YET, dataStorage.getTaskCount()));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":35}},{"path":"src/main/java/common/DataStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package common;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"public class DataStorage {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" private ArrayList\u003cTask\u003e tasksList;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" private int taskCount;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" private int maxTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" private File file;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" public DataStorage(int maxTask, String fileName) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" this.maxTask \u003d maxTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" this.tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" this.taskCount \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" this.file \u003d new File(fileName);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_files_create.asp","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" if (this.file.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"// System.out.println(\"\\t The database has not been created. A new database has been created at the following location: \" + this.file.getAbsolutePath());","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" // This means that the file already exists here.","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"// System.out.println(\"\\t Using the existing database located at: \" + this.file.getAbsolutePath());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" this.tasksList \u003d readFromDatabaseIfAlreadyCreated();","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" System.err.println(\"An error occurred while opening the file. \\n\" + \"An error occurred on your device; please check that there is at least 100 MB of free disk space.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":" System.exit(1); // Exit the program. Non-zero indicates abnormal termination.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" if (index \u003c 0 || index \u003e this.taskCount) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" return this.tasksList.get(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":" addTaskToFile(task.toStorageString(), true);","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" this.taskCount++;","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" public void addTaskToFile(String line, boolean isAppend) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from: https://www.w3schools.com/java/java_files_create.asp","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":" FileWriter myWriter \u003d new FileWriter(this.file, isAppend);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":" myWriter.append(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":" myWriter.append(\"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" myWriter.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"An error occurred while writing to the file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" public ArrayList\u003cTask\u003e readFromDatabaseIfAlreadyCreated() {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" ArrayList\u003cTask\u003e tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":" FileReader fileReader \u003d new FileReader(this.file);","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":" String line;","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" // Continuously read until the end of file.","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":" Task task \u003d parseTask(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":" tasksList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Jerome-j"},"content":" this.taskCount++;","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Jerome-j"},"content":" bufferedReader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Jerome-j"},"content":" fileReader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Jerome-j"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"The file was not found.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Jerome-j"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"An error occurred while reading from the file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException malformedUserInputException) {","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"Your database may be corrupted. \" + malformedUserInputException.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Jerome-j"},"content":" return tasksList;","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Jerome-j"},"content":" private Task parseTask(String line) throws MalformedUserInputException {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"Jerome-j"},"content":" String[] splitTask \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Jerome-j"},"content":" int length \u003d splitTask.length;","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Jerome-j"},"content":" // TODO: Handle a dirty input.","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"Jerome-j"},"content":" if (line.startsWith(\"T\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Jerome-j"},"content":" // then it is a task","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 3) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Jerome-j"},"content":" return new Todo(splitTask[1], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Jerome-j"},"content":" } else if (line.startsWith(\"D\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Jerome-j"},"content":" // then it is a deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 4) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Jerome-j"},"content":" return new Deadline(splitTask[1], splitTask[3], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"Jerome-j"},"content":" } else if (line.startsWith(\"E\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"Jerome-j"},"content":" // then it is an event","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Jerome-j"},"content":" if (length !\u003d 5) throw new MalformedUserInputException(\"Your database is corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Jerome-j"},"content":" return new Event(splitTask[1], splitTask[3], splitTask[4], Boolean.valueOf(splitTask[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your database is potentially corrupted\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"Jerome-j"},"content":" public void setTaskStatus(int taskIndex, boolean status) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Jerome-j"},"content":" if (taskIndex \u003c 0 || taskIndex \u003e this.maxTask) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"Jerome-j"},"content":" } else if (taskIndex \u003e\u003d taskCount) {","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"Jerome-j"},"content":" // It is a valid index, but there is no task there yet.","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"\\t The task has not been created yet.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.get(taskIndex).setDone(status);","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"Jerome-j"},"content":" // We rebuild the dataStorage again","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"Jerome-j"},"content":" rebuildStorage();","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"Jerome-j"},"content":" public int getTaskCount() {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"Jerome-j"},"content":" return this.taskCount;","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"Jerome-j"},"content":" private void rebuildStorage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"Jerome-j"},"content":" // TODO: might not be a very good idea to rebuild the entire database.","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"Jerome-j"},"content":" for (int i \u003d 0; i \u003c this.taskCount; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"Jerome-j"},"content":" // i !\u003d 0 means that refresh the whole file.","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"Jerome-j"},"content":" addTaskToFile(tasksList.get(i).toStorageString(), i !\u003d 0);","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"Jerome-j"},"content":" public void deleteTask(int indexToDelete) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Jerome-j"},"content":" if (indexToDelete \u003c 0 || indexToDelete \u003e this.maxTask) {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"Jerome-j"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"Jerome-j"},"content":" } else if (indexToDelete \u003e\u003d this.taskCount) {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"Jerome-j"},"content":" // It is a valid index, but there is no task there yet.","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"There are no task stored at the specified location.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"Jerome-j"},"content":" // If we reach here, it means that there is no problem.","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"Jerome-j"},"content":" this.tasksList.remove(indexToDelete);","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"Jerome-j"},"content":" this.taskCount--;","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"Jerome-j"},"content":" // We rebuild the dataStorage again","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"Jerome-j"},"content":" rebuildStorage();","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":166}},{"path":"src/main/java/common/DateTimeHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package common;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"public class DateTimeHandler {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" // Solution adapted from: https://stackoverflow.com/questions/22463062/how-can-i-parse-format-dates-with-localdatetime-java-8","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public static String DATE_INPUT_FORMAT_STRING \u003d \"yyyy-MM-dd\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static final DateTimeFormatter DATE_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(DATE_INPUT_FORMAT_STRING);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" public static final DateTimeFormatter DATE_OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" private LocalDate localDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" public DateTimeHandler(String dateTime) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" // Possible formats","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" // 12 May","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" // 12 May HH:mm","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" // 12 May 2023","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" // 12 May 2024 11:22","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" // Monday","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" // Monday 2 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" // Monday 2:00 PM","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" localDate \u003d LocalDate.parse(dateTime, DATE_INPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" } catch (DateTimeException dateTimeException) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"\\t Invalid date time format.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" \"\\t Please enter in format \" + DATE_INPUT_FORMAT_STRING);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" return this.localDate.format(DATE_INPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":" return this.localDate.format(DATE_OUTPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":44}},{"path":"src/main/java/common/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package common;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class Messages {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_GOODBYE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" // Emoji of \\uD83D\\uDE05 is 😅","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" public static final String MESSAGE_INCORRECT \u003d \"\\t I have no idea what you are trying to tell me??? \\uD83D\\uDE05\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":8}},{"path":"src/main/java/exception/MalformedUserInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class MalformedUserInputException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" public MalformedUserInputException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":7}},{"path":"src/main/java/parser/EventParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"public class EventParser {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public static Task toDoParser(String userInput) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^todo (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" Todo newTodoTask \u003d new Todo(task, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" return newTodoTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your todo command is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" public static Task deadlineParser(String userInput) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^deadline (.+) \\\\/by (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" String deadline \u003d matcher.group(2).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":" } else if (deadline.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty deadline.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":" Deadline newDeadline \u003d new Deadline(task, deadline, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":" return newDeadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your deadline command is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":" public static Task eventParser(String userInput) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" // Solution below adapted from https://www.w3schools.com/java/java_regex.asp","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" Pattern pattern \u003d Pattern.compile(\"^event (.+) \\\\/from (.+) \\\\/to (.+)$\");","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" Matcher matcher \u003d pattern.matcher(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":" String task \u003d matcher.group(1).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":" String from \u003d matcher.group(2).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" String to \u003d matcher.group(3).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" } else if (from.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty from date.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" } else if (to.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Please do not enter an empty to date.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" Event newEventTask \u003d new Event(task, from, to, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":" return newEventTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":" throw new MalformedUserInputException(\"Your event input is malformed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":83}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import commands.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"import common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"import tasklist.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"import static commands.EventCommand.EVENT_ARGUMENTS_FORMAT;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"import static commands.MarkCommand.MESSAGE_INVALID_ID;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"import static commands.TodoCommand.MESSAGE_BLANK_EVENT;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" * TODO: fill in the reference","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" public static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(Messages.MESSAGE_INCORRECT);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" switch (commandWord) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" case TodoCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" return prepareTodo(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" case EventCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" return prepareEvent(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" case ByeCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Jerome-j"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Jerome-j"},"content":" case DeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Jerome-j"},"content":" return prepareDeadline(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Jerome-j"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Jerome-j"},"content":" return prepareMarkCommand(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Jerome-j"},"content":" case UnmarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Jerome-j"},"content":" return prepareUnmarkCommand(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Jerome-j"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Jerome-j"},"content":" return prepareDeleteCommand(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Jerome-j"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(Messages.MESSAGE_INCORRECT);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Jerome-j"},"content":" private Command prepareMarkCommand(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Jerome-j"},"content":" if (arguments.trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(MarkCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Jerome-j"},"content":" int targetIndex \u003d Integer.valueOf(arguments.trim()) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Jerome-j"},"content":" return new MarkCommand(targetIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Jerome-j"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(MarkCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Jerome-j"},"content":" private Command prepareUnmarkCommand(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Jerome-j"},"content":" if (arguments.trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(UnmarkCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Jerome-j"},"content":" int targetIndex \u003d Integer.valueOf(arguments.trim()) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Jerome-j"},"content":" return new UnmarkCommand(targetIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Jerome-j"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(UnmarkCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Jerome-j"},"content":" private Command prepareDeleteCommand(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Jerome-j"},"content":" if (arguments.trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(DeleteCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Jerome-j"},"content":" int targetIndex \u003d Integer.valueOf(arguments.trim()) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Jerome-j"},"content":" return new DeleteCommand(targetIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Jerome-j"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(DeleteCommand.MESSAGE_INVALID_ID);","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Jerome-j"},"content":" private Command prepareDeadline(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Jerome-j"},"content":" final Matcher matcher \u003d DeadlineCommand.DEADLINE_ARGUMENTS_FORMAT.matcher(arguments.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Jerome-j"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(DeadlineCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Jerome-j"},"content":" final String eventName \u003d matcher.group(\"eventName\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Jerome-j"},"content":" final String endTime \u003d matcher.group(\"endTime\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Jerome-j"},"content":" if (eventName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(DeadlineCommand.MESSAGE_BLANK_EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Jerome-j"},"content":" } else if (endTime.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(DeadlineCommand.MESSAGE_BLANK_END_TIME);","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Jerome-j"},"content":" return new DeadlineCommand(eventName, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Jerome-j"},"content":" private Command prepareEvent(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Jerome-j"},"content":" final Matcher matcher \u003d EventCommand.EVENT_ARGUMENTS_FORMAT.matcher(arguments.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Jerome-j"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(EventCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Jerome-j"},"content":" final String startTime \u003d matcher.group(\"startTime\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Jerome-j"},"content":" final String endTime \u003d matcher.group(\"endTime\");","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Jerome-j"},"content":" final String eventName \u003d matcher.group(\"eventName\");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Jerome-j"},"content":" if (startTime.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(EventCommand.MESSAGE_BLANK_START_TIME);","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Jerome-j"},"content":" } else if (eventName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(EventCommand.MESSAGE_BLANK_EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Jerome-j"},"content":" } else if (endTime.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(EventCommand.MESSAGE_BLANK_END_TIME);","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Jerome-j"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Jerome-j"},"content":" return new EventCommand(eventName, startTime, endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Jerome-j"},"content":" } catch (MalformedUserInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Jerome-j"},"content":" private Command prepareTodo(String arguments) {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Jerome-j"},"content":" String eventName \u003d arguments.trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Jerome-j"},"content":" if (eventName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Jerome-j"},"content":" return new IncorrectCommand(TodoCommand.MESSAGE_BLANK_EVENT);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Jerome-j"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Jerome-j"},"content":" return new TodoCommand(eventName);","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":163}},{"path":"src/main/java/tasklist/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package tasklist;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import common.DateTimeHandler;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" private DateTimeHandler by;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" public Deadline(String description, String by, boolean isDone) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" this.by \u003d new DateTimeHandler(by);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" return \"D | \" + this.getDescription() + \" | \" + super.getStatus() + \" | \" + this.by.toStorageString();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":26}},{"path":"src/main/java/tasklist/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package tasklist;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import exception.MalformedUserInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"import common.DateTimeHandler;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" private DateTimeHandler startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" private DateTimeHandler endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" public Event(String description, String startTime, String endTime, boolean isDone) throws MalformedUserInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" this.startTime \u003d new DateTimeHandler(startTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" this.endTime \u003d new DateTimeHandler(endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.startTime + \" to: \" + this.endTime + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" return \"E | \" + this.getDescription() + \" | \" + super.getStatus() + \" | \" + this.startTime.toStorageString() + \" | \" + this.endTime.toStorageString();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":27}},{"path":"src/main/java/tasklist/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package tasklist;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":" private String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" return this.isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" public void setDone(boolean status) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":" return this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" * Allows saving of the Task object in a String format so that it can be stored in the database.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":" * @return String interpretation of Task object.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Jerome-j"},"content":" return \"T | \" + this.getStatus() + \" | \" + this.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":43}},{"path":"src/main/java/tasklist/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package tasklist;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" return \"T | \" + this.getDescription() + \" | \" + super.getStatus();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Jerome-j":20}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"package ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"import common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":" public void showLine() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t ____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":" showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t Hello! I\u0027m JeromeGPT\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Jerome-j"},"content":" showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Jerome-j"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Jerome-j"},"content":" showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Jerome-j"},"content":" System.out.println(\"\\t \" + Messages.MESSAGE_GOODBYE);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Jerome-j"},"content":" showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Jerome-j"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Jerome-j"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Jerome-j"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Jerome-j"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":38}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Jerome-j"},"content":"somethingwrong","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Jerome-j"},"content":"todo hello","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"event party all day every /from 2023-01-01 /to 2024-03-09","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Jerome-j"},"content":"event party all day every /from 2023-02-01 /to 2024-03-09","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Jerome-j"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Jerome-j"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Jerome-j"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Jerome-j"},"content":"event party /FROM Monday 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Jerome-j"},"content":"mark -2","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Jerome-j"},"content":"delete 1","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Jerome-j"},"content":"mark 12098765456t7yuioi8765467890-98765789","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Jerome-j"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Jerome-j"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Jerome-j"},"content":"delete 3","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Jerome-j"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Jerome-j"},"content":"delete -3","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Jerome-j"},"content":"delete 3.123456","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Jerome-j"},"content":"bye","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Jerome-j":23}},{"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":"Jerome-j"},"content":"rm -rf database.txt","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"Jerome-j"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"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":27,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Jerome-j":4,"-":38}}] diff --git a/Jerome-j_ip_master/commits.json b/Jerome-j_ip_master/commits.json index 642c9e2f..f4de0a91 100644 --- a/Jerome-j_ip_master/commits.json +++ b/Jerome-j_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Jerome-j":[{"date":"2024-01-24","commitResults":[{"hash":"8f9969130fb09c33a2442f0114fb6c83f7efc2e2","isMergeCommit":false,"messageTitle":"Initial commit because I forgot to commit the Level-1 in the previous version, and I followed some guide on StackOverFlow to rebase - and then i encountered some errors.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"3dddd3c36a8f2dee050fc6837de8ad0caa23345f","isMergeCommit":false,"messageTitle":"Level-0: Initial commit that simply greets the user and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}},{"hash":"95345187ecb81680f1f2d8ff5172cc7ce8940e23","isMergeCommit":false,"messageTitle":"Level-1: 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":35,"deletions":6}}},{"hash":"4aa6f49dbe41cf966f2b911ea376d7a253b556e2","isMergeCommit":false,"messageTitle":"Level-2: 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":33,"deletions":5}}},{"hash":"0b50e483b17e26cd030c3e02feadfd15de4e2318","isMergeCommit":false,"messageTitle":"Level-3: changed the switch-case construct to if-else, and added a new Task class that was lifted off course site. 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":59,"deletions":32}}},{"hash":"367cb7b82e0f77b20539c31657abd744fc71f913","isMergeCommit":false,"messageTitle":"Level-4: Add support for tracking three types of tasks: ToDos, Events, Deadlines. Changed all the variables in each class to be a private variable. No error handling yet.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":19}}},{"hash":"500e648022ca8d411987d06f58cd45353e57eb9e","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Use the input/output redirection technique to semi-automate the testing of Duke.","messageBody":"Removed trailing whitespace in welcome message.\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"e0b4e9e08090a893b390bf3cf6cfc857d1ec137a","isMergeCommit":false,"messageTitle":"Level-4_interim: Shifted Task/Todo/Event/Deadline into its own folder to make it neater.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"3f12e247d5f2645b1dd13c972e7474df79d1cd0e","isMergeCommit":false,"messageTitle":"Level-5_interim: Separated the logic for the Parser, Exceptions, and grouped all tasks types in a single package.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":245,"deletions":89}}},{"hash":"fc8afd36128003b4ad81ce62743725ca4c6548f3","isMergeCommit":false,"messageTitle":"Level-5_interim: Changed error message to be more descriptive; specifically for the todo, deadline, positive integer.","messageBody":"Handles un/mark a, un/mark -2, un/mark 100 (number beyond the current tasks created etc).\n\nTrim user input to prevent user from entering a empty item in the command String for all 3 types.\n","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":1},"java":{"insertions":95,"deletions":50}}},{"hash":"963540aa8bc63328040dff782a3542471eebeff6","isMergeCommit":false,"messageTitle":"Level-5: Enabled error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cc6e0752491395b00fcc183e205aa0036f7af1bd","isMergeCommit":false,"messageTitle":"Level-6_interim: satisfied baseline handling for the delete case.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":9}}},{"hash":"2383b29146e5b15bc782e75a806849a2f62ff35e","isMergeCommit":false,"messageTitle":"Level-6_interim: added enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"2211a16dc50eee03547daf07237afbb330c28eda","isMergeCommit":false,"messageTitle":"Level-6 and A-TextUiTesting: Broke apart commands (DELETE/MARK/UNMARK) that have an index component to them using an enum.","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":80}}}]},{"date":"2024-01-28","commitResults":[{"hash":"0c4de6266da677c93dd445eb47123aeaa1aabfa0","isMergeCommit":false,"messageTitle":"Added file storage to HDD support...","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":2}}},{"hash":"293d73c4111308207633930a610a77b31f53cfa9","isMergeCommit":false,"messageTitle":"Do not allow user to access Tasks that has not been created yet.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"bf9e8dcc8236032ee6ffcb9633838a9b9f5b8864","isMergeCommit":false,"messageTitle":"Slightly changed error message.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"e7abaf2455531a05e453337a2f7b6a71d94b111e","isMergeCommit":false,"messageTitle":"Level-7_interim: allow printing so that file can be properly stored in the database.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":10}}},{"hash":"cf112e8082383df585aa6a8c7f671619219ea389","isMergeCommit":false,"messageTitle":"Default the task when added is considered incomplete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"bbc8dd084581d742a1bcd3f90cf9a1b2364cdb9b","isMergeCommit":false,"messageTitle":"Level-7_interim: placeholder function to write value to database is now working.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"f56cc89e79809bf84116812eeda0cb034ab024a0","isMergeCommit":false,"messageTitle":"Level-7_interim: added a sample save method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"bbe1e200fe6cec49776f9879493423ac032dc3d3","isMergeCommit":false,"messageTitle":"Level-7_interim: Allow data to be rebuilt once the app is re-opened. Rebuild database once data is modified.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":5}}},{"hash":"f7a167b2ffc038e655dd182232ad3fab51422f42","isMergeCommit":false,"messageTitle":"Level-7_interim: Added database txt file.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"415b7034afa087edaf225db4da06418d38bbc1cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"c1ff1e1cbd70eb79db2cdbd412bdf6c54c0f3f05","isMergeCommit":false,"messageTitle":"Modify user input exception to be more descriptive","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":5}}},{"hash":"08f29696b65020155bb68a955a5523700f7cd89a","isMergeCommit":false,"messageTitle":"Remove print statements from database.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3},"java":{"insertions":6,"deletions":5}}},{"hash":"9a8959fb73aef95a619fe4e99b37b9625a87964c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cd73c1019b6b1fc109b7a0840dd2505b0a9734f","isMergeCommit":false,"messageTitle":"Enable custom message in MalformedUserInputException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cce52ef3e660aced095cfe0355f073223be4bc7a","isMergeCommit":false,"messageTitle":"Separate the time-date parsing logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"627441f905c407b1836a5e904a3a11621b7eb20f","isMergeCommit":false,"messageTitle":"Make time parsing error more descriptive","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b100b83c87ecda55594d2dc714cac49308d8a0e9","isMergeCommit":false,"messageTitle":"Store DateTime as DateTime object rather than String","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}},{"hash":"50e30137cc4ab83527b8d9e2b8dbf09c9c7a0eb7","isMergeCommit":false,"messageTitle":"Create a DateTime class to properly store values in database","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":14}}},{"hash":"3e5f77fc0a4a4963fbfecc4a555c765c3d8ee627","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Jerome-j":{"java":659,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"Jerome-j":87334.414},"authorDisplayNameMap":{"Jerome-j":"JERO.. JIE"}} +{"authorDailyContributionsMap":{"Jerome-j":[{"date":"2024-01-24","commitResults":[{"hash":"8f9969130fb09c33a2442f0114fb6c83f7efc2e2","isMergeCommit":false,"messageTitle":"Initial commit because I forgot to commit the Level-1 in the previous version, and I followed some guide on StackOverFlow to rebase - and then i encountered some errors.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"3dddd3c36a8f2dee050fc6837de8ad0caa23345f","isMergeCommit":false,"messageTitle":"Level-0: Initial commit that simply greets the user and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}},{"hash":"95345187ecb81680f1f2d8ff5172cc7ce8940e23","isMergeCommit":false,"messageTitle":"Level-1: 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":35,"deletions":6}}},{"hash":"4aa6f49dbe41cf966f2b911ea376d7a253b556e2","isMergeCommit":false,"messageTitle":"Level-2: 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":33,"deletions":5}}},{"hash":"0b50e483b17e26cd030c3e02feadfd15de4e2318","isMergeCommit":false,"messageTitle":"Level-3: changed the switch-case construct to if-else, and added a new Task class that was lifted off course site. 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":59,"deletions":32}}},{"hash":"367cb7b82e0f77b20539c31657abd744fc71f913","isMergeCommit":false,"messageTitle":"Level-4: Add support for tracking three types of tasks: ToDos, Events, Deadlines. Changed all the variables in each class to be a private variable. No error handling yet.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":19}}},{"hash":"500e648022ca8d411987d06f58cd45353e57eb9e","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Use the input/output redirection technique to semi-automate the testing of Duke.","messageBody":"Removed trailing whitespace in welcome message.\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"e0b4e9e08090a893b390bf3cf6cfc857d1ec137a","isMergeCommit":false,"messageTitle":"Level-4_interim: Shifted Task/Todo/Event/Deadline into its own folder to make it neater.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"3f12e247d5f2645b1dd13c972e7474df79d1cd0e","isMergeCommit":false,"messageTitle":"Level-5_interim: Separated the logic for the Parser, Exceptions, and grouped all tasks types in a single package.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":245,"deletions":89}}},{"hash":"fc8afd36128003b4ad81ce62743725ca4c6548f3","isMergeCommit":false,"messageTitle":"Level-5_interim: Changed error message to be more descriptive; specifically for the todo, deadline, positive integer.","messageBody":"Handles un/mark a, un/mark -2, un/mark 100 (number beyond the current tasks created etc).\n\nTrim user input to prevent user from entering a empty item in the command String for all 3 types.\n","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":1},"java":{"insertions":95,"deletions":50}}},{"hash":"963540aa8bc63328040dff782a3542471eebeff6","isMergeCommit":false,"messageTitle":"Level-5: Enabled error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cc6e0752491395b00fcc183e205aa0036f7af1bd","isMergeCommit":false,"messageTitle":"Level-6_interim: satisfied baseline handling for the delete case.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":9}}},{"hash":"2383b29146e5b15bc782e75a806849a2f62ff35e","isMergeCommit":false,"messageTitle":"Level-6_interim: added enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"2211a16dc50eee03547daf07237afbb330c28eda","isMergeCommit":false,"messageTitle":"Level-6 and A-TextUiTesting: Broke apart commands (DELETE/MARK/UNMARK) that have an index component to them using an enum.","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":80}}}]},{"date":"2024-01-28","commitResults":[{"hash":"0c4de6266da677c93dd445eb47123aeaa1aabfa0","isMergeCommit":false,"messageTitle":"Added file storage to HDD support...","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":2}}},{"hash":"293d73c4111308207633930a610a77b31f53cfa9","isMergeCommit":false,"messageTitle":"Do not allow user to access Tasks that has not been created yet.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"bf9e8dcc8236032ee6ffcb9633838a9b9f5b8864","isMergeCommit":false,"messageTitle":"Slightly changed error message.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"e7abaf2455531a05e453337a2f7b6a71d94b111e","isMergeCommit":false,"messageTitle":"Level-7_interim: allow printing so that file can be properly stored in the database.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":10}}},{"hash":"cf112e8082383df585aa6a8c7f671619219ea389","isMergeCommit":false,"messageTitle":"Default the task when added is considered incomplete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"bbc8dd084581d742a1bcd3f90cf9a1b2364cdb9b","isMergeCommit":false,"messageTitle":"Level-7_interim: placeholder function to write value to database is now working.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"f56cc89e79809bf84116812eeda0cb034ab024a0","isMergeCommit":false,"messageTitle":"Level-7_interim: added a sample save method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"bbe1e200fe6cec49776f9879493423ac032dc3d3","isMergeCommit":false,"messageTitle":"Level-7_interim: Allow data to be rebuilt once the app is re-opened. Rebuild database once data is modified.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":5}}},{"hash":"f7a167b2ffc038e655dd182232ad3fab51422f42","isMergeCommit":false,"messageTitle":"Level-7_interim: Added database txt file.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"415b7034afa087edaf225db4da06418d38bbc1cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"c1ff1e1cbd70eb79db2cdbd412bdf6c54c0f3f05","isMergeCommit":false,"messageTitle":"Modify user input exception to be more descriptive","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":5}}},{"hash":"08f29696b65020155bb68a955a5523700f7cd89a","isMergeCommit":false,"messageTitle":"Remove print statements from database.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3},"java":{"insertions":6,"deletions":5}}},{"hash":"9a8959fb73aef95a619fe4e99b37b9625a87964c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cd73c1019b6b1fc109b7a0840dd2505b0a9734f","isMergeCommit":false,"messageTitle":"Enable custom message in MalformedUserInputException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cce52ef3e660aced095cfe0355f073223be4bc7a","isMergeCommit":false,"messageTitle":"Separate the time-date parsing logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"627441f905c407b1836a5e904a3a11621b7eb20f","isMergeCommit":false,"messageTitle":"Make time parsing error more descriptive","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b100b83c87ecda55594d2dc714cac49308d8a0e9","isMergeCommit":false,"messageTitle":"Store DateTime as DateTime object rather than String","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}},{"hash":"50e30137cc4ab83527b8d9e2b8dbf09c9c7a0eb7","isMergeCommit":false,"messageTitle":"Create a DateTime class to properly store values in database","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":14}}},{"hash":"3e5f77fc0a4a4963fbfecc4a555c765c3d8ee627","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"9ec6ac97da424850bc0c6ea8ad35429f2a045e5a","isMergeCommit":false,"messageTitle":"Separate the welcome message into Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":7}}},{"hash":"10e80ad19f3d553105d5a9dd55d95ed02208482c","isMergeCommit":false,"messageTitle":"Remove code from main class into run() function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3}}},{"hash":"ef1e0900ca6ddba4c05fac487c845baf8790f7d5","isMergeCommit":false,"messageTitle":"Remove code from main class into run() function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"3d2c68f0f134aaf58979948840e2e5857ddfeed6","isMergeCommit":false,"messageTitle":"Change package name to lower case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":70}}},{"hash":"88c451f43c0017935fc03710e6338bf7dce75f11","isMergeCommit":false,"messageTitle":"Shift DataStorage.java into a commom Java package.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"70828148b73f403292b97fe673d6ea270aab6ff2","isMergeCommit":false,"messageTitle":"Create a command class to be the template of each individual command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"9af44bc7759f1a9f013988802d9bc2000381f5c7","isMergeCommit":false,"messageTitle":"Remove duplicates and redundant exceptions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":83,"deletions":84}}},{"hash":"406289d5c31bcc7d5b4ff84665ff2ee03db4d60b","isMergeCommit":false,"messageTitle":"Catch new streamlined MalformedUserInputException exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"69c1e37cd831c92045628bbe1c74a8cdd25dfe10","isMergeCommit":false,"messageTitle":"Separate the logic for the parser","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":142,"deletions":70}}},{"hash":"a9e063776d8d9fa898541902db051429f39e1888","isMergeCommit":false,"messageTitle":"Enable Todo and Bye command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":7}}},{"hash":"0fa362c759cd50b6cee0e36d35bb671e68dfba24","isMergeCommit":false,"messageTitle":"Add default message for incorrect command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"66707030b4ffd54a38df4b644c5d7708225c93da","isMergeCommit":false,"messageTitle":"Tidy up code and only enable bye and todo command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":19}}},{"hash":"79d2ea173d77c8b2789bfa254fe979fae09e6108","isMergeCommit":false,"messageTitle":"Create List command as own class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":4}}},{"hash":"e30b9e6b830a77763a99f59cddc081b747352ce0","isMergeCommit":false,"messageTitle":"Create deadline command as its own class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":4}}},{"hash":"55575970aa6f3103e60bb8a30df63d880ead4048","isMergeCommit":false,"messageTitle":"Create deadline command as its own class and allow space in event name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":3}}},{"hash":"95868defaed6de11408014a1bcc57f5b41acdbc5","isMergeCommit":false,"messageTitle":"Rename and move the date time handling facility","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":18}}},{"hash":"fe9892532ff8c77636814b6aa082a27008b8de15","isMergeCommit":false,"messageTitle":"Add tab to list command and remove redundant code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":87}}},{"hash":"cc34803b0ba03de1e4a964dd04fb05cb935c42f2","isMergeCommit":false,"messageTitle":"Add mark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":0}}},{"hash":"e8a924439b4aecec995696ac9e29c3ee531f58d9","isMergeCommit":false,"messageTitle":"Add unmark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":0}}},{"hash":"f71b2cb30d2ab39f324ff554d526acd63961afb6","isMergeCommit":false,"messageTitle":"Add delete command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":0}}},{"hash":"64633b55a3228af7e9463b9bb3871af6d4039943","isMergeCommit":false,"messageTitle":"Remove old code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":51}}},{"hash":"5511a11690c38bde5512525283708420803053e5","isMergeCommit":false,"messageTitle":"Add tests to cater for new design","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":2},"java":{"insertions":3,"deletions":3},"sh":{"insertions":4,"deletions":0}}},{"hash":"127af88a34ca48298643e9776b94d026d609794d","isMergeCommit":false,"messageTitle":"Update test case","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":11},"java":{"insertions":13,"deletions":13},"sh":{"insertions":1,"deletions":1}}},{"hash":"9004c08dc391ff91491c2ab6ca4d89103d45cbea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f29f4e5100e4457f72a1c1fbd85adf938fd8770a","isMergeCommit":false,"messageTitle":"Remove enums for ActionTypes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":5}}},{"hash":"fe0e986db79f9a9c35d1618398969b63d4c9f941","isMergeCommit":false,"messageTitle":"Move Ui to new package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"f83b9733618e7f764e4a4651c40248537aa1214d","isMergeCommit":false,"messageTitle":"Modify test case to try bye command","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":2,"deletions":2}}},{"hash":"5ec2b46a11a783759766a3693d1111ef5934ed48","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Jerome-j":{"java":1020,"md":0,"fxml":0,"sh":4,"bat":0,"gradle":0,"txt":23}},"authorContributionVariance":{"Jerome-j":225146.08},"authorDisplayNameMap":{"Jerome-j":"JERO.. JIE"}} diff --git a/JiaXinEu_ip_master/authorship.json b/JiaXinEu_ip_master/authorship.json index a6398114..adce38dd 100644 --- a/JiaXinEu_ip_master/authorship.json +++ b/JiaXinEu_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public interface Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime date;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" public Deadline(String task, String date) {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" this.date \u003d setDate(date);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\", e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" return \"[D]\" + super.printTask() + \" (by: \" + printDate() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"D | %s | %s\", super.toString(), this.date.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" public String printDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" return this.date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":38}},{"path":"src/main/java/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class DeadlineCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" public DeadlineCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Deadline(task[0].substring(9).trim(), task[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":27}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class DeleteCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.delete(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" ui.showDeleted(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":25}},{"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":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public Duke(String file, String fileParent, String name, String logo) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" ui \u003d new Ui(name, logo, System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" storage \u003d new Storage(file, fileParent);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList(storage.readFromFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" } finally {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" String logo \u003d \"\\t ____ __ _ _ __ ___ ___ ____ ___ ____\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" + \" (_ _) /__\\\\( \\\\/ )/__\\\\ / __)/ __)(_ _)/ __)(_ _)\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" + \" .-_)( /(__)\\\\\\\\ //(__)\\\\ \\\\__ \\\\\\\\__ \\\\ _)(_ \\\\__ \\\\ )(\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" + \"\\\\____)(__)(__)\\\\/(__)(__)(___/(___/(____)(___/ (__)\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" new Duke(\"Duke.txt\", \"./data\", \"JavAssist\", logo).run();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":"// public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"// String logo \u003d \"\\t ____ __ _ _ __ ___ ___ ____ ___ ____\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"// + \" (_ _) /__\\\\( \\\\/ )/__\\\\ / __)/ __)(_ _)/ __)(_ _)\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":"// + \" .-_)( /(__)\\\\\\\\ //(__)\\\\ \\\\__ \\\\\\\\__ \\\\ _)(_ \\\\__ \\\\ )(\\n\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":"// + \"\\\\____)(__)(__)\\\\/(__)(__)(___/(___/(____)(___/ (__)\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":"// TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":"// Storage sto \u003d new Storage(\"Duke.txt\", \"./data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":"// list.setList(sto.readFromFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":"// Ui ui \u003d new Ui(\"JavAssist\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":"// ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":"// String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":"// boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":"// while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":"// input \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"// ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":"// try {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":"// Command c \u003d Parser.parseCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":"// c.execute(list, ui, sto);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":"// isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":"// } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":"// ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":"// } finally {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":"// ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":"//// private static InputType getCommandType(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":"//// if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.BYE;","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":"//// return InputType.UNKNOWN;","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":"//// private static void print(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":"//// if (list.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t OOPS!!! No task in list ૮ ´• ﻌ ´• ა\");","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Here are the tasks in your list ૮ ˙Ⱉ˙ ა :\");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":"//// int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":"//// for (Task t : list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t\\t \" + count + \".\" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":"//// count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":"//// private static void add(Task t, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":"//// list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":"//// int size \u003d list.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t ᨐฅ Got it! I\u0027ve added this task:\\n\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Now you have \" + size + (size \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":"//// private static void delete(String input, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":"//// String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":"//// int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":"//// if (num \u003c\u003d list.size() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":"//// Task t \u003d list.remove(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Noted ૮ ˶ᵔ ᵕ ᵔ˶ ა I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Now you have \" + list.size() + (list.size() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t OOPS!!! Task (\" + num + \") not found ૮₍ ˶0_0˶ ₎ა\");","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":"//// print(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":"//// private static void mark(String input, boolean done, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":"//// String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":"//// int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":"//// if (num \u003c\u003d list.getList().size() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":"//// Task t \u003d list.getList().get(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"JiaXinEu"},"content":"//// if (!done) {","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"JiaXinEu"},"content":"//// t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"JiaXinEu"},"content":"//// t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":"//// System.out.println(\"\\t OOPS!!! Task (\" + num + \") not found.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"JiaXinEu"},"content":"//// list.print();","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"JiaXinEu"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"JiaXinEu"},"content":"//// private static void writeToFile(ArrayList\u003cTask\u003e list) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"JiaXinEu"},"content":"//// File f \u003d new File(\"./data/Duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"JiaXinEu"},"content":"//// File parent \u003d new File(\"./data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"JiaXinEu"},"content":"//// if (!parent.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"JiaXinEu"},"content":"//// parent.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"JiaXinEu"},"content":"//// FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"JiaXinEu"},"content":"//// String data \u003d write(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"JiaXinEu"},"content":"//// fw.write(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"JiaXinEu"},"content":"//// fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"JiaXinEu"},"content":"//// private static String write(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"JiaXinEu"},"content":"//// StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"JiaXinEu"},"content":"//// for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"JiaXinEu"},"content":"//// sb.append(list.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"JiaXinEu"},"content":"//// if (i \u003c list.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"JiaXinEu"},"content":"//// sb.append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"JiaXinEu"},"content":"//// return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"JiaXinEu"},"content":"//// private static ArrayList\u003cTask\u003e readFromFile() throws FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"JiaXinEu"},"content":"//// ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"JiaXinEu"},"content":"//// File f \u003d new File(\"./data/Duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"JiaXinEu"},"content":"//// Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"JiaXinEu"},"content":"//// while (s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"JiaXinEu"},"content":"//// list.add(read(s.nextLine()));","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"JiaXinEu"},"content":"//// return list;","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"JiaXinEu"},"content":"//// private static Task read(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"JiaXinEu"},"content":"//// String[] cols \u003d s.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"JiaXinEu"},"content":"//// Task t \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":200,"author":{"gitId":"JiaXinEu"},"content":"//// if (cols.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":201,"author":{"gitId":"JiaXinEu"},"content":"//// t \u003d new Todo(cols[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":202,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":203,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (cols.length \u003d\u003d 4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":204,"author":{"gitId":"JiaXinEu"},"content":"//// t \u003d new Deadline(cols[2], cols[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":205,"author":{"gitId":"JiaXinEu"},"content":"//// } else if (cols.length \u003d\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":206,"author":{"gitId":"JiaXinEu"},"content":"//// t \u003d new Event(cols[2], cols[3], cols[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":207,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":208,"author":{"gitId":"JiaXinEu"},"content":"//// if (cols[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"JiaXinEu"},"content":"//// t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":210,"author":{"gitId":"JiaXinEu"},"content":"//// } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":211,"author":{"gitId":"JiaXinEu"},"content":"//// t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":212,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":213,"author":{"gitId":"JiaXinEu"},"content":"////","lastModifiedDate":"2024-01-29"},{"lineNumber":214,"author":{"gitId":"JiaXinEu"},"content":"//// return t;","lastModifiedDate":"2024-01-29"},{"lineNumber":215,"author":{"gitId":"JiaXinEu"},"content":"//// }","lastModifiedDate":"2024-01-29"},{"lineNumber":216,"author":{"gitId":"JiaXinEu"},"content":"//}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":212,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public Event(String task, String start, String end) {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" this.start \u003d setDate(start);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" this.end \u003d setDate(end);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\", e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" return \"[E]\" + super.printTask() + \" (from: \" + printDate(this.start) + \" to: \" + printDate(this.end) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"E | %s | %s | %s\", super.toString(), this.start.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")), this.end.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" public String printDate(LocalDateTime date) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":39}},{"path":"src/main/java/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class EventCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public EventCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" String[] time \u003d task[1].split(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Event(task[0].substring(6).trim(), time[0].trim(), time[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":30}},{"path":"src/main/java/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":11}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"No task in list.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" \"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" ui.showTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":16}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class MarkCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" private boolean toMark;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" public MarkCommand(String input, boolean toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" this.toMark \u003d toMark;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.getTask(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" if (this.toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" ui.showMarked(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" ui.showUnmarked(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":34}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" public enum InputType {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" LIST,","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" MARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" UNMARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" DELETE,","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" BYE,","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" TODO,","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" DEADLINE,","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" EVENT,","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" UNKNOWN","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public static InputType getCommandType(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" return InputType.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" return InputType.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" return InputType.BYE;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" return InputType.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" return InputType.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNKNOWN;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" public static boolean matchPattern(String input, String pattern) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" Pattern regexPattern \u003d Pattern.compile(pattern);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" return regexPattern.matcher(input).matches();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" public static Command parseCommand(String input) throws DukeException{","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" InputType commandType \u003d getCommandType(lowerInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" case LIST:","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" case MARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, true);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" case UNMARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" case DELETE:","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" return parseDeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" return parseTodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" return parseDeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" return parseEventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" case BYE:","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" case UNKNOWN:","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" return new UnknownCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseMarkCommand(String input, boolean toMark) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":" if (matchPattern(lowerInput, \"mark\\\\s\\\\d+|unmark\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" return new MarkCommand(input, toMark);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" if (toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your mark instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027mark [task number to mark as done]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your unmark instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027unmark [task number to mark as not done]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeleteCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"delete\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your delete instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027delete [task number to be deleted]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseTodoCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"todo\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":" return new TodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027todo [task description]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"deadline\\\\s.+\\\\s/by\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" return new DeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description and due of a deadline cannot be empty.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseEventCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"event\\\\s.+\\\\s/from\\\\s.+\\\\s/to\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" return new EventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description, start and end time of an event cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":149}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" private File f;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" private FileWriter fw;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private Scanner s;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" public Storage(String file, String parent) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" this.f \u003d new File(parent +\"/\" + file);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" File parentDir \u003d new File(parent);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" parentDir.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" this.fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" String data \u003d write(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" this.fw.write(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" this.fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" private String write(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getList();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" sb.append(list.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" if (i \u003c list.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e readFromFile() throws DukeException{","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" if (f.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" this.s \u003d new Scanner(this.f);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" while (this.s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" list.add(read(this.s.nextLine()));","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" return list;","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" private Task read(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" String[] cols \u003d s.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" if (cols.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Todo(cols[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Deadline(cols[2], cols[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Event(cols[2], cols[3], cols[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" if (cols[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" return t;","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":79}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" private String task;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + this.task);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public void done() {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public void undo() {","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"%d | %s\", (this.isDone ? 1 : 0), this.task);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":26}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" this.list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public int getSize() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" return this.list.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return this.list.isEmpty();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public Task delete(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" return this.list.remove(num);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" public String print() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder(\"\\t Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\t\\t \" + count + \".\" + list.get(i).printTask() + (i \u003d\u003d list.size() - 1 ? \"\" : \"\\n\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" public void setList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" return this.list.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return this.list;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":51}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" public Todo(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" return \"[T]\" + super.printTask();","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"T | %s\", super.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":15}},{"path":"src/main/java/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class TodoCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" public TodoCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Todo(input.substring(5));","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":21}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" private static final String LINE \u003d \"\\t________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" private String logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" public Ui(String name, String logo, InputStream inputStream) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" this.logo \u003d logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" this.scanner \u003d new Scanner(inputStream);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Hello! I\u0027m \" + this.name + \".\");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t What can I do for you?\\n\" + LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" public void showLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! \" + errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! Error loading tasks from file.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" public void showMarked(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + task.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" public void showUnmarked(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + task.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" public void showAdded(Task t, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" int size \u003d list.getSize();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Got it! I\u0027ve added this task:\\n\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Now you have \" + size + (size \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" public void showTasks(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" if (list.getSize() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! No task in list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(list.print());","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" public void showDeleted(Task t, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Noted I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Now you have \" + list.getSize() + (list.getSize() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":75}},{"path":"src/main/java/UnknownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"public class UnknownCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Sorry I don\u0027t know what that means.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try keywords: todo, deadline, event, list, mark, unmark, delete.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"todo read book","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"deadline return book","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"deadline return book /by 06-06-2023 12:00","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"deadline submit /by 01/1/2023","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"event project meeting /from 12-03-2024 14:00 /to 12-03-2024 15:00","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"todo join sports club","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"mark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"unmark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"mark 5","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"delete 1","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"hi","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"JiaXinEu":16}},{"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":"JiaXinEu"},"content":"REM delete saved file from previous run","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"rmdir /s /q .\\data","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JiaXinEu":4,"-":21}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# Duke project template","lastModifiedDate":"2024-01-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":"JiaXinEu"},"content":"3. After that, locate the `src/main/java/duke.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":"2024-01-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":{"JiaXinEu":1,"-":23}},{"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":"JiaXinEu"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-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":"JiaXinEu"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-01-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":{"JiaXinEu":2,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public Duke(String file, String fileParent, String name, String logo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" ui \u003d new Ui(name, logo, System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" storage \u003d new Storage(file, fileParent);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList(storage.readFromFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" String logo \u003d \"\\t ____ __ _ _ __ ___ ___ ____ ___ ____\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" + \" (_ _) /__\\\\( \\\\/ )/__\\\\ / __)/ __)(_ _)/ __)(_ _)\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" + \" .-_)( /(__)\\\\\\\\ //(__)\\\\ \\\\__ \\\\\\\\__ \\\\ _)(_ \\\\__ \\\\ )(\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" + \"\\\\____)(__)(__)\\\\/(__)(__)(___/(___/(____)(___/ (__)\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" new Duke(\"Duke.txt\", \"./data\", \"JavAssist\", logo).run();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":54}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public interface Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":12}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"public class DeadlineCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public DeadlineCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Deadline(task[0].substring(9).trim(), task[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d (DeadlineCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(dc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":42}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"public class DeleteCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.delete(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" ui.showDeleted(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d (DeleteCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(dc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":39}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"public class EventCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public EventCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" String[] time \u003d task[1].split(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Event(task[0].substring(6).trim(), time[0].trim(), time[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" EventCommand ec \u003d (EventCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(ec.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":45}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":18}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"No task in list.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" \"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" ui.showTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":23}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"public class MarkCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" private boolean toMark;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public MarkCommand(String input, boolean toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" this.toMark \u003d toMark;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.getTask(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" if (this.toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" ui.showMarked(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" ui.showUnmarked(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d (MarkCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" return (this.toMark \u003d\u003d mc.toMark) \u0026\u0026 (this.input.equals(mc.input));","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":48}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"public class TodoCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public TodoCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Todo(input.substring(5));","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" TodoCommand tc \u003d (TodoCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(tc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":36}},{"path":"src/main/java/duke/command/UnknownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class UnknownCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Sorry I don\u0027t know what that means.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try keywords: todo, deadline, event, list, mark, unmark, delete.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":19}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":7}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime date;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public Deadline(String task, String date) {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" this.date \u003d setDate(date);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\", e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" return \"[D]\" + super.printTask() + \" (by: \" + printDate() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"D | %s | %s\", super.toString(), this.date.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" public String printDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" return this.date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":40}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" public Event(String task, String start, String end) {","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" this.start \u003d setDate(start);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" this.end \u003d setDate(end);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\", e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" return \"[E]\" + super.printTask() + \" (from: \" + printDate(this.start) + \" to: \" + printDate(this.end) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"E | %s | %s | %s\", super.toString(), this.start.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")), this.end.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public String printDate(LocalDateTime date) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" return date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":41}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" private String task;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + this.task);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public void done() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" public void undo() {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"%d | %s\", (this.isDone ? 1 : 0), this.task);","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":28}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" public Todo(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" return \"[T]\" + super.printTask();","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"T | %s\", super.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":17}},{"path":"src/main/java/duke/util/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.DeadlineCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.EventCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.TodoCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.UnknownCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public enum InputType {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" LIST,","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" MARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" UNMARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" DELETE,","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" BYE,","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" TODO,","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" DEADLINE,","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" EVENT,","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" UNKNOWN","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" public static InputType getCommandType(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" return InputType.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" return InputType.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" return InputType.BYE;","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" return InputType.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" return InputType.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNKNOWN;","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" public static boolean matchPattern(String input, String pattern) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" Pattern regexPattern \u003d Pattern.compile(pattern);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" return regexPattern.matcher(input).matches();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" public static Command parseCommand(String input) throws DukeException{","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" InputType commandType \u003d getCommandType(lowerInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" case LIST:","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" case MARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, true);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" case UNMARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" case DELETE:","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" return parseDeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" return parseTodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" return parseDeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" return parseEventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" case BYE:","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" case UNKNOWN:","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" return new UnknownCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseMarkCommand(String input, boolean toMark) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" if (matchPattern(lowerInput, \"mark\\\\s\\\\d+|unmark\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" return new MarkCommand(input, toMark);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" if (toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your mark instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027mark [task number to mark as done]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your unmark instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027unmark [task number to mark as not done]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeleteCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"delete\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your delete instruction is unclear.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027delete [task number to be deleted]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseTodoCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"todo\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" return new TodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027todo [task description]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"deadline\\\\s.+\\\\s/by\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" return new DeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description and due of a deadline cannot be empty.\\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":" \"\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseEventCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"event\\\\s.+\\\\s/from\\\\s.+\\\\s/to\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":" return new EventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description, start and end time of an event cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":162}},{"path":"src/main/java/duke/util/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" private File f;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" private FileWriter fw;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" private Scanner s;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public Storage(String file, String parent) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" this.f \u003d new File(parent +\"/\" + file);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" File parentDir \u003d new File(parent);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" parentDir.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" this.fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" String data \u003d write(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" this.fw.write(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" this.fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" private String write(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getList();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" sb.append(list.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" if (i \u003c list.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e readFromFile() throws DukeException{","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" if (f.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" this.s \u003d new Scanner(this.f);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" while (this.s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" list.add(read(this.s.nextLine()));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" return list;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" private Task read(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" String[] cols \u003d s.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" if (cols.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Todo(cols[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Deadline(cols[2], cols[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Event(cols[2], cols[3], cols[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" if (cols[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" return t;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":87}},{"path":"src/main/java/duke/util/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" this.list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public int getSize() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return this.list.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" return this.list.isEmpty();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" public Task delete(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" return this.list.remove(num);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" public String print() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" if (this.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" return \"\\t No task in list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder(\"\\t Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\t\\t \" + count + \".\" + list.get(i).printTask() + (i \u003d\u003d list.size() - 1 ? \"\" : \"\\n\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" public void setList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" return this.list.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" return this.list;","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":58}},{"path":"src/main/java/duke/util/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" private static final String LINE \u003d \"\\t________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" private String logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public Ui(String name, String logo, InputStream inputStream) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" this.logo \u003d logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" this.scanner \u003d new Scanner(inputStream);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Hello! I\u0027m \" + this.name + \".\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t What can I do for you?\\n\" + LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" public void showLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! \" + errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! Error loading tasks from file.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" public void showMarked(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + task.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" public void showUnmarked(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + task.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" public void showAdded(Task t, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" int size \u003d list.getSize();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Got it! I\u0027ve added this task:\\n\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Now you have \" + size + (size \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" public void showTasks(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" if (list.getSize() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! No task in list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(list.print());","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" public void showDeleted(Task t, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Noted I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Now you have \" + list.getSize() + (list.getSize() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":79}},{"path":"src/test/java/duke/command/DeadlineCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"public class DeadlineCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deadlineFormat_Deadline() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(\"deadline return book /by 20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 0 | return book | 20-12-2020 10:01\", list.getTask(0).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deadlineWrongDateFormat_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(\"deadline return book /by 20/12/2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":39}},{"path":"src/test/java/duke/command/DeleteCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deleteFormat_Deleted() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete 1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(true, list.getList().isEmpty());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deleteNegativeIndex_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete -1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (-1) not found.\\n\" + \"\\t Here are the tasks in your list:\\n\\t\\t 1.\" + dl.printTask(), e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deleteFromEmptyList_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete 1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (1) not found.\\n\\t No task in list.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":59}},{"path":"src/test/java/duke/command/MarkCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" public void execute_mark_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark 2\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 1 | return book | 20-12-2020 10:01\", list.getTask(1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public void execute_unmark_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark 2\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" dl.done();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 0 | return book | 20-12-2020 10:01\", list.getTask(1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" public void execute_markNegative_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark -2\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (-2) not found.\\n\\t Here are the tasks in your list:\\n\\t\\t 1.\" + t.printTask(), e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":67}},{"path":"src/test/java/duke/util/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public void matchPattern_matching_true() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(true, Parser.matchPattern(\"mark 1\", \"mark\\\\s\\\\d+\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public void matchPattern_nonMatching_false() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(false, Parser.matchPattern(\"mark 1 1\", \"mark\\\\s\\\\d+\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_list_inputTypeList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.LIST, Parser.getCommandType(\"list\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_listWithSpace_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.UNKNOWN, Parser.getCommandType(\"list \"));","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_eventWithSpace_inputTypeEvent() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.EVENT, Parser.getCommandType(\"event \"));","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_bye_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.BYE, Parser.getCommandType(\"bye\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_byee_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.UNKNOWN, Parser.getCommandType(\"byee\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_mark_MarkCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"Mark 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new MarkCommand(input, true), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_unmark_MarkCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"unmark 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new MarkCommand(input, false), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_delete_DeleteCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"delete 1000\";","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new DeleteCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deleted_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deleted 1000\";","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Your delete instruction is unclear.\\n\\t Try \u0027delete [task number to be deleted]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_todo_TodoCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"todo read book\";","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new TodoCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_todoNoDescription_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"todo \";","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description of a todo cannot be empty.\\n\\t Try \u0027todo [task description]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deadline_DeadlineCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline return book /by 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new DeadlineCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deadlineMissingDate_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline return book /by \";","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description and due of a deadline cannot be empty.\\n\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deadlineMissingDescription_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline /by 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description and due of a deadline cannot be empty.\\n\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_event_EventCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"event meeting /from 20-12-2023 17:10 /to 20-12-2023 17:30\";","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new EventCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_eventMissingStart_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"event meeting /to 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description, start and end time of an event cannot be empty.\\n\\t Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_eventSwapStartEnd_DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"event meeting /to 20-12-2023 17:10 /from 20-12-2023 10:00\";","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description, start and end time of an event cannot be empty.\\n\\t Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":175}},{"path":"src/test/java/duke/util/StorageStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"public class StorageStub extends Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" public StorageStub(String file, String parent) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" super(file, parent);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e readFromFile() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":22}},{"path":"src/test/java/duke/util/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" public void add_todo_listWithTodo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(arr, list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public void add_todoAndEvent_listWithTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" Event e \u003d new Event(\"meeting\", \"20-12-2023 13:00\", \"20-12-2023 20:00\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" arr.add(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" list.add(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(arr, list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" public void getSize_emptyConstructor_zero() {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(0, list.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" public void getSize_newArrayList_zero() {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(0, list.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" public void delete_zeroIndexed_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(t, list.delete(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" public void delete_oneIndexed_fail() {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" list.delete(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" public void getTask_zeroIndexed_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(t, list.getTask(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" public void getTask_oneIndexed_fail() {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" list.getTask(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" public void print_todoInList_printHeadingAndTodo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"\\t Here are the tasks in your list:\\n\\t\\t 1.\" + t.printTask(), list.print());","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" public void print_emptyList_printHeading() {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"\\t No task in list.\", list.print());","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":111}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"todo read book","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"deadline return book","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"deadline return book /by 06-06-2023 12:00","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"deadline submit /by 01/1/2023","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"event project meeting /from 12-03-2024 14:00 /to 12-03-2024 15:00","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"todo join sports club","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"mark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"unmark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"mark 5","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"delete 1","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"hi","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"JiaXinEu":16}},{"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":"JiaXinEu"},"content":"REM delete saved file from previous run","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"rmdir /s /q .\\data","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"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":22,"author":{"gitId":"JiaXinEu"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JiaXinEu":6,"-":19}}] diff --git a/JiaXinEu_ip_master/commits.json b/JiaXinEu_ip_master/commits.json index 05e3f85a..3645e0b4 100644 --- a/JiaXinEu_ip_master/commits.json +++ b/JiaXinEu_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"JiaXinEu":[{"date":"2024-01-21","commitResults":[{"hash":"21f384f9a0c2769ed31577c5612b4df221382a7d","isMergeCommit":false,"messageTitle":"Rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"616148053b98df69c0eaaf464230a590bf8e3ed8","isMergeCommit":false,"messageTitle":"Add feature to echo command and exit when input bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":7}}},{"hash":"04346c548e6e5a56bd8e2c38831a5dd85362e7ad","isMergeCommit":false,"messageTitle":"Add list to store and display text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"0424a8d75ded333a05043593022ce8586fee1a3f","isMergeCommit":false,"messageTitle":"Add class Task to support mark task as done or not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":9}}},{"hash":"a5f4ef51fd195367fd9f775d5a3e9840fcaf4cb5","isMergeCommit":false,"messageTitle":"Add subclasses Todo, Deadline, Event to support 3 types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":20}}}]},{"date":"2024-01-22","commitResults":[{"hash":"a7b382bd3ef711e63486e5a434959d884c0acc11","isMergeCommit":false,"messageTitle":"Add input.txt and EXPECTED.txt for semi-automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"97c37bd4a51235fcf64a145f40cd96707f9616e7","isMergeCommit":false,"messageTitle":"Add error handling mechanisms to Duke.java","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":66,"deletions":28}}},{"hash":"3107a71934afb6aaa3611e6e946937cb4a482374","isMergeCommit":false,"messageTitle":"Add feature to delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":24,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"6739ff73aa6d4af3799191726bdf57645473cd97","isMergeCommit":false,"messageTitle":"Add enum to handle input type","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":61}}}]},{"date":"2024-01-26","commitResults":[{"hash":"641ba348e75631a9e2785f4f51ec5fc9a1ffb37f","isMergeCommit":false,"messageTitle":"Update Duke.java to save to hard disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":198,"deletions":86}}},{"hash":"48a1d64ddd4788504aa1238410595d57fb4b3522","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f701ce400f7ab0bd009fa3c410fe0871f2a8a962","isMergeCommit":false,"messageTitle":"Modify runtest.bat","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":4,"deletions":0}}}]},{"date":"2024-01-28","commitResults":[{"hash":"b27fb1ab1512e49553890c3f8876a93fb05213ba","isMergeCommit":false,"messageTitle":"Modify type of datetime in Deadline.java and Event.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":66,"deletions":16}}},{"hash":"debf6d1c3f2e1003c49c11dd099a55a76229b0a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"6644835cf1aae1554e39ee2338baf2ef0c6b47fe","isMergeCommit":false,"messageTitle":"Add classes and DukeException.java","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":743,"deletions":296}}}]}]},"authorFileTypeContributionMap":{"JiaXinEu":{"java":870,"md":0,"fxml":0,"sh":0,"bat":4,"gradle":0,"txt":16}},"authorContributionVariance":{"JiaXinEu":83920.43},"authorDisplayNameMap":{"JiaXinEu":"CS2103T-T09-1 EU J.. XIN"}} +{"authorDailyContributionsMap":{"JiaXinEu":[{"date":"2024-01-21","commitResults":[{"hash":"21f384f9a0c2769ed31577c5612b4df221382a7d","isMergeCommit":false,"messageTitle":"Rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"616148053b98df69c0eaaf464230a590bf8e3ed8","isMergeCommit":false,"messageTitle":"Add feature to echo command and exit when input bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":7}}},{"hash":"04346c548e6e5a56bd8e2c38831a5dd85362e7ad","isMergeCommit":false,"messageTitle":"Add list to store and display text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"0424a8d75ded333a05043593022ce8586fee1a3f","isMergeCommit":false,"messageTitle":"Add class Task to support mark task as done or not done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":9}}},{"hash":"a5f4ef51fd195367fd9f775d5a3e9840fcaf4cb5","isMergeCommit":false,"messageTitle":"Add subclasses Todo, Deadline, Event to support 3 types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":20}}}]},{"date":"2024-01-22","commitResults":[{"hash":"a7b382bd3ef711e63486e5a434959d884c0acc11","isMergeCommit":false,"messageTitle":"Add input.txt and EXPECTED.txt for semi-automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"97c37bd4a51235fcf64a145f40cd96707f9616e7","isMergeCommit":false,"messageTitle":"Add error handling mechanisms to Duke.java","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":66,"deletions":28}}},{"hash":"3107a71934afb6aaa3611e6e946937cb4a482374","isMergeCommit":false,"messageTitle":"Add feature to delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":24,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"6739ff73aa6d4af3799191726bdf57645473cd97","isMergeCommit":false,"messageTitle":"Add enum to handle input type","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":61}}}]},{"date":"2024-01-26","commitResults":[{"hash":"641ba348e75631a9e2785f4f51ec5fc9a1ffb37f","isMergeCommit":false,"messageTitle":"Update Duke.java to save to hard disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":198,"deletions":86}}},{"hash":"48a1d64ddd4788504aa1238410595d57fb4b3522","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f701ce400f7ab0bd009fa3c410fe0871f2a8a962","isMergeCommit":false,"messageTitle":"Modify runtest.bat","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":4,"deletions":0}}}]},{"date":"2024-01-28","commitResults":[{"hash":"b27fb1ab1512e49553890c3f8876a93fb05213ba","isMergeCommit":false,"messageTitle":"Modify type of datetime in Deadline.java and Event.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":66,"deletions":16}}},{"hash":"debf6d1c3f2e1003c49c11dd099a55a76229b0a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"6644835cf1aae1554e39ee2338baf2ef0c6b47fe","isMergeCommit":false,"messageTitle":"Add classes and DukeException.java","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":743,"deletions":296}}}]},{"date":"2024-01-30","commitResults":[{"hash":"eeb568a5b46ebbd64256e035e9b87d250d58a6a7","isMergeCommit":false,"messageTitle":"Move classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":220},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"39a4d5518175c0adad469a546050eded83432dd3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"b5a0891b1172db2115abed0d36d67ef103e88832","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"33a887513f98f0630d1f258fd89e2f1677adb00f","isMergeCommit":false,"messageTitle":"Modify mainClass in build.gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"md":{"insertions":1,"deletions":1}}},{"hash":"6838f29f6da99f0db1b9e1486c7a820deb0e5610","isMergeCommit":false,"messageTitle":"Add test folder for JUnit testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":508,"deletions":2}}},{"hash":"db67256ec758262faafa5dfe753b44ad7e07608a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"96b3b70111ec08ff01fa63fbad07a7ada5b7aeca","isMergeCommit":false,"messageTitle":"Update details of shadowJar","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"8ca4b357290c14d7075cb5c16b032f90d6f23bd4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"","tags":["v0.1","A-Jar"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"JiaXinEu":{"java":1328,"md":1,"fxml":0,"sh":0,"bat":6,"gradle":2,"txt":16}},"authorContributionVariance":{"JiaXinEu":117908.914},"authorDisplayNameMap":{"JiaXinEu":"CS2103T-T09-1 EU J.. XIN"}} diff --git a/LifHoshi_ip_master/authorship.json b/LifHoshi_ip_master/authorship.json index ab966073..0f5e1355 100644 --- a/LifHoshi_ip_master/authorship.json +++ b/LifHoshi_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ChatBotTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"import java.sql.SQLOutput;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"public class ChatBotTest {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" Ping p \u003d new Ping();","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" String name \u003d p.name;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" // The Welcome Part","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Hello! I\u0027m \"+name+","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" // The Scanner Part","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" String commands \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" if (commands.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" p.goodBye();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.equals(\"blah\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"haha, that\u0027s humorous\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" else if (commands.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" p.listTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"delete\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" String[] delCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(delCommand[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" p.delete(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" else if (commands.indexOf(\"mark\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" String[] markCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(markCommand[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" p.markJobs(p.tasks.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"unmark\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" String[] unmarkCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(unmarkCommand[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" p.unMarkJobs(p.tasks.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"todo\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" String[] todoCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c todoCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + todoCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" Todo j \u003d new Todo(rest);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" p.todoJobs(j);","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Todo what? you can\u0027t to do nothing right?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"deadline\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" String[] dlCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" String date \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c dlCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" if (dlCommand[i].equals(\"/by\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" idx \u003d i;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + dlCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"LifHoshi"},"content":" // Check for weekdays or month","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"LifHoshi"},"content":" int check \u003d idx + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"LifHoshi"},"content":" for (int j \u003d idx + 1; j \u003c dlCommand.length; j++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"LifHoshi"},"content":" if (check !\u003d dlCommand.length - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"LifHoshi"},"content":" date \u003d date + dlCommand[j] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"LifHoshi"},"content":" check++;","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"LifHoshi"},"content":" date \u003d date + dlCommand[j];","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"LifHoshi"},"content":" Deadline dl \u003d new Deadline(rest, date);","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"LifHoshi"},"content":" p.dlJobs(dl);","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"deadline? what thing make you so hurry that even dont tell me?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"event\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"LifHoshi"},"content":" String[] evCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"LifHoshi"},"content":" String date1 \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"LifHoshi"},"content":" String date2 \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c evCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"LifHoshi"},"content":" if (evCommand[i].equals(\"/from\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"LifHoshi"},"content":" idx \u003d i;","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + evCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"LifHoshi"},"content":" int idx2 \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"LifHoshi"},"content":" for (int j \u003d idx + 1; j \u003c evCommand.length; j++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"LifHoshi"},"content":" if (evCommand[j].equals(\"/to\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"LifHoshi"},"content":" idx2 \u003d j;","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"LifHoshi"},"content":" date1 \u003d date1 + evCommand[j] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"LifHoshi"},"content":" int check \u003d idx2 + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"LifHoshi"},"content":" for (int k \u003d idx2 + 1; k \u003c evCommand.length; k++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"LifHoshi"},"content":" if (check !\u003d evCommand.length - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"LifHoshi"},"content":" date2 \u003d date2 + evCommand[k] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"LifHoshi"},"content":" check++;","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"LifHoshi"},"content":" date2 \u003d date2 + evCommand[k];","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"LifHoshi"},"content":" Event e \u003d new Event(rest, date1, date2);","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"LifHoshi"},"content":" p.evJobs(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"event what? I need a thing!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"LifHoshi"},"content":" else {","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"LifHoshi"},"content":" Task t \u003d new Task(commands);","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"LifHoshi"},"content":" p.addTask(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LifHoshi":150}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" public Deadline(String destription, String by){","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" super(destription);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" public Event(String destription, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" super(destription);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" return \"[E]\" + super.toString() + \"(from: \" + this.from + \"to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":16}},{"path":"src/main/java/Ping.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"import java.sql.SQLOutput;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"public class Ping {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" final String name \u003d \"Ping\";","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" public void addTask(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"added: \" + i.description);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"No ability added yet\");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d i + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" //System.out.printf(\"%d. \" + tasks.get(i).description + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" if (tasks.get(i).isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"%d.\" + tasks.get((i)).toString() + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"%d.\" + tasks.get(i).toString() + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" public void markJobs(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" i.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" public void unMarkJobs(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" i.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" public void goodBye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" public void todoJobs(Todo i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" public void dlJobs(Deadline i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" public void evJobs(Event i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" public void delete(int i) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" System.out.println(tasks.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" tasks.remove(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LifHoshi":78}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" if (isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" return \"[X] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":19}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"blah","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"read book","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"return book","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":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":"LifHoshi"},"content":"java -classpath ..\\bin ChatBotTest \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"LifHoshi":1}}] +[{"path":"src/main/java/ChatBotTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"import java.sql.SQLOutput;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"public class ChatBotTest {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" Ping p \u003d new Ping();","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" String name \u003d p.name;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" p.tasks \u003d FileManage.loadFiles();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" // The Welcome Part","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Hello! I\u0027m \"+name+","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" // The Scanner Part","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" String commands \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" if (commands.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" p.goodBye();","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.equals(\"blah\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"haha, that\u0027s humorous\");","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" else if (commands.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" p.listTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"delete\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" String[] delCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(delCommand[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" p.delete(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" else if (commands.indexOf(\"mark\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" String[] markCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(markCommand[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" p.markJobs(p.tasks.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"unmark\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" String[] unmarkCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" int i \u003d Integer.parseInt(unmarkCommand[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" p.unMarkJobs(p.tasks.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"todo\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" String[] todoCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c todoCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + todoCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" Todo j \u003d new Todo(rest);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" p.todoJobs(j);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Todo what? you can\u0027t to do nothing right?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"deadline\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" String[] dlCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" String date \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c dlCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":" if (dlCommand[i].equals(\"/by\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"LifHoshi"},"content":" idx \u003d i;","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + dlCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"LifHoshi"},"content":" // Check for weekdays or month","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"LifHoshi"},"content":" int check \u003d idx + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"LifHoshi"},"content":" for (int j \u003d idx + 1; j \u003c dlCommand.length; j++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"LifHoshi"},"content":" if (check !\u003d dlCommand.length - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"LifHoshi"},"content":" date \u003d date + dlCommand[j] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"LifHoshi"},"content":" check++;","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"LifHoshi"},"content":" date \u003d date + dlCommand[j];","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"LifHoshi"},"content":" Deadline dl \u003d new Deadline(rest, date);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"LifHoshi"},"content":" p.dlJobs(dl);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"deadline? what thing make you so hurry that even dont tell me?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"LifHoshi"},"content":" } else if (commands.indexOf(\"event\") \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"LifHoshi"},"content":" String[] evCommand \u003d commands.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"LifHoshi"},"content":" String rest \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"LifHoshi"},"content":" String date1 \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"LifHoshi"},"content":" String date2 \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 1; i \u003c evCommand.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"LifHoshi"},"content":" if (evCommand[i].equals(\"/from\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"LifHoshi"},"content":" idx \u003d i;","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"LifHoshi"},"content":" rest \u003d rest + evCommand[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"LifHoshi"},"content":" int idx2 \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"LifHoshi"},"content":" for (int j \u003d idx + 1; j \u003c evCommand.length; j++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"LifHoshi"},"content":" if (evCommand[j].equals(\"/to\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"LifHoshi"},"content":" idx2 \u003d j;","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"LifHoshi"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"LifHoshi"},"content":" date1 \u003d date1 + evCommand[j] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"LifHoshi"},"content":" int check \u003d idx2 + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"LifHoshi"},"content":" for (int k \u003d idx2 + 1; k \u003c evCommand.length; k++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"LifHoshi"},"content":" if (check !\u003d evCommand.length - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"LifHoshi"},"content":" date2 \u003d date2 + evCommand[k] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"LifHoshi"},"content":" check++;","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"LifHoshi"},"content":" date2 \u003d date2 + evCommand[k];","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"LifHoshi"},"content":" Event e \u003d new Event(rest, date1, date2);","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"LifHoshi"},"content":" if (rest.length() \u003e 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"LifHoshi"},"content":" p.evJobs(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"event what? I need a thing!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Incorrect number or command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"LifHoshi"},"content":" else {","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"LifHoshi"},"content":" Task t \u003d new Task(commands);","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"LifHoshi"},"content":" p.addTask(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"LifHoshi"},"content":" FileManage.saveFiles(p.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LifHoshi":157}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" public Deadline(String destription, String by){","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" super(destription);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" public Event(String destription, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" super(destription);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" return \"[E]\" + super.toString() + \"(from: \" + this.from + \"to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":16}},{"path":"src/main/java/FileManage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"import java.io.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"public class FileManage {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" private static final String PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" public static void saveFiles(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" File file \u003d new File(PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" File dir \u003d new File(\"./data\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" if (!dir.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" dir.mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" FileOutputStream fout \u003d new FileOutputStream(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" ObjectOutputStream oot \u003d new ObjectOutputStream(fout);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" oot.writeObject(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" oot.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" fout.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Oops! Something goes wrong!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" public static ArrayList\u003cTask\u003e loadFiles() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" File file \u003d new File(PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" FileInputStream inputStream \u003d new FileInputStream(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" ObjectInputStream objInputStream \u003d new ObjectInputStream(inputStream);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" tasks \u003d (ArrayList\u003cTask\u003e) objInputStream.readObject();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" objInputStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" inputStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Oops! Something is missing\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Oops! class doesn\u0027t find\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"LifHoshi":51}},{"path":"src/main/java/Ping.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"public class Ping {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" final String name \u003d \"Ping\";","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" public void addTask(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"added: \" + i.description);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"No ability added yet\");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" int idx \u003d i + 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" //System.out.printf(\"%d. \" + tasks.get(i).description + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" if (tasks.get(i).isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"%d.\" + tasks.get((i)).toString() + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"%d.\" + tasks.get(i).toString() + \"%n\", idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" public void markJobs(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" i.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" public void unMarkJobs(Task i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" i.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" public void goodBye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" public void todoJobs(Todo i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" public void dlJobs(Deadline i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" public void evJobs(Event i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" tasks.add(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" System.out.println(i.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" public void delete(int i) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" System.out.println(tasks.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" tasks.remove(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" int numOfWork \u003d tasks.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" System.out.printf(\"Now you have %d tasks in the list.\" + \"%n\", numOfWork);","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"LifHoshi":78}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"public class Task implements Serializable {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" if (isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" return \"[X] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":19}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"//// Solution below adapted by week2 iP Level-3 Partial solution","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"blah","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"read book","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"return book","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"LifHoshi":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":"LifHoshi"},"content":"java -classpath ..\\bin ChatBotTest \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"LifHoshi":1}},{"path":"data/duke.txt","fileType":"txt","isBinary":true,"lines":[],"authorContributionMap":{"LifHoshi":0}}] diff --git a/LifHoshi_ip_master/commits.json b/LifHoshi_ip_master/commits.json index faa623bc..8a3cef57 100644 --- a/LifHoshi_ip_master/commits.json +++ b/LifHoshi_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LifHoshi":[{"date":"2024-01-23","commitResults":[{"hash":"a19c0b42e06a037e72a138e1ece955a5067f0fde","isMergeCommit":false,"messageTitle":"Rename,Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"e0aa626817376ce3d02d1e1d3947c25e1934276c","isMergeCommit":false,"messageTitle":"Updated Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"5fedca0d8045fac35641ce1171a117a8356d5023","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"db3417e60c72b380d58a4b4761709c5bdf05de33","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}},{"hash":"7c7faffb915040a53c9bafa816550c3e11b3d314","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":7}}},{"hash":"df06327bbbb99753b4031728bc64e028eb4b79d4","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":6}}},{"hash":"7f8b3a65ac9383c2779956cfaa3228fcb3a4f844","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"bdbdbba1406c4406c972cb9601f35e69db569d65","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"3cb382ad2eda127ddf08b77a399b6b9d4780bdcd","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"LifHoshi":{"java":288,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"LifHoshi":8451.959},"authorDisplayNameMap":{"LifHoshi":"CS2103T-W11-2 WANG..LIFU"}} +{"authorDailyContributionsMap":{"LifHoshi":[{"date":"2024-01-23","commitResults":[{"hash":"a19c0b42e06a037e72a138e1ece955a5067f0fde","isMergeCommit":false,"messageTitle":"Rename,Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"e0aa626817376ce3d02d1e1d3947c25e1934276c","isMergeCommit":false,"messageTitle":"Updated Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"5fedca0d8045fac35641ce1171a117a8356d5023","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"db3417e60c72b380d58a4b4761709c5bdf05de33","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}},{"hash":"7c7faffb915040a53c9bafa816550c3e11b3d314","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":7}}},{"hash":"df06327bbbb99753b4031728bc64e028eb4b79d4","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":6}}},{"hash":"7f8b3a65ac9383c2779956cfaa3228fcb3a4f844","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"bdbdbba1406c4406c972cb9601f35e69db569d65","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"3cb382ad2eda127ddf08b77a399b6b9d4780bdcd","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"dfea069cece212af0ccb408352378567be965692","isMergeCommit":false,"messageTitle":"Level-7 Add TaskStorage","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"LifHoshi":{"java":346,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"LifHoshi":5560.1665},"authorDisplayNameMap":{"LifHoshi":"CS2103T-W11-2 WANG..LIFU"}} diff --git a/Lin-Shuang-Shuang_ip_master/authorship.json b/Lin-Shuang-Shuang_ip_master/authorship.json index fff55543..ea1e508c 100644 --- a/Lin-Shuang-Shuang_ip_master/authorship.json +++ b/Lin-Shuang-Shuang_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | return book | 2019-10-15","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Aug 6th 2pm-4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | run","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Mon 2pm-4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | return book | 2019-10-15","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Mon 2pm -4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | read | 2020-12-22","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | read | 2020-12-22","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Lin-Shuang-Shuang":11}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"D\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private LocalDate deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Deadline(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description.split(\"/\")[0]);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.deadline \u003d LocalDate.parse(description.split(\"/by \")[1], formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Deadline(String event, String extraInfo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.deadline \u003d LocalDate.parse(extraInfo.replace(\u0027/\u0027,\u0027-\u0027), formatter);;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.deadline.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"(by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":38}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Duke is a chatbot program that is used to save tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @author Lin Shuang Shuang","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @version 1.0","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @since 2023-01-25","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String NAME;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String FILENAME \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Duke(String NAME) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.NAME \u003d NAME;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void checkDateFormat(String date) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" LocalDate d \u003d LocalDate.parse(date, this.formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (Exception ex) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"// do something for invalid dateformat","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Date not keyed in correct format! Correct format is yyyy-MM-dd\"+ex);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void loadTasks() throws DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" File tasksFile \u003d new File(FILENAME);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (!tasksFile.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" tasksFile.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Scanner s \u003d new Scanner(tasksFile);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] splitLine \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String event \u003d splitLine[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String type \u003d splitLine[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task newTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (splitLine.length \u003c 3 || splitLine.length \u003e4) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Textfile not in correct format!\" + splitLine.length);","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (type.equalsIgnoreCase(\"T\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Todo(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (type.equalsIgnoreCase(\"D\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String extraInfo \u003d splitLine[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" checkDateFormat(extraInfo);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Deadline(event, extraInfo);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (type.equalsIgnoreCase(\"E\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String extraInfo \u003d splitLine[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Event(event, extraInfo);","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Invalid type!\" + type);","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Error loading tasks from file\");","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void saveTasks(Task newTask) throws DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d \" | 0 | \";","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg \u003d \"\\n\" + newTask.getType() + msg + newTask.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (newTask instanceof Event || newTask instanceof Deadline) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg +\u003d \"| \" + newTask.getExtraInfoShortened();","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" FileWriter fw \u003d new FileWriter(FILENAME, true);","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" fw.write(msg);","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" fw.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Error saving tasks from file\");","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":96,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String greet() {","lastModifiedDate":"2024-01-21"},{"lineNumber":97,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.LINE + \"Hello! I\u0027m \" + this.NAME + \"\\n\" + \"What can I do for you?\\n\" + this.LINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String exit() {","lastModifiedDate":"2024-01-21"},{"lineNumber":100,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.LINE + \"Bye. Hope to see you again soon!\\n\" + this.LINE ;","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":102,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":103,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String printList(){","lastModifiedDate":"2024-01-21"},{"lineNumber":104,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String list \u003d this.LINE + \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" for (int i \u003d 0; i\u003cthis.taskList.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":106,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task task \u003d this.taskList.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String message \u003d Integer.toString(i+1) + \".\" +\"[\" +task.getType()+\"]\"+\"[\" + task.getStatusIcon() +\"] \" + task.getDescription() + task.getExtraInfo() + \"\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" list +\u003d message;","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":110,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":111,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return list + this.LINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":113,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":114,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String addTask(String command) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d this.LINE + \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task newTask \u003d new Task(command);","lastModifiedDate":"2024-01-22"},{"lineNumber":117,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Todo(command.substring(5));","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event name.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"deadline\")){","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] taskDesc \u003d command.substring(9).split(\"/by \");","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" checkDateFormat(taskDesc[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Deadline(taskDesc[0], taskDesc[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event details.\" + e);","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"event\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Event(command.substring(6));","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event details.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide a valid command.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" saveTasks(newTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg \u003d msg+\"[\"+ newTask.getType() +\"]\"+ \"[\"+newTask.getStatusIcon() +\"]\" + \" \" +","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask.getDescription() + newTask.getExtraInfo() +\"\\nNow you have \" +","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer.toString(taskList.size()) +\" tasks in the list.\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":147,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg+this.LINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":150,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":151,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String deleteTask(Task task) {","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.remove(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d \"Noted. I\u0027ve removed this task:\\n\" + task.getType() + \"[\" + task.getStatusIcon() + \"]\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \" \" + task.getDescription() + task.getExtraInfo() + \"\\nNow you have \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer.toString(taskList.size()) + \" tasks in the list.\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg;","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void processCmd(String command) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.printList());","lastModifiedDate":"2024-01-21"},{"lineNumber":162,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":163,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(5));","lastModifiedDate":"2024-01-22"},{"lineNumber":165,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + this.taskList.get(id - 1).markAsDone() + \"\\n\" + this.LINE);","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":172,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":173,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2024-01-22"},{"lineNumber":175,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + this.taskList.get(id - 1).markAsDone() + \"\\n\" + this.LINE);","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + this.deleteTask(this.taskList.get(id - 1)) + \"\\n\" + this.LINE);","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-21"},{"lineNumber":191,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.addTask(command));","lastModifiedDate":"2024-01-22"},{"lineNumber":192,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":193,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":194,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":195,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void startChat() throws DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":199,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" loadTasks();","lastModifiedDate":"2024-01-27"},{"lineNumber":200,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.greet());","lastModifiedDate":"2024-01-23"},{"lineNumber":201,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" while(scanner.hasNext()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.exit());","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":208,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":209,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.processCmd(command);","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE+e.getMessage() +\"\\n\"+this.LINE);","lastModifiedDate":"2024-01-27"},{"lineNumber":213,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":214,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":215,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":216,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":217,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":218,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * This is the main method which starts the chatbot.","lastModifiedDate":"2024-01-27"},{"lineNumber":219,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @param args Unused.","lastModifiedDate":"2024-01-27"},{"lineNumber":220,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @return Nothing.","lastModifiedDate":"2024-01-27"},{"lineNumber":221,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @exception IOException On input error.","lastModifiedDate":"2024-01-27"},{"lineNumber":222,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @see IOException","lastModifiedDate":"2024-01-27"},{"lineNumber":223,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":224,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":225,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Duke Lery \u003d new Duke(\"Lery\");","lastModifiedDate":"2024-01-21"},{"lineNumber":226,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Lery.startChat();","lastModifiedDate":"2024-01-21"},{"lineNumber":227,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":229,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":230,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Lin-Shuang-Shuang":227,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public DukeException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super();","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Lin-Shuang-Shuang":9}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"E\";","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Event(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description.split(\"/\")[0]);","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" int fromId \u003d description.indexOf(\"/from\");","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" int toId \u003d description.indexOf(\"/to\");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.start \u003d description.substring(fromId +6, toId);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.end \u003d description.substring(toId +4);","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Event(String event, String extraInfo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] x \u003d extraInfo.split(\"-\");","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.start \u003d x[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.end \u003d x[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.start + \"-\" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":35}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.isDone \u003d !isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d this.isDone ? \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" : \"OK, I\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg + \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":36}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"T\";","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Lin-Shuang-Shuang":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":"-"},"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":"Lin-Shuang-Shuang"},"content":" mainClass.set(\"Lery.Lery\")","lastModifiedDate":"2024-01-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":"Lin-Shuang-Shuang"},"content":" archiveBaseName \u003d \"Lery\"","lastModifiedDate":"2024-01-30"},{"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":{"Lin-Shuang-Shuang":2,"-":40}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | return book | 2019-10-15","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Aug 6th 2pm-4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | run","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Mon 2pm-4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | return book | 2019-10-15","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"E | 0 | project meeting | Mon 2pm -4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | read | 2020-12-22","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | read | 2020-12-22","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | eat","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"D | 0 | shower | 2020-12-22","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"T | 0 | run","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":14}},{"path":"src/main/java/Lery/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public DukeException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super();","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Lin-Shuang-Shuang":11}},{"path":"src/main/java/Lery/Lery.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * Duke is a chatbot program that is used to save tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @author Lin Shuang Shuang","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @version 1.0","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @since 2023-01-25","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Lery {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Lery() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void run() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" ui.greet();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage.loadTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" while(scanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Parser p \u003d new Parser(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" ui.exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" ui.printMessageWithLine(p.parseCommand(command));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" ui.printMessageWithLine(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * This is the main method which starts the chatbot.","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @param args Unused.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @return Nothing.","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @exception IOException On input error.","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" * @see IOException","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Lery Lery \u003d new Lery();","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Lery.run();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":69}},{"path":"src/main/java/Lery/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import Lery.task.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Parser(Storage s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage \u003d s;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String parseCommand(String command) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" TaskList taskList \u003d this.storage.getTaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return taskList.printList();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return taskList.getTask(id - 1).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return taskList.getTask(id - 1).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer id \u003d Integer.parseInt(command.substring(7));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.parseDeleteTaskCommand(taskList.getTask(id - 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a valid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please enter a task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.parseAddTaskCommand(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String parseAddTaskCommand(String command) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task newTask \u003d new Task(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (command.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Todo(command.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event name.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"deadline\")){","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] taskDesc \u003d command.substring(9).split(\"/by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage.checkDateFormat(taskDesc[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Deadline(taskDesc[0], taskDesc[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event details.\" + e);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (command.startsWith(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Event(command.substring(6));","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide event details.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Please provide a valid command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage.saveTasks(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg \u003d msg+\"[\"+ newTask.getType() +\"]\"+ \"[\"+newTask.getStatusIcon() +\"]\" + \" \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask.getDescription() + newTask.getExtraInfo() +\"\\nNow you have \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer.toString(this.storage.getSize()) +\" tasks in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String parseDeleteTaskCommand(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.storage.delete(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d \"Noted. I\u0027ve removed this task:\\n\" + task.getType() + \"[\" + task.getStatusIcon() + \"]\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \" \" + task.getDescription() + task.getExtraInfo() + \"\\nNow you have \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Integer.toString(this.storage.getSize()) + \" tasks in the list.\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg;","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":99}},{"path":"src/main/java/Lery/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import Lery.task.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private File tasksFile;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private String FILENAME \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Storage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public TaskList loadTasks() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" File file \u003d new File(FILENAME);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"hey\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] splitLine \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String event \u003d splitLine[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String type \u003d splitLine[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (splitLine.length \u003c 3 || splitLine.length \u003e 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Textfile not in correct format!\" + splitLine.length);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (type.equalsIgnoreCase(\"T\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Todo(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (type.equalsIgnoreCase(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String extraInfo \u003d splitLine[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" checkDateFormat(extraInfo);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Deadline(event, extraInfo);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else if (type.equalsIgnoreCase(\"E\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String extraInfo \u003d splitLine[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" newTask \u003d new Event(event, extraInfo);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Invalid type!\" + type);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" s.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Error loading tasks from file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void saveTasks(Task newTask) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d \" | 0 | \";","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg \u003d \"\\n\" + newTask.getType() + msg + newTask.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" if (newTask instanceof Event || newTask instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" msg +\u003d \"| \" + newTask.getExtraInfoShortened();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" FileWriter fw \u003d new FileWriter(FILENAME, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" fw.write(msg);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Error saving tasks to file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void checkDateFormat(String date) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" LocalDate d \u003d LocalDate.parse(date, this.formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" } catch (Exception ex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" throw new DukeException(\"Erm... Date not keyed in correct format! Correct format is yyyy-MM-dd\"+ex);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.taskList.getSize();","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void delete(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.delete(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":102}},{"path":"src/main/java/Lery/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String logo \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \" _ \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \"| | ___ _ __ _ _ \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \"| | / _ \\\\ \u0027__| | | |\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \"| |__| __/ | | |_| |\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \"|_____\\\\___|_| \\\\__, |\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" \" |___/ \\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void printMessageWithLine(String m) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + m + \"\\n\"+ this.LINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void greet() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + logo + \"Hello! I\u0027m Lery.Lery\" + \"\\n\" + \"What can I do for you?\\n\" +this.LINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void exit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" System.out.println(this.LINE + \"Bye. Hope to see you again soon!\\n\" + this.LINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":24}},{"path":"src/main/java/Lery/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"D\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private LocalDate deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Deadline(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description.split(\"/\")[0]);","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.deadline \u003d LocalDate.parse(description.split(\"/by \")[1], formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Deadline(String event, String extraInfo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.deadline \u003d LocalDate.parse(extraInfo.replace(\u0027/\u0027,\u0027-\u0027), formatter);;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.deadline.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"(by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":39}},{"path":"src/main/java/Lery/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"E\";","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Event(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description.split(\"/\")[0]);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" int fromId \u003d description.indexOf(\"/from\");","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" int toId \u003d description.indexOf(\"/to\");","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.start \u003d description.substring(fromId +6, toId-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.end \u003d description.substring(toId +4);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Event(String event, String extraInfo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String[] x \u003d extraInfo.split(\"-\");","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.start \u003d x[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.end \u003d x[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.start + \"-\" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":37}},{"path":"src/main/java/Lery/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.isDone \u003d !isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String msg \u003d this.isDone ? \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" : \"OK, I\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return msg + \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":38}},{"path":"src/main/java/Lery/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public TaskList(ArrayList\u003cTask\u003e tl) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList \u003d tl;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void delete(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" this.taskList.remove(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Task getTask(int id) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.taskList.get(id);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String printList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String list \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" for (int i \u003d 0; i\u003cthis.getSize(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task task \u003d this.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" String message \u003d Integer.toString(i+1) + \".\" +\"[\" +task.getType()+\"]\"+\"[\" + task.getStatusIcon() +\"] \" + task.getDescription() + task.getExtraInfo()+\"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" list +\u003d message;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":44}},{"path":"src/main/java/Lery/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" private final String TYPE \u003d \"T\";","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return this.TYPE;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfoShortened() {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public String getExtraInfo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" return \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Lin-Shuang-Shuang":20}},{"path":"src/test/java/Lery/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetType(){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"D\", new Deadline(\"return book\", \"2024/01/22\").getType());","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfo(){","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"(by: Jan 22 2024)\", new Deadline(\"return book\", \"2024/01/22\").getExtraInfo());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfoShortened(){","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"2024-01-22\", new Deadline(\"return book\", \"2024/01/22\").getExtraInfoShortened());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":21}},{"path":"src/test/java/Lery/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class EventTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetType(){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"E\", new Event(\"project meeting /from Mon 2pm /to 4pm\").getType());","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfo(){","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\" (from: Mon 2pm to: 4pm)\", new Event(\"project meeting /from Mon 2pm /to 4pm\").getExtraInfo());","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfoShortened(){","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"Mon 2pm-4pm\", new Event(\"project meeting /from Mon 2pm /to 4pm\").getExtraInfoShortened());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":24}},{"path":"src/test/java/Lery/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetStatusIcon(){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\" \", new Task(\"read book\").getStatusIcon());","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetDescription(){","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"read book\", new Task(\"read book\").getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testMarkAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"Nice! I\u0027ve marked this task as done:\\n\" + \"[X] \" + \"read book\", new Task(\"read book\").markAsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testUnmarkAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" Task t \u003d new Task(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"OK, I\u0027ve marked this task as not done yet:\\n\" + \"[ ] \" + \"read book\", t.markAsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetType(){","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"\", new Task(\"read book\").getType());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfo(){","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"\", new Task(\"read book\").getExtraInfo());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfoShortened(){","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"\", new Task(\"read book\").getExtraInfoShortened());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":39}},{"path":"src/test/java/Lery/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"package Lery.task; //same package as the class being tested","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"public class TodoTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetType(){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"T\", new Todo(\"read book\").getType());","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfo(){","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"\", new Todo(\"read book\").getExtraInfo());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" public void testGetExtraInfoShortened(){","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" assertEquals(\"\", new Todo(\"read book\").getExtraInfoShortened());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Lin-Shuang-Shuang"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Lin-Shuang-Shuang":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Lin-Shuang-Shuang"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Lin-Shuang-Shuang":4}}] diff --git a/Lin-Shuang-Shuang_ip_master/commits.json b/Lin-Shuang-Shuang_ip_master/commits.json index c896b285..49f09fda 100644 --- a/Lin-Shuang-Shuang_ip_master/commits.json +++ b/Lin-Shuang-Shuang_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Lin-Shuang-Shuang":[{"date":"2024-01-21","commitResults":[{"hash":"cad288eb3d92b0fc6fe2cc8bba1a3841541fca08","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}},{"hash":"eac43d9159f8125bc7e5c3996571d6b1b0e24387","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}},{"hash":"10949b76df08c57d387049323c5f76393f07d017","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":5}}}]},{"date":"2024-01-22","commitResults":[{"hash":"73d2dc90b47dcbb2297335383549c22dcf37a599","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}},{"hash":"58ea966f7ecd565c58e0946c2d654303bd5f008a","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":10}}}]},{"date":"2024-01-23","commitResults":[{"hash":"7e5061717d23a2800061764bf2b6e2d5900f9321","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"01d8f09f22de68492837aab23060b21adc8398ed","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":22}}},{"hash":"36a520a9b9d12c6e997928aa4047f23e0bc48238","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":9}}}]},{"date":"2024-01-27","commitResults":[{"hash":"137847916f5ee4a4960187ce7ac3743ce42c7808","isMergeCommit":false,"messageTitle":"Add saving tasks in and loading tasks from hard disk feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":129,"deletions":28}}}]},{"date":"2024-01-28","commitResults":[{"hash":"cf2ed3d52216609e4a09ad3c27a10b9d16e42f97","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"50d65dad464b97f2f7aab71cc1ac74e0c13c0508","isMergeCommit":false,"messageTitle":"Add dates and times to deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":5},"java":{"insertions":36,"deletions":7}}},{"hash":"da4a421886ebf87c888e5af8b74e68f69da3f767","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Lin-Shuang-Shuang":{"java":363,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"Lin-Shuang-Shuang":4082.0},"authorDisplayNameMap":{"Lin-Shuang-Shuang":"CS2103T-W08-4 LIN ..UANG"}} +{"authorDailyContributionsMap":{"Lin-Shuang-Shuang":[{"date":"2024-01-21","commitResults":[{"hash":"cad288eb3d92b0fc6fe2cc8bba1a3841541fca08","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}},{"hash":"eac43d9159f8125bc7e5c3996571d6b1b0e24387","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}},{"hash":"10949b76df08c57d387049323c5f76393f07d017","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":5}}}]},{"date":"2024-01-22","commitResults":[{"hash":"73d2dc90b47dcbb2297335383549c22dcf37a599","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}},{"hash":"58ea966f7ecd565c58e0946c2d654303bd5f008a","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":10}}}]},{"date":"2024-01-23","commitResults":[{"hash":"7e5061717d23a2800061764bf2b6e2d5900f9321","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}},{"hash":"01d8f09f22de68492837aab23060b21adc8398ed","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":22}}},{"hash":"36a520a9b9d12c6e997928aa4047f23e0bc48238","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":9}}}]},{"date":"2024-01-27","commitResults":[{"hash":"137847916f5ee4a4960187ce7ac3743ce42c7808","isMergeCommit":false,"messageTitle":"Add saving tasks in and loading tasks from hard disk feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":129,"deletions":28}}}]},{"date":"2024-01-28","commitResults":[{"hash":"cf2ed3d52216609e4a09ad3c27a10b9d16e42f97","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"50d65dad464b97f2f7aab71cc1ac74e0c13c0508","isMergeCommit":false,"messageTitle":"Add dates and times to deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":5},"java":{"insertions":36,"deletions":7}}},{"hash":"da4a421886ebf87c888e5af8b74e68f69da3f767","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"5f75e93e4809e869446b6dae8feac0ddc6b236dc","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":327,"deletions":231}}},{"hash":"5acb39fff0094e698d37d9bdedcfd0f4e0bd836f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-AMoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"b5c69316ebba4a021d6d16c6a240e37f917e0f9a","isMergeCommit":false,"messageTitle":"Add packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":5}}},{"hash":"8c4681243ac74f19e31711db6c982dcbe9ab7268","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-APackages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"f99e22dc264602deedaa2800f2d56ffa5890c34d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1d94aab6ea9bd2b5940d8b143801d4da36eda43","isMergeCommit":false,"messageTitle":"Add Gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"13358ed5e47282021e59b2584ae48d03f4cbf61a","isMergeCommit":false,"messageTitle":"Add JUnit test cases for task","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":107,"deletions":2}}},{"hash":"3a4d3008d7f46f120d5a269d192b7ffc3624b64e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-AJUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"fdef3a306013e8bb4f6f1bd7d33201bb569a6341","isMergeCommit":false,"messageTitle":"Package App as a JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Lin-Shuang-Shuang":{"java":588,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":2,"txt":18}},"authorContributionVariance":{"Lin-Shuang-Shuang":36614.72},"authorDisplayNameMap":{"Lin-Shuang-Shuang":"CS2103T-W08-4 LIN ..UANG"}} diff --git a/NatLeong_ip_master/authorship.json b/NatLeong_ip_master/authorship.json index 56ab3cc9..f6961173 100644 --- a/NatLeong_ip_master/authorship.json +++ b/NatLeong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Dav.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"public class Dav {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":" private static List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":" greetUser();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":" startChat();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":" exit();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" public static void greetUser() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" What\u0027s up! I\u0027m Dav\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" How may I help you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" public static void startChat() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" String userInput;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" do {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" userInput \u003d getUserInput(scanner);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" processUserInput(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" } while (!userInput.equalsIgnoreCase(\"bye\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" public static String getUserInput(Scanner scanner) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" System.out.print(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" public static void processUserInput(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" listTasks();","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(5).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":" markTaskDone(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(7).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":" unmarkTaskDone(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"NatLeong"},"content":" addTodoTask(input.substring(4).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" addDeadlineTask(input.substring(8).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" addEventTask(input.substring(5).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(6).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" deleteTask(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" } else if (!input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"NatLeong"},"content":" throw new IllegalArgumentException(\"Huh? what\u0027s that?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"NatLeong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"This is not valid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"NatLeong"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"NatLeong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"NatLeong"},"content":" public static void addTodoTask(String taskDescription) {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"NatLeong"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Do nothing?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"NatLeong"},"content":" addTask(new TodoTask(taskDescription));","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"NatLeong"},"content":" public static void addDeadlineTask(String taskDetails) {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"NatLeong"},"content":" String[] details \u003d taskDetails.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"NatLeong"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"NatLeong"},"content":" String description \u003d details[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"NatLeong"},"content":" String by \u003d details[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"NatLeong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"No deadline?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"NatLeong"},"content":" addTask(new DeadlineTask(description, by));","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid deadline task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"NatLeong"},"content":" public static void addEventTask(String taskDetails) {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"NatLeong"},"content":" String[] details \u003d taskDetails.split(\" /from \");","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"NatLeong"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"NatLeong"},"content":" String description \u003d details[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"NatLeong"},"content":" String[] timeDetails \u003d details[1].split(\" /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"NatLeong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"No event?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"NatLeong"},"content":" } else if (timeDetails.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"NatLeong"},"content":" addTask(new EventTask(description, timeDetails[0], timeDetails[1]));","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid event task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid event task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"NatLeong"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"NatLeong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"NatLeong"},"content":" public static void listTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"NatLeong"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" No tasks added yet.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"NatLeong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"NatLeong"},"content":" public static void markTaskDone(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"NatLeong"},"content":" tasks.get(taskIndex - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + tasks.get(taskIndex - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"NatLeong"},"content":" public static void unmarkTaskDone(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"NatLeong"},"content":" tasks.get(taskIndex - 1).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + tasks.get(taskIndex - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"NatLeong"},"content":" public static void deleteTask(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"NatLeong"},"content":" Task removedTask \u003d tasks.remove(taskIndex - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Task removed:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"NatLeong"},"content":" public static boolean isValidIndex(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"NatLeong"},"content":" return index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d tasks.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"NatLeong"},"content":" public static void exit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Goodbye. \");","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"NatLeong"},"content":"class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"NatLeong"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"NatLeong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"NatLeong"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"NatLeong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"NatLeong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"NatLeong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"NatLeong"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with [X]","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"NatLeong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"NatLeong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"NatLeong"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"NatLeong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"NatLeong"},"content":" return getStatusIcon() + \" \" + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"NatLeong"},"content":"class TodoTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"NatLeong"},"content":" public TodoTask(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"NatLeong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":209,"author":{"gitId":"NatLeong"},"content":"class DeadlineTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"NatLeong"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"NatLeong"},"content":" public DeadlineTask(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"NatLeong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"NatLeong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"NatLeong"},"content":"class EventTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"NatLeong"},"content":" protected String from;","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"NatLeong"},"content":" protected String to;","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"NatLeong"},"content":" public EventTask(String description, String from, String to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"NatLeong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"NatLeong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"NatLeong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"NatLeong":237}},{"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":"NatLeong"},"content":"java -classpath ../bin Dav \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"-":37,"NatLeong":1}}] +[{"path":"src/main/java/Dav.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"public class Dav {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":" private static List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":" greetUser();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":" startChat();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":" exit();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" public static void greetUser() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" What\u0027s up! I\u0027m Dav\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" How may I help you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" public static void startChat() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" String userInput;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" do {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" userInput \u003d getUserInput(scanner);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" processUserInput(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" } while (!userInput.equalsIgnoreCase(\"bye\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" public static String getUserInput(Scanner scanner) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" public static void processUserInput(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" listTasks();","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(5).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" markTaskDone(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(7).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":" unmarkTaskDone(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" addTodoTask(input.substring(4).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":" addDeadlineTask(input.substring(8).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" addEventTask(input.substring(5).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" int taskIndex \u003d Integer.parseInt(input.substring(6).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" deleteTask(taskIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" } else if (!input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" throw new IllegalArgumentException(\"Huh? what\u0027s that?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"NatLeong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"This is not valid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"NatLeong"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"NatLeong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"NatLeong"},"content":" public static void addTodoTask(String taskDescription) {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"NatLeong"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Do nothing?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"NatLeong"},"content":" addTask(new TodoTask(taskDescription));","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"NatLeong"},"content":" public static void addDeadlineTask(String taskDetails) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"NatLeong"},"content":" String[] details \u003d taskDetails.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"NatLeong"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"NatLeong"},"content":" String description \u003d details[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"NatLeong"},"content":" String by \u003d details[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"NatLeong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"No deadline?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"NatLeong"},"content":" addTask(new DeadlineTask(description, by));","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid deadline task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"NatLeong"},"content":" public static void addEventTask(String taskDetails) {","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"NatLeong"},"content":" String[] details \u003d taskDetails.split(\" /from \");","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"NatLeong"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"NatLeong"},"content":" String description \u003d details[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"NatLeong"},"content":" String[] timeDetails \u003d details[1].split(\" /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"NatLeong"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"No event?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"NatLeong"},"content":" } else if (timeDetails.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"NatLeong"},"content":" addTask(new EventTask(description, timeDetails[0], timeDetails[1]));","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid event task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"Invalid event task format.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"NatLeong"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"NatLeong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"NatLeong"},"content":" public static void listTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"NatLeong"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" No tasks added yet.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"NatLeong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"NatLeong"},"content":" public static void markTaskDone(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"NatLeong"},"content":" tasks.get(taskIndex - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + tasks.get(taskIndex - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"NatLeong"},"content":" public static void unmarkTaskDone(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"NatLeong"},"content":" tasks.get(taskIndex - 1).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + tasks.get(taskIndex - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"NatLeong"},"content":" public static void deleteTask(int taskIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"NatLeong"},"content":" if (isValidIndex(taskIndex)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"NatLeong"},"content":" Task removedTask \u003d tasks.remove(taskIndex - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Task removed:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"NatLeong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Invalid task index.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"NatLeong"},"content":" public static boolean isValidIndex(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"NatLeong"},"content":" return index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d tasks.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"NatLeong"},"content":" public static void exit() {","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"NatLeong"},"content":" System.out.println(\" Goodbye. \");","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"NatLeong"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"NatLeong"},"content":"class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"NatLeong"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"NatLeong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"NatLeong"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"NatLeong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"NatLeong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"NatLeong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"NatLeong"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with [X]","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"NatLeong"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"NatLeong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"NatLeong"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"NatLeong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"NatLeong"},"content":" return getStatusIcon() + \" \" + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"NatLeong"},"content":"class TodoTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"NatLeong"},"content":" public TodoTask(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"NatLeong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"NatLeong"},"content":"class DeadlineTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":209,"author":{"gitId":"NatLeong"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"NatLeong"},"content":" public DeadlineTask(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"NatLeong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"NatLeong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"NatLeong"},"content":"class EventTask extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"NatLeong"},"content":" protected String from;","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"NatLeong"},"content":" protected String to;","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"NatLeong"},"content":" public EventTask(String description, String from, String to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"NatLeong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"NatLeong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"NatLeong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"NatLeong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"NatLeong":236}},{"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":"NatLeong"},"content":"java -classpath ../bin Dav \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"-":37,"NatLeong":1}}] diff --git a/NatLeong_ip_master/commits.json b/NatLeong_ip_master/commits.json index 129063be..68f38f77 100644 --- a/NatLeong_ip_master/commits.json +++ b/NatLeong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"NatLeong":[{"date":"2024-01-25","commitResults":[{"hash":"dbd53d9edda3e0295f22d51b60543166b7727e3c","isMergeCommit":false,"messageTitle":"Add Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10}}},{"hash":"da4beeef4d4b28348fbe1179e569fbfd1c4b3769","isMergeCommit":false,"messageTitle":"Add Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":5}}},{"hash":"4d8f8cefe88bfb275f85d14757db951c05853974","isMergeCommit":false,"messageTitle":"Add Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":6}}},{"hash":"ec68e0a7a5605bb80f56cd00408ef55787cfedac","isMergeCommit":false,"messageTitle":"Add Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":6}}},{"hash":"55a11b975c7860dc8f97ed6fd905e94339af0066","isMergeCommit":false,"messageTitle":"Add Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":9}}},{"hash":"226d865a0b5621f3c7d1779bbe67a0aeaf9f3a87","isMergeCommit":false,"messageTitle":"Add A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"7a81270189f7eb2abf6e60ed8c4c94015e4fc184","isMergeCommit":false,"messageTitle":"Add Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":20}}},{"hash":"06f0f93179437466aaa94e906826a978ba1410ae","isMergeCommit":false,"messageTitle":"Add Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":20}}}]}]},"authorFileTypeContributionMap":{"NatLeong":{"java":237,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"NatLeong":17774.816},"authorDisplayNameMap":{"NatLeong":"CS2103T-T08-1 LEON..ALIE"}} +{"authorDailyContributionsMap":{"NatLeong":[{"date":"2024-01-25","commitResults":[{"hash":"dbd53d9edda3e0295f22d51b60543166b7727e3c","isMergeCommit":false,"messageTitle":"Add Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10}}},{"hash":"da4beeef4d4b28348fbe1179e569fbfd1c4b3769","isMergeCommit":false,"messageTitle":"Add Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":5}}},{"hash":"4d8f8cefe88bfb275f85d14757db951c05853974","isMergeCommit":false,"messageTitle":"Add Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":6}}},{"hash":"ec68e0a7a5605bb80f56cd00408ef55787cfedac","isMergeCommit":false,"messageTitle":"Add Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":6}}},{"hash":"55a11b975c7860dc8f97ed6fd905e94339af0066","isMergeCommit":false,"messageTitle":"Add Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":9}}},{"hash":"226d865a0b5621f3c7d1779bbe67a0aeaf9f3a87","isMergeCommit":false,"messageTitle":"Add A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"7a81270189f7eb2abf6e60ed8c4c94015e4fc184","isMergeCommit":false,"messageTitle":"Add Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":20}}},{"hash":"06f0f93179437466aaa94e906826a978ba1410ae","isMergeCommit":false,"messageTitle":"Add Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":20}}}]},{"date":"2024-01-30","commitResults":[{"hash":"8a8eba7f17906a53c19297aa8518fc0a9cc82366","isMergeCommit":false,"messageTitle":"Add revised A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"NatLeong":{"java":236,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"NatLeong":11083.472},"authorDisplayNameMap":{"NatLeong":"CS2103T-T08-1 LEON..ALIE"}} diff --git a/Ragnapop_ip_master/authorship.json b/Ragnapop_ip_master/authorship.json index 179e8dad..e2bca273 100644 --- a/Ragnapop_ip_master/authorship.json +++ b/Ragnapop_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"T/1/ hi","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"T/0/ what","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"T/0/ gyhu","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"E/0/ fakd/ada/ad","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"D/1/ wtf/wtf","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" return \"D\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public String toStore() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description + \"/\" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description + \"/\" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":28}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"import static java.lang.System.exit;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" private static ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" private static final String FILE_PATH \u003d \"data/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" public static void intro(String name, String logo) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Hello! I\u0027m \\n\" + name);","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"What can I do for you?\\n\");// initial introductory message","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" public static void bye() throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" storage.save();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" System.exit(1);// if keyword is bye, exit the program","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" public static void addtask(int n, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" n++;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(n).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e eventcase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"event\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"from\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"to\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" String[] eventtokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" if(eventtokens.length \u003c 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The beginning date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The ending date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d eventtokens[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" String to \u003d eventtokens[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" String from \u003d eventtokens[2];","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" list.add(new Event(subject, to, from));","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e deadlinecase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"deadline\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"by\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" String[] deadlinetokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" if(deadlinetokens.length \u003c 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" else if(deadlinetokens.length \u003c 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! You must provide a deadline for this task.\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d deadlinetokens[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" String deadline \u003d deadlinetokens[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" list.add(new Deadline(subject, deadline));","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e todocase(String str, int n, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"todo\", \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":" int strcount \u003d str.split(\"\\\\s\").length;","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" if(strcount \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty. \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":" \" Please give this instruction in the following format: todo [description]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":" list.add(new Task(str));","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" public static void markcase(String[] tokens, ArrayList\u003cTask\u003e list) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: mark [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":" list.get(no).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":" public static void unmarkcase(String[] tokens, ArrayList\u003cTask\u003e list) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: unmark [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"Ragnapop"},"content":" list.get(no).unmarkAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e removecase(String[] tokens, ArrayList\u003cTask\u003e list, int n) throws DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: delete [task number]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1])-1;","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"Ragnapop"},"content":" list.remove(no);","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"Ragnapop"},"content":" n--;","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + n + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"Ragnapop"},"content":" public static void printlist(){","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Ragnapop"},"content":" for (int a \u003d 0; a \u003c list.size(); a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Ragnapop"},"content":" System.out.println(a + 1 + \". \" + list.get(a).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Ragnapop"},"content":" public static void main(String[] args) throws IOException, DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"Ragnapop"},"content":" String name \u003d \"Bingus\";","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"Ragnapop"},"content":" intro(name, logo);","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"Ragnapop"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Ragnapop"},"content":" list \u003d storage.load();// array to store tasks given","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Ragnapop"},"content":" int n \u003d list.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Ragnapop"},"content":" Scanner bfn \u003d new Scanner(","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Ragnapop"},"content":" new InputStreamReader(System.in));// scanner to read user input","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Ragnapop"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"Ragnapop"},"content":" String[] tokens \u003d str.split(\"\\\\s+\");// split read string into individual components to read keywords","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"Ragnapop"},"content":" String identifier \u003d tokens[0];// store keywords","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"Ragnapop"},"content":" if (str.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Ragnapop"},"content":" printlist();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Ragnapop"},"content":" }// if keyword is list, open list","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"Ragnapop"},"content":" else if (str.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"Ragnapop"},"content":" bye();","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"Ragnapop"},"content":" markcase(tokens, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"Ragnapop"},"content":" unmarkcase(tokens, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"Ragnapop"},"content":" list \u003d eventcase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"Ragnapop"},"content":" addtask(n, list);","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"Ragnapop"},"content":" list \u003d deadlinecase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"Ragnapop"},"content":" addtask(n, list);","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"Ragnapop"},"content":" list \u003d todocase(str, n, list);","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"Ragnapop"},"content":" addtask(n, list);","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"Ragnapop"},"content":" list \u003d removecase(tokens, list, n);","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"Ragnapop"},"content":" n--;","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":197,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":198,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":199,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"Ragnapop"},"content":" }catch(DukeException ex){","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Exception occured: \" + ex);","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":206,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":200,"-":10}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":7}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" return \"E\";","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public String toStore() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description + \"/\" + from + \"/\" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description + \"/\" + from + \"/\" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":28}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" private File file;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" if (!this.file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" this.file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" this.file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error creating new file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" public void save() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" FileWriter writer \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" for(int a \u003d 0; a \u003c list.size(); a++ ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" Task task \u003d list.get(a);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" String taskString \u003d task.toStore();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" writer.write(taskString + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error saving file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bufferedReader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" //System.out.println(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" while (str !\u003d null){","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" String[] loadtokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" //for(int a \u003d 0; a\u003c loadtokens.length; a++){System.out.println(loadtokens[a]);}","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" String type \u003d loadtokens[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" String status \u003d loadtokens[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" String desc \u003d loadtokens[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Task(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" String to \u003d loadtokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" String from \u003d loadtokens[4];","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Event(desc, to, from);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" String duedate \u003d loadtokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Deadline(desc, duedate);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"File corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" if(status.equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" str \u003d bufferedReader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" bufferedReader.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error loading tasks from file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error saving file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":85}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" return \"T\";","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" public String ToString(){","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" return \"[\" + getTaskIcon() + \"] \" + \"[\" + getStatusIcon() + \"] \"+ description;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" public void markAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" public void unmarkAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" public String toStore(){","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" if(isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" } else{","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" //...","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":42}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"todo homework","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"deadline homework / tuesday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Ragnapop":12}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"D/0/ return book / 2019-10-15","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"D/0/ return book / 2019-10-15","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"D/1/ return book / 2019-10-15","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"D/0/ return book / 2019-10-15","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"E/0/ read book/ 2019-10-13/ 2019-10-14","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"E/0/ fight/2000-01-20/2000-11-20","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"D/0/ fight / 2001-11-11","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"T/0/ me","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":8}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" this.by \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\" yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" return \"D\";","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" public String toStore() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description + \"/ \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description + \"/ \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":32}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" //private static ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" private static TaskList list;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" private static Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" private static Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" private static final String FILE_PATH \u003d \"data/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" ui.intro();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" list \u003d new TaskList(storage.load());// array to store tasks given","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" parser \u003d new Parser(list, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" ui.read_commands(parser);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":42,"-":2}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Ragnapop":7}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" protected LocalDate from;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" protected LocalDate to;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" this.from \u003d LocalDate.parse(from, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" this.to \u003d LocalDate.parse(to, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" return \"E\";","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" public String ToString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" return super.ToString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" public String toStore() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description + \"/ \" + from + \"/ \" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description + \"/ \" + from + \"/ \" + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":33}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" static TaskList list;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" static Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" public Parser(TaskList list, Storage storage){","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" public static void parse(String str) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" String[] tokens \u003d str.split(\"\\\\s+\");// split read string into individual components to read keywords","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" String identifier \u003d tokens[0];// store keywords","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" if (str.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" list.printlist();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" }// if keyword is list, open list","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" else if (str.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" Ui.bye(storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" list.markcase(tokens);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" list.unmarkcase(tokens);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" list.eventcase(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" list.addtask();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" list.deadlinecase(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" list.addtask();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" list.todocase(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" list.addtask();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" } else if (identifier.equals(\"delete\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" list.removecase(tokens);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":43}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" private File file;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" if (!this.file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" this.file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" this.file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error creating new file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" public void save() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" FileWriter writer \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" for(int a \u003d 0; a \u003c list.size(); a++ ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" Task task \u003d list.get(a);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" String taskString \u003d task.toStore();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" writer.write(taskString + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error saving file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bufferedReader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" //System.out.println(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" while (str !\u003d null){","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" String[] loadtokens \u003d str.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" //for(int a \u003d 0; a\u003c loadtokens.length; a++){System.out.println(loadtokens[a]);}","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" String type \u003d loadtokens[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" String status \u003d loadtokens[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" String desc \u003d loadtokens[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Task(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" String to \u003d loadtokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" String from \u003d loadtokens[4];","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Event(desc, to, from);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" String duedate \u003d loadtokens[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" task \u003d new Deadline(desc, duedate);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"File corrupted.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" if(status.equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" str \u003d bufferedReader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" bufferedReader.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error loading tasks from file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"Error saving file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":85}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" return \"T\";","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" public String ToString(){","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" return \"[\" + getTaskIcon() + \"] \" + \"[\" + getStatusIcon() + \"] \"+ description;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" public void markAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" public void unmarkAsDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" public String toStore(){","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" if(isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"1\" + \"/\" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" } else{","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" return getTaskIcon() + \"/\" + \"0\" + \"/\" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" //...","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Ragnapop":42}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":" private static ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" public TaskList(ArrayList\u003cTask\u003e list){","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" public static void addtask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(list.size()-1).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" public static void eventcase(String str) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"event\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":" //str \u003d str.replace(\"from\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" //str \u003d str.replace(\"to\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" String[] eventtokens \u003d str.split(\" ((/from)|(/to)) \");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":" if(eventtokens.length \u003c 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a event cannot be empty.\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The beginning date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" else if(eventtokens.length \u003c 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The ending date of a event cannot be empty.\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: event [description] / [event starting date] / [event ending date]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d eventtokens[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" String to \u003d eventtokens[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" String from \u003d eventtokens[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" list.add(new Event(subject, to, from));","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" public static void deadlinecase(String str) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"deadline\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" //str \u003d str.replace(\"by\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" String[] deadlinetokens \u003d str.split(\"/by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" if(deadlinetokens.length \u003c 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" else if(deadlinetokens.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! You must provide a deadline for this task.\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" \"Please give this instruction in the following format: deadline [description] / [deadline date]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" String subject \u003d deadlinetokens[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" String deadline \u003d deadlinetokens[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" list.add(new Deadline(subject, deadline));","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" public static void todocase(String str) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" str \u003d str.replace(\"todo\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" int strcount \u003d str.split(\"\\\\s\").length;","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" if(strcount \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty. \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" \" Please give this instruction in the following format: todo [description]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" list.add(new Task(str));","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" public static void markcase(String[] tokens) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: mark [task number]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" list.get(no).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":" public static void unmarkcase(String[] tokens) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: unmark [task number]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":" list.get(no).unmarkAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" public static ArrayList\u003cTask\u003e removecase(String[] tokens) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" if(tokens.length !\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":" throw new DukeException(\"please give this instruction in the following format: delete [task number]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":" int no \u003d Integer.parseInt(tokens[1])-1;","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":" System.out.println(list.get(no).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":" list.remove(no);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Ragnapop"},"content":" public static void printlist(){","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Ragnapop"},"content":" for (int a \u003d 0; a \u003c list.size(); a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Ragnapop"},"content":" System.out.println(a + 1 + \". \" + list.get(a).ToString());","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":123}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"final static String bingus_logo \u003d \" B i n g u s \";","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":" final static String name \u003d \"Bingus\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":" public static void intro() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Hello from\\n\" + bingus_logo);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Hello! I\u0027m \\n\" + name);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"What can I do for you?\\n\");// initial introductory message","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" public static void bye(Storage storage) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":" storage.save();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":" System.exit(1);// if keyword is bye, exit the program","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public static void read_commands(Parser parser) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" Scanner bfn \u003d new Scanner(","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" new InputStreamReader(System.in));// scanner to read user input","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" String str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" while (true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" parser.parse(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" }catch(DukeException ex){","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" System.out.println(\"Exception occured: \" + ex);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" str \u003d bfn.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Ragnapop":41}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"todo homework","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"deadline homework / tuesday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Ragnapop":12}}] diff --git a/Ragnapop_ip_master/commits.json b/Ragnapop_ip_master/commits.json index d07d6778..3b7141c2 100644 --- a/Ragnapop_ip_master/commits.json +++ b/Ragnapop_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Ragnapop":[{"date":"2024-01-22","commitResults":[{"hash":"2bf549a08de984bfc17f30cfcfbcd62a7abd0d0c","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"143b6bb9a1632144e97871ac683ef61c29e798f1","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"adc3aa433e26ba8341cd67afceb0020059e88eb6","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3","Level-2-Level-2.-Add,-List"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":9}}},{"hash":"636fafd14b61f6bd4994845ff8c7e164a82da0da","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4.-ToDos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"f772a90f4492ceb35cdecb13ab9bc4b06d17f790","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":80}}},{"hash":"244501d0146763a4bbba950c8042d6774072e603","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":22}}}]},{"date":"2024-01-24","commitResults":[{"hash":"5676b4c2cd93be15a5ac19059ac3608e7c300390","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"ea1c9e2abb740f9ec385cf3124095e561dd73c8d","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":9,"deletions":5}}},{"hash":"0f137decbbe13a531b979f0b0580dfc789435dc1","isMergeCommit":false,"messageTitle":"UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"b2e7e712dbd99dbdf80b12578618e46bf1ebeec5","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7.-Save"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":149,"deletions":17}}},{"hash":"a7a4bf9dafc29e69f1da9f7be67a3cb8586cde39","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Ragnapop/branch-Level-7","messageBody":"Level 7. Save","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Ragnapop":{"java":390,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":17}},"authorContributionVariance":{"Ragnapop":9409.079},"authorDisplayNameMap":{"Ragnapop":"CS2103T-T15-2 LOH .. HUN"}} +{"authorDailyContributionsMap":{"Ragnapop":[{"date":"2024-01-22","commitResults":[{"hash":"2bf549a08de984bfc17f30cfcfbcd62a7abd0d0c","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"143b6bb9a1632144e97871ac683ef61c29e798f1","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"adc3aa433e26ba8341cd67afceb0020059e88eb6","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3","Level-2-Level-2.-Add,-List"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":9}}},{"hash":"636fafd14b61f6bd4994845ff8c7e164a82da0da","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4.-ToDos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"f772a90f4492ceb35cdecb13ab9bc4b06d17f790","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":80}}},{"hash":"244501d0146763a4bbba950c8042d6774072e603","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":22}}}]},{"date":"2024-01-24","commitResults":[{"hash":"5676b4c2cd93be15a5ac19059ac3608e7c300390","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"ea1c9e2abb740f9ec385cf3124095e561dd73c8d","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":9,"deletions":5}}},{"hash":"0f137decbbe13a531b979f0b0580dfc789435dc1","isMergeCommit":false,"messageTitle":"UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"b2e7e712dbd99dbdf80b12578618e46bf1ebeec5","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["Level-7.-Save"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":149,"deletions":17}}},{"hash":"a7a4bf9dafc29e69f1da9f7be67a3cb8586cde39","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Ragnapop/branch-Level-7","messageBody":"Level 7. Save","fileTypesAndContributionMap":{}},{"hash":"9ca747e31789c0f25ab25e93e00d7da6b34bb430","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times","messageBody":"","tags":["Level-8.-Dates-and-Times"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":5},"java":{"insertions":45,"deletions":36}}},{"hash":"ea577c725ae230557a9797f81ed7c9b6d3c3eb3b","isMergeCommit":false,"messageTitle":"OOP changes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":239,"deletions":9}}},{"hash":"54c6bc23b42368eee8b9695020094b98248fdc04","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Ragnapop/branch-OOP","messageBody":"OOP changes","fileTypesAndContributionMap":{}},{"hash":"5c44f9991d7e6d0ce56722907d8940e09859dc5c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-level-8","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a9fe526c8151d9c7a7e642a6a53ba509bcd3b96e","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Ragnapop/branch-level-8","messageBody":"Level 8. Dates and Times \u0026 OOP changes","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Ragnapop":{"java":448,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"Ragnapop":25310.389},"authorDisplayNameMap":{"Ragnapop":"CS2103T-T15-2 LOH .. HUN"}} diff --git a/ReflectiveObsidian_ip_master/authorship.json b/ReflectiveObsidian_ip_master/authorship.json index daf44b6e..afbe3320 100644 --- a/ReflectiveObsidian_ip_master/authorship.json +++ b/ReflectiveObsidian_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"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":"ReflectiveObsidian"},"content":" Pyrite toDoList \u003d new Pyrite();","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" toDoList.begin();","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ReflectiveObsidian":3,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class DukeException extends UnsupportedOperationException{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" private String error;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" public DukeException(String error) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" this.error \u003d error;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" return error;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":10}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" protected String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" protected String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":15}},{"path":"src/main/java/Pyrite.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Pyrite {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" static String name \u003d \"Pyrite\";","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" static String horizontal_line \u003d \"\\t____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" static String greeting \u003d \"\\tHello! I\u0027m \" + name + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\tWhat can I do for you?\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" static String farewell \u003d \"\\tBye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" static String taskAddedAcknowledgement \u003d \"\\t\" + \"Got it. I\u0027ve added this task: \";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" private void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + (list.indexOf(t) + 1) + \". \" + t.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" private int findCommand(String[] toSearch, String toFind) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" for (int i \u003d 0; i \u003c toSearch.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":" if (toSearch[i].equals(toFind)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":" return i;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ReflectiveObsidian"},"content":" return -1;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ReflectiveObsidian"},"content":" private void assertValidId(int id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ReflectiveObsidian"},"content":" if (id \u003c 0 || id \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Task to mark/unmark does not exist.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ReflectiveObsidian"},"content":" private int parseID(String parameters[]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ReflectiveObsidian"},"content":" int id;","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ReflectiveObsidian"},"content":" id \u003d Integer.parseInt(parameters[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Provide a valid id to mark/unmark.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ReflectiveObsidian"},"content":" return id;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ReflectiveObsidian"},"content":" public void begin() {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.greeting);","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ReflectiveObsidian"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ReflectiveObsidian"},"content":" String input;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ReflectiveObsidian"},"content":" // Solution below inspired by","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/31690570/java-scanner-command-system","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/4822256/java-is-there-an-easy-way-to-select-a-subset-of-an-array","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ReflectiveObsidian"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println();","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ReflectiveObsidian"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ReflectiveObsidian"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ReflectiveObsidian"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ReflectiveObsidian"},"content":" printList(this.list);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ReflectiveObsidian"},"content":" boolean added_task \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ReflectiveObsidian"},"content":" // Commands with parameters","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ReflectiveObsidian"},"content":" String parameters[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ReflectiveObsidian"},"content":" if (parameters[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ReflectiveObsidian"},"content":" list.get(id).setDone(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ReflectiveObsidian"},"content":" list.get(id).setDone(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ReflectiveObsidian"},"content":" // 3 types of tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ReflectiveObsidian"},"content":" // Solution below inspired by","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/11001720/get-only-part-of-an-array-in-java","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"ReflectiveObsidian"},"content":" list.remove(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ReflectiveObsidian"},"content":" \" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, 1, parameters.length)","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a todo cannot be empty. Add the description after \u0027todo\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add(new ToDo(description));","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"ReflectiveObsidian"},"content":" int descEnd \u003d findCommand(parameters, \"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"ReflectiveObsidian"},"content":" if (descEnd !\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, 1, descEnd));","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a deadline cannot be empty. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add the description after \u0027deadline\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add(new Deadline(","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"ReflectiveObsidian"},"content":" description,","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"ReflectiveObsidian"},"content":" String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, descEnd + 1, parameters.length))","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Incomplete Command. Add deadline using \u0027/by\u0027.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"ReflectiveObsidian"},"content":" int fromID \u003d findCommand(parameters, \"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"ReflectiveObsidian"},"content":" int toID \u003d findCommand(parameters, \"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"ReflectiveObsidian"},"content":" if (fromID !\u003d -1 \u0026\u0026 toID !\u003d -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"ReflectiveObsidian"},"content":" \" \", Arrays.copyOfRange(parameters, 1, (fromID \u003c toID ? fromID : toID))","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a event cannot be empty. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add the description after \u0027event\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"ReflectiveObsidian"},"content":" if (fromID \u003c toID) {","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add( new Event(","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"ReflectiveObsidian"},"content":" description,","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"ReflectiveObsidian"},"content":" String.join(\" \", Arrays.copyOfRange(parameters, fromID + 1, toID)),","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"ReflectiveObsidian"},"content":" String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, toID + 1, parameters.length))","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add( new Event(","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"ReflectiveObsidian"},"content":" description,","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"ReflectiveObsidian"},"content":" String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, fromID + 1, parameters.length)),","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"ReflectiveObsidian"},"content":" String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, toID + 1, fromID))","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Incomplete Command. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add start and end dates using \u0027/from\u0027 and \u0027/to\u0027.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Unknown Command.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"ReflectiveObsidian"},"content":" if (added_task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(taskAddedAcknowledgement);","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\\t\" + list.get(list.size()-1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + \"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + e);","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.farewell);","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":176}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" enum Status {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" DONE,","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" NOT_DONE","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" protected Status status;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" this.status \u003d Status.NOT_DONE;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" return (status \u003d\u003d Status.DONE ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" return description;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[\" + getStatusIcon() + \"] \" + getDescription();","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ReflectiveObsidian"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ReflectiveObsidian"},"content":" this.status \u003d (done ? Status.DONE : Status.NOT_DONE);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":31}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"event project meeting 2 /to 4pm /from Mon 2pm","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":11}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[D]\"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" + super.toString()","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" + \" (by: \"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HH:mm\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":20}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"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":"ReflectiveObsidian"},"content":" Pyrite toDoList \u003d new Pyrite();","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" toDoList.begin();","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ReflectiveObsidian":3,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class DukeException extends UnsupportedOperationException{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" private String error;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" public DukeException(String error) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" this.error \u003d error;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" return error;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":10}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[E]\"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" + super.toString()","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" + \" (from: \"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" + start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HH:mm\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" + \" to: \"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" + end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HH:mm\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":23}},{"path":"src/main/java/Pyrite.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import javax.imageio.IIOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Pyrite {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" static String name \u003d \"Pyrite\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" static String horizontal_line \u003d \"\\t____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" static String greeting \u003d \"\\tHello! I\u0027m \" + name + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\tWhat can I do for you?\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" static String farewell \u003d \"\\tBye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" static String taskAddedAcknowledgement \u003d \"\\t\" + \"Got it. I\u0027ve added this task: \";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" StateFile file \u003d new StateFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" private void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + (list.indexOf(t) + 1) + \". \" + t.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ReflectiveObsidian"},"content":" private int findCommand(String[] toSearch, String toFind) {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ReflectiveObsidian"},"content":" for (int i \u003d 0; i \u003c toSearch.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ReflectiveObsidian"},"content":" if (toSearch[i].equals(toFind)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ReflectiveObsidian"},"content":" return i;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ReflectiveObsidian"},"content":" return -1;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ReflectiveObsidian"},"content":" private void assertValidId(int id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ReflectiveObsidian"},"content":" if (id \u003c 0 || id \u003e\u003d list.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Task to mark/unmark does not exist.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ReflectiveObsidian"},"content":" private int parseID(String parameters[]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ReflectiveObsidian"},"content":" int id;","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ReflectiveObsidian"},"content":" id \u003d Integer.parseInt(parameters[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Provide a valid id to mark/unmark.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ReflectiveObsidian"},"content":" return id;","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ReflectiveObsidian"},"content":" private void loadState() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ReflectiveObsidian"},"content":" this.list \u003d file.loadObject();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (IOException | ClassNotFoundException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ReflectiveObsidian"},"content":" // File issue, try to save blank state","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\tUnable to read saved state, creating new file...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ReflectiveObsidian"},"content":" this.saveState();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ReflectiveObsidian"},"content":" private void saveState() {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ReflectiveObsidian"},"content":" file.saveObject(this.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (IOException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\tUnable to save state: \" + e.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ReflectiveObsidian"},"content":" public void begin() {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.greeting);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ReflectiveObsidian"},"content":" // Load list from file","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ReflectiveObsidian"},"content":" this.loadState();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ReflectiveObsidian"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ReflectiveObsidian"},"content":" String input;","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ReflectiveObsidian"},"content":" // Solution below inspired by","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/31690570/java-scanner-command-system","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/4822256/java-is-there-an-easy-way-to-select-a-subset-of-an-array","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ReflectiveObsidian"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println();","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ReflectiveObsidian"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ReflectiveObsidian"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ReflectiveObsidian"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ReflectiveObsidian"},"content":" printList(this.list);","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ReflectiveObsidian"},"content":" boolean added_task \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ReflectiveObsidian"},"content":" // Commands with parameters","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ReflectiveObsidian"},"content":" String parameters[] \u003d input.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"ReflectiveObsidian"},"content":" if (parameters[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"ReflectiveObsidian"},"content":" list.get(id).setDone(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"ReflectiveObsidian"},"content":" list.get(id).setDone(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"ReflectiveObsidian"},"content":" // 3 types of tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"ReflectiveObsidian"},"content":" // Solution below inspired by","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"ReflectiveObsidian"},"content":" // https://stackoverflow.com/questions/11001720/get-only-part-of-an-array-in-java","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"ReflectiveObsidian"},"content":" int id \u003d parseID(parameters);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"ReflectiveObsidian"},"content":" assertValidId(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"ReflectiveObsidian"},"content":" + \"\\t\\t\"","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"ReflectiveObsidian"},"content":" + list.get(id).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"ReflectiveObsidian"},"content":" list.remove(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"ReflectiveObsidian"},"content":" \" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, 1, parameters.length)","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a todo cannot be empty. Add the description after \u0027todo\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add(new ToDo(description));","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"ReflectiveObsidian"},"content":" int descEnd \u003d findCommand(parameters, \"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"ReflectiveObsidian"},"content":" if (descEnd !\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(\" \",","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"ReflectiveObsidian"},"content":" Arrays.copyOfRange(parameters, 1, descEnd));","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a deadline cannot be empty. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add the description after \u0027deadline\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add(new Deadline(description,","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"ReflectiveObsidian"},"content":" LocalDateTime.parse(String.join(\"\", Arrays.copyOfRange(parameters,","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"ReflectiveObsidian"},"content":" descEnd + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"ReflectiveObsidian"},"content":" parameters.length)))","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Incomplete Command. Add deadline using \u0027/by\u0027.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"ReflectiveObsidian"},"content":" } else if (parameters[0].equals(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"ReflectiveObsidian"},"content":" int fromID \u003d findCommand(parameters, \"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"ReflectiveObsidian"},"content":" int toID \u003d findCommand(parameters, \"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"ReflectiveObsidian"},"content":" if (fromID !\u003d -1 \u0026\u0026 toID !\u003d -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"ReflectiveObsidian"},"content":" String description \u003d String.join(","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"ReflectiveObsidian"},"content":" \" \", Arrays.copyOfRange(parameters, 1, (fromID \u003c toID ? fromID : toID))","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"ReflectiveObsidian"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"ReflectiveObsidian"},"content":" \"The description of a event cannot be empty. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add the description after \u0027event\u0027.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"ReflectiveObsidian"},"content":" );","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"ReflectiveObsidian"},"content":" if (fromID \u003c toID) {","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add( new Event(","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"ReflectiveObsidian"},"content":" description,","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"ReflectiveObsidian"},"content":" LocalDateTime.parse(String.join(\"\", Arrays.copyOfRange(parameters,","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"ReflectiveObsidian"},"content":" fromID + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"ReflectiveObsidian"},"content":" toID))),","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"ReflectiveObsidian"},"content":" LocalDateTime.parse(String.join(\"\", Arrays.copyOfRange(parameters,","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"ReflectiveObsidian"},"content":" toID + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"ReflectiveObsidian"},"content":" parameters.length)))","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"ReflectiveObsidian"},"content":" list.add( new Event(","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"ReflectiveObsidian"},"content":" description,","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"ReflectiveObsidian"},"content":" LocalDateTime.parse(String.join(\"\", Arrays.copyOfRange(parameters,","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"ReflectiveObsidian"},"content":" fromID + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"ReflectiveObsidian"},"content":" parameters.length))),","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"ReflectiveObsidian"},"content":" LocalDateTime.parse(String.join(\"\", Arrays.copyOfRange(parameters,","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"ReflectiveObsidian"},"content":" toID + 1,","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"ReflectiveObsidian"},"content":" fromID)))","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"ReflectiveObsidian"},"content":" ));","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Incomplete Command. \" +","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"ReflectiveObsidian"},"content":" \"Add start and end dates using \u0027/from\u0027 and \u0027/to\u0027.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"ReflectiveObsidian"},"content":" added_task \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"ReflectiveObsidian"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"ReflectiveObsidian"},"content":" throw new DukeException(\"Unknown Command.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"ReflectiveObsidian"},"content":" if (added_task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(taskAddedAcknowledgement);","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\\t\" + list.get(list.size()-1).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + \"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + e);","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"ReflectiveObsidian"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(\"\\t\" + \"Invalid datetime format. Use yyyy-mm-ddThh:mm.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"ReflectiveObsidian"},"content":" // Save state","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"ReflectiveObsidian"},"content":" this.saveState();","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.farewell);","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"ReflectiveObsidian"},"content":" System.out.println(this.horizontal_line);","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":208}},{"path":"src/main/java/StateFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"public class StateFile {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":" private static String FILE_PATH \u003d \"saves/state.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" // Solution below (use of ObjectOutputStream and FileOutputStream) inspired by ChatGPT","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" public void saveObject(ArrayList\u003cTask\u003e object) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" // Create directory if it does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":" File parentDir \u003d file.getParentFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" parentDir.mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":" FileOutputStream fileStream \u003d new FileOutputStream(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" ObjectOutputStream objectStream \u003d new ObjectOutputStream(fileStream);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":" objectStream.writeObject(object);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":" objectStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":" fileStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ReflectiveObsidian"},"content":" public ArrayList\u003cTask\u003e loadObject() throws IOException, ClassNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ReflectiveObsidian"},"content":" FileInputStream fileStream \u003d new FileInputStream(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ReflectiveObsidian"},"content":" ObjectInputStream objectStream \u003d new ObjectInputStream(fileStream);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ReflectiveObsidian"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ReflectiveObsidian"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ReflectiveObsidian"},"content":" list \u003d (ArrayList\u003cTask\u003e) objectStream.readObject();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ReflectiveObsidian"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ReflectiveObsidian"},"content":" objectStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ReflectiveObsidian"},"content":" fileStream.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ReflectiveObsidian"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ReflectiveObsidian":37}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"public class Task implements Serializable {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" enum Status {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" DONE,","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" NOT_DONE","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":" protected Status status;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ReflectiveObsidian"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ReflectiveObsidian"},"content":" this.status \u003d Status.NOT_DONE;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ReflectiveObsidian"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ReflectiveObsidian"},"content":" return (status \u003d\u003d Status.DONE ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ReflectiveObsidian"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ReflectiveObsidian"},"content":" return description;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[\" + getStatusIcon() + \"] \" + getDescription();","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ReflectiveObsidian"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ReflectiveObsidian"},"content":" this.status \u003d (done ? Status.DONE : Status.NOT_DONE);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ReflectiveObsidian"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":33}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ReflectiveObsidian"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ReflectiveObsidian"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ReflectiveObsidian"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ReflectiveObsidian"},"content":"event project meeting 2 /to 4pm /from Mon 2pm","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ReflectiveObsidian"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ReflectiveObsidian"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ReflectiveObsidian"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ReflectiveObsidian"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ReflectiveObsidian"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ReflectiveObsidian"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ReflectiveObsidian"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ReflectiveObsidian":11}}] diff --git a/ReflectiveObsidian_ip_master/commits.json b/ReflectiveObsidian_ip_master/commits.json index 036fbd79..dd9b4b87 100644 --- a/ReflectiveObsidian_ip_master/commits.json +++ b/ReflectiveObsidian_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ReflectiveObsidian":[{"date":"2024-01-24","commitResults":[{"hash":"53af075fec256ebaba39943239918d592c2f8ac7","isMergeCommit":false,"messageTitle":"Replaced old greeting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"d895b0a969739dca01fce03f9aa749a1277383cd","isMergeCommit":false,"messageTitle":"Implemented command echoing, with exit word.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"1458d8681ecd4ddbcf3d3dcbf2e9a8009a607219","isMergeCommit":false,"messageTitle":"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":16,"deletions":2}}},{"hash":"e515ca36e47fe6b5f03ed2e7447a10b7416e87ab","isMergeCommit":false,"messageTitle":"Moved to-do list into separate class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":42}}},{"hash":"bc6d49da7899f158d85f387e88674e7491af21e4","isMergeCommit":false,"messageTitle":"Added task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"54e5c7d9f4f75ddba07d737448cabffcfaa9bbd9","isMergeCommit":false,"messageTitle":"Implement task status generation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"002be94f2d962d1856dbd129f1eac97b96072a00","isMergeCommit":false,"messageTitle":"Switch from list of string to list of Task in Pyrite","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"020d7475e924c614c3092defee4fa211331998ab","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":8}}},{"hash":"9ea9232b051465f05f6f10bb5acc7fa43bf75ebb","isMergeCommit":false,"messageTitle":"Add \"Here are the tasks in your list:\" to task list printing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"a503c61ccec1b868ef9afafe98e4e9070bf9e559","isMergeCommit":false,"messageTitle":"Fixed off-by-1 bug in mark/unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"c4e83cc271be3fa7eb0ad1cb2799781180d3036a","isMergeCommit":false,"messageTitle":"convert getFullStatusString into toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"109216ccaaa0cbf282a3cee6e3b467a1dc87c732","isMergeCommit":false,"messageTitle":"override toString in Task instead of implementing getFullStatusString()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"44e29e4ce63bc6e1d668f31f075e240fd0be2e1b","isMergeCommit":false,"messageTitle":"Create 3 types of tasks, ToDo, Deadline, Event","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"3f37747f4fe0129b9d7e50ec39e45930dd4c73af","isMergeCommit":false,"messageTitle":"Integrate ToDos, Deadlines, Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":5}}},{"hash":"75e780393c138c5ddc4a3073b05a34de0d02318d","isMergeCommit":false,"messageTitle":"fix indentation in mark/unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"d03061d58e3c57d2f34ff234c585c4bd5d4b86c7","isMergeCommit":false,"messageTitle":"Fix bug parsing event when order of parameters are swapped","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"5e3769d2af794c478427ee4380cbdb2c62d81adb","isMergeCommit":false,"messageTitle":"Implemented Automated Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"2466c5d7bc50709a94da145e0029943552ff0cef","isMergeCommit":false,"messageTitle":"Remove extra horizontal line from bye command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"3528784054af6f779ff3ea96879776bfad3554c7","isMergeCommit":false,"messageTitle":"Implement exception error handling.","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":65}}},{"hash":"412fc7ac86748550e797fa8208fdf58461349e15","isMergeCommit":false,"messageTitle":"Use ArrayList to store tasks","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":24}}},{"hash":"3e8325093c9a9265bdce8b3d545fd1d5bdda17d2","isMergeCommit":false,"messageTitle":"Implement delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"b9eedd69f97635f4efeea03cbb42bd620ba8a996","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"e4dcd6de9542e6f7fa4865e32d0f3f071783d197","isMergeCommit":false,"messageTitle":"Use enums to track whether task is done or not","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"a45fe4bcb9b8156e886f5c1cf9d4e238027e9f33","isMergeCommit":false,"messageTitle":"Make some variables in Pyrite static","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"ReflectiveObsidian":{"java":258,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"ReflectiveObsidian":54253.47},"authorDisplayNameMap":{"ReflectiveObsidian":"CS2103T-T11-1 NG W..MING"}} +{"authorDailyContributionsMap":{"ReflectiveObsidian":[{"date":"2024-01-24","commitResults":[{"hash":"53af075fec256ebaba39943239918d592c2f8ac7","isMergeCommit":false,"messageTitle":"Replaced old greeting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"d895b0a969739dca01fce03f9aa749a1277383cd","isMergeCommit":false,"messageTitle":"Implemented command echoing, with exit word.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"1458d8681ecd4ddbcf3d3dcbf2e9a8009a607219","isMergeCommit":false,"messageTitle":"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":16,"deletions":2}}},{"hash":"e515ca36e47fe6b5f03ed2e7447a10b7416e87ab","isMergeCommit":false,"messageTitle":"Moved to-do list into separate class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":42}}},{"hash":"bc6d49da7899f158d85f387e88674e7491af21e4","isMergeCommit":false,"messageTitle":"Added task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"54e5c7d9f4f75ddba07d737448cabffcfaa9bbd9","isMergeCommit":false,"messageTitle":"Implement task status generation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"002be94f2d962d1856dbd129f1eac97b96072a00","isMergeCommit":false,"messageTitle":"Switch from list of string to list of Task in Pyrite","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"020d7475e924c614c3092defee4fa211331998ab","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":8}}},{"hash":"9ea9232b051465f05f6f10bb5acc7fa43bf75ebb","isMergeCommit":false,"messageTitle":"Add \"Here are the tasks in your list:\" to task list printing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"a503c61ccec1b868ef9afafe98e4e9070bf9e559","isMergeCommit":false,"messageTitle":"Fixed off-by-1 bug in mark/unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"c4e83cc271be3fa7eb0ad1cb2799781180d3036a","isMergeCommit":false,"messageTitle":"convert getFullStatusString into toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"109216ccaaa0cbf282a3cee6e3b467a1dc87c732","isMergeCommit":false,"messageTitle":"override toString in Task instead of implementing getFullStatusString()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"44e29e4ce63bc6e1d668f31f075e240fd0be2e1b","isMergeCommit":false,"messageTitle":"Create 3 types of tasks, ToDo, Deadline, Event","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"3f37747f4fe0129b9d7e50ec39e45930dd4c73af","isMergeCommit":false,"messageTitle":"Integrate ToDos, Deadlines, Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":5}}},{"hash":"75e780393c138c5ddc4a3073b05a34de0d02318d","isMergeCommit":false,"messageTitle":"fix indentation in mark/unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"d03061d58e3c57d2f34ff234c585c4bd5d4b86c7","isMergeCommit":false,"messageTitle":"Fix bug parsing event when order of parameters are swapped","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"5e3769d2af794c478427ee4380cbdb2c62d81adb","isMergeCommit":false,"messageTitle":"Implemented Automated Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"2466c5d7bc50709a94da145e0029943552ff0cef","isMergeCommit":false,"messageTitle":"Remove extra horizontal line from bye command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"3528784054af6f779ff3ea96879776bfad3554c7","isMergeCommit":false,"messageTitle":"Implement exception error handling.","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":65}}},{"hash":"412fc7ac86748550e797fa8208fdf58461349e15","isMergeCommit":false,"messageTitle":"Use ArrayList to store tasks","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":24}}},{"hash":"3e8325093c9a9265bdce8b3d545fd1d5bdda17d2","isMergeCommit":false,"messageTitle":"Implement delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"b9eedd69f97635f4efeea03cbb42bd620ba8a996","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"e4dcd6de9542e6f7fa4865e32d0f3f071783d197","isMergeCommit":false,"messageTitle":"Use enums to track whether task is done or not","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"a45fe4bcb9b8156e886f5c1cf9d4e238027e9f33","isMergeCommit":false,"messageTitle":"Make some variables in Pyrite static","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"1298bbc6673ea5bc19b0d658df96f293680eb255","isMergeCommit":false,"messageTitle":"Add save to file feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":1}}},{"hash":"4f32c4f0e823fb0f67ca97456fdd2a3e4c56d240","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"bc7c611b01ac1f77180a6bc791bd26e63833bc3a","isMergeCommit":false,"messageTitle":"Store dates as a java.time.LocalDateTime object in Task Objects","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":19}}},{"hash":"7ca8f5d6fdf7ee208de30b021bbc2e630c97e402","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 into master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ReflectiveObsidian":{"java":343,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"ReflectiveObsidian":29947.916},"authorDisplayNameMap":{"ReflectiveObsidian":"CS2103T-T11-1 NG W..MING"}} diff --git a/ReganChoy_ip_master/authorship.json b/ReganChoy_ip_master/authorship.json index 9769ec86..17c99026 100644 --- a/ReganChoy_ip_master/authorship.json +++ b/ReganChoy_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" public Deadline(String task, String taskType, String deadline) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" super(task, taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask() + getPeriod();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" public String getPeriod() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" return \"(by: \" + this.deadline + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" return \"New Deadline created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":19}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" String name \u003d \"XVX-016 Aerial\";","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" String command \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" String secondaryInput \u003d \"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" Scanner scanner1;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" String[] commandList \u003d new String[] {\"bye\", \"mark\", \"unmark\", \"todo\", \"deadline\", \"event\", \"list\"};","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" public Duke() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" public void greeting() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"HELLO, Nice to meet you. I am \" + this.name + \"! \\uD83E\\uDD16\");","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"What are we doing today?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" public void bye() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"See you next time! ♥( ˆ⌣ ˆԅ)\");","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":" this.scanner1.close();","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" public void horizontalLines() {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\n ____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" public void echo() {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"╭( ๐ _๐)╮\");","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\uD83D\\uDDE8️ You said THIS: \");","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":" System.out.println(this.command);","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"ReganChoy"},"content":" public void markTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"We have completed this task!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ReganChoy"},"content":" currentTask.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"ReganChoy"},"content":" System.out.println(currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"ReganChoy"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Task has been deleted!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"ReganChoy"},"content":" System.out.println(currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"ReganChoy"},"content":" taskList.remove(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"ReganChoy"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Oops, task unmarked!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"ReganChoy"},"content":" currentTask.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"ReganChoy"},"content":" System.out.println(currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"ReganChoy"},"content":" public void addTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"ReganChoy"},"content":" Task newTask;","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"ReganChoy"},"content":" if (this.command.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new ToDo(secondaryInput, \"T\");","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.announcement());","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"ReganChoy"},"content":" String[] secondaryInputSplit \u003d secondaryInput.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new Deadline(secondaryInputSplit[0], \"D\", secondaryInputSplit[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.announcement());","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"ReganChoy"},"content":" String[] secondaryInputSplit \u003d secondaryInput.split(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new Event(secondaryInputSplit[0], \"E\", secondaryInputSplit[1],","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"ReganChoy"},"content":" secondaryInputSplit[2]);","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.announcement());","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"ReganChoy"},"content":" System.out.println(newTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Invalid Task\");","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"ReganChoy"},"content":" public void listTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\uD83D\\uDD6E\");","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\uD83D\\uDDE8️ These are the tasks we currently have: \");","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"ReganChoy"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(i);","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"ReganChoy"},"content":" System.out.println((i+1) + \". \" + currentTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"We have \" + (taskList.size()) + \" tasks.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"ReganChoy"},"content":" public void indent() {","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"ReganChoy"},"content":" System.out.print(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":147,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":148,"author":{"gitId":"ReganChoy"},"content":" public void input() {","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"ReganChoy"},"content":" boolean isCommandValid \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d\"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"ReganChoy"},"content":" this.secondaryInput \u003d\"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"ReganChoy"},"content":" String commandInput \u003d scanner1.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":153,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":154,"author":{"gitId":"ReganChoy"},"content":" if (commandInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d commandInput;","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"ReganChoy"},"content":" bye();","lastModifiedDate":"2024-01-22"},{"lineNumber":158,"author":{"gitId":"ReganChoy"},"content":" } else if (commandInput.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d commandInput;","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"ReganChoy"},"content":" listTask();","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"ReganChoy"},"content":" String[] inputSplit \u003d commandInput.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d inputSplit[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"ReganChoy"},"content":" if (this.command.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"ReganChoy"},"content":" markTask(Integer.valueOf(inputSplit[1]) - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"ReganChoy"},"content":" unmarkTask(Integer.valueOf((inputSplit[1])) - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"ReganChoy"},"content":" deleteTask(Integer.valueOf((inputSplit[1])) - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"ReganChoy"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"ReganChoy"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"You have no task to mark,unmark or delete!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"You only have \" + taskList.size() +\" tasks!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Select a number from 1 to \" + taskList.size() + \".\");","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"ReganChoy"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Please input a number.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":199,"author":{"gitId":"ReganChoy"},"content":" if ((this.command.equals(\"todo\")) || (this.command.equals(\"deadline\"))","lastModifiedDate":"2024-01-23"},{"lineNumber":200,"author":{"gitId":"ReganChoy"},"content":" || (this.command.equals(\"event\"))) {","lastModifiedDate":"2024-01-23"},{"lineNumber":201,"author":{"gitId":"ReganChoy"},"content":" this.secondaryInput \u003d inputSplit[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"ReganChoy"},"content":" addTask();","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"ReganChoy"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"ReganChoy"},"content":" if (this.command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":208,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Please input a date or time with a / in front.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":209,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":213,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Please input a start and end time or date with a / in front of both periods.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":214,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":215,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":216,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":217,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":218,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":219,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":220,"author":{"gitId":"ReganChoy"},"content":" if (!isCommandValid) {","lastModifiedDate":"2024-01-23"},{"lineNumber":221,"author":{"gitId":"ReganChoy"},"content":" indent();","lastModifiedDate":"2024-01-23"},{"lineNumber":222,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"No such command or too many parameters. Please try again\");","lastModifiedDate":"2024-01-23"},{"lineNumber":223,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-23"},{"lineNumber":224,"author":{"gitId":"ReganChoy"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":225,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":226,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":227,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":229,"author":{"gitId":"ReganChoy"},"content":" Duke Duke1 \u003d new Duke();","lastModifiedDate":"2024-01-22"},{"lineNumber":230,"author":{"gitId":"ReganChoy"},"content":" Duke1.greeting();","lastModifiedDate":"2024-01-22"},{"lineNumber":231,"author":{"gitId":"ReganChoy"},"content":" Duke1.scanner1 \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":232,"author":{"gitId":"ReganChoy"},"content":" Duke1.input();","lastModifiedDate":"2024-01-22"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ReganChoy":229,"-":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String start;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" private String end;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" public Event(String Task, String taskType, String start, String end) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" super(Task, taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask() + getPeriod();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" public String getPeriod() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" return \"(from: \" + this.start + \"to: \" + this.end + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" return \"New Event created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":20}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String task;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" private String taskType;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" public Task(String taskDesc) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" this.task \u003d taskDesc;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" public Task(String taskDesc, String taskType) {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" this.task \u003d taskDesc;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" public void mark(){","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" public String getStatus() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" if (isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" return \"[X]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":" return \"[]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" public String getTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":" return this.task;","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" public String getTaskType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" return \"[\" + this.taskType + \"]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":" return \"New task created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":42}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" public ToDo(String Task, String taskType) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" super(Task,taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" return \"New ToDo created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask();","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"todo cake","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"deadline cake /3pm","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"event cake /3pm /4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":5}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" public Deadline(String task, String taskType, String deadline) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" super(task, taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask() + this.getPeriod();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" public String getPeriod() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" return \"(by: \" + this.deadline + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" return \"New Deadline created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" public String saveString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskTypeSingle() + \"/\" + this.getStatusBinary() + \"/\" + this.getTask() + \"/\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":" this.deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":24}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" String command \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" String secondaryInput \u003d \"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" Scanner scanner1;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" boolean isEnded \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" String[] commandList \u003d new String[] {\"bye\", \"mark\", \"unmark\", \"todo\", \"deadline\", \"event\", \"list\"};","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" public void exit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":" this.ui.bye();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" this.scanner1.close();","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" this.storage.saveFile(this.taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" this.isEnded \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" horizontalLines();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":" public void horizontalLines() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\n ____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" public void input() {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":" boolean isCommandValid \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d\"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" this.secondaryInput \u003d\"\";","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":" String commandInput \u003d scanner1.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" if (commandInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d commandInput;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":" exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ReganChoy"},"content":" } else if (commandInput.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d commandInput;","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ReganChoy"},"content":" this.taskList.listTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ReganChoy"},"content":" String[] inputSplit \u003d commandInput.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ReganChoy"},"content":" this.command \u003d inputSplit[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ReganChoy"},"content":" if (this.command.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"ReganChoy"},"content":" this.taskList.markTask(Integer.valueOf(inputSplit[1]) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"ReganChoy"},"content":" this.taskList.unmarkTask(Integer.valueOf((inputSplit[1])) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"ReganChoy"},"content":" this.taskList.deleteTask(Integer.valueOf((inputSplit[1])) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"ReganChoy"},"content":" } catch(IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"ReganChoy"},"content":" if (this.taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tYou have no task to mark,unmark or delete!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tYou only have \" + taskList.size() +\" tasks!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tSelect a number from 1 to \" + taskList.size() + \".\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"ReganChoy"},"content":" } catch(NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tPlease input a number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"ReganChoy"},"content":" if ((this.command.equals(\"todo\")) || (this.command.equals(\"deadline\"))","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"ReganChoy"},"content":" || (this.command.equals(\"event\"))) {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"ReganChoy"},"content":" this.secondaryInput \u003d inputSplit[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"ReganChoy"},"content":" isCommandValid \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"ReganChoy"},"content":" this.taskList.addTask(this.command, this.secondaryInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"ReganChoy"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"ReganChoy"},"content":" if (this.command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tPlease input a date or time with a / in front.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ReganChoy"},"content":" } else if (this.command.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tPlease input a start and end time or date with a / in front of both periods.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"ReganChoy"},"content":" if (!isCommandValid) {","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tNo such command or too many parameters. Please try again\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"ReganChoy"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"ReganChoy"},"content":" this.taskList \u003d storage.loadFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"ReganChoy"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Run failed.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":100,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"ReganChoy"},"content":" Duke Duke1 \u003d new Duke(\"data/tasks.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"ReganChoy"},"content":" Duke1.run();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"ReganChoy"},"content":" Duke1.scanner1 \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"ReganChoy"},"content":" Duke1.horizontalLines();","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"ReganChoy"},"content":" Duke1.ui.greeting();","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"ReganChoy"},"content":" while (!Duke1.isEnded) {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"ReganChoy"},"content":" Duke1.horizontalLines();","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"ReganChoy"},"content":" Duke1.input();","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"ReganChoy"},"content":" //Duke1.horizontalLines();","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ReganChoy":111,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String start;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" private String end;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" public Event(String Task, String taskType, String start, String end) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" super(Task, taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask() + this.getPeriod();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" public String getPeriod() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" return \"(from: \" + this.start + \"to: \" + this.end + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" return \"New Event created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" public String saveString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskTypeSingle() + \"/\" + this.getStatusBinary() + \"/\" + this.getTask() + \"/\"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" + this.start + \"/\" + this.end;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":25}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" private String path;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" public Storage(String path) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" public TaskList loadFile() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" TaskList taskListInput \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" File file \u003d new File(this.path);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" if(!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" while(scanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" String inputLine \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" String[] inputComponents \u003d inputLine.split(\"/\", 5);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":" if(inputComponents[0].equals(\"T\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":" currentTask \u003d new ToDo(inputComponents[2],inputComponents[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" } else if(inputComponents[0].equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":" currentTask \u003d new Deadline(inputComponents[2],inputComponents[0],inputComponents[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" } else if(inputComponents[0].equals(\"E\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":" currentTask \u003d new Event(inputComponents[2],inputComponents[0],inputComponents[3],inputComponents[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"What is this nonsense. Failure to load object.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" if(inputComponents[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":" currentTask.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":" taskListInput.getTaskList().add(currentTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ReganChoy"},"content":" return taskListInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ReganChoy"},"content":" public void saveFile(TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ReganChoy"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ReganChoy"},"content":" FileWriter writer \u003d new FileWriter(this.path);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ReganChoy"},"content":" String tasks \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ReganChoy"},"content":" for (int i \u003d 0; i \u003c tasklist.getTaskList().size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d tasklist.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ReganChoy"},"content":" tasks +\u003d currentTask.saveString() + \"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ReganChoy"},"content":" writer.write(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ReganChoy"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ReganChoy"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"Error while saving: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ReganChoy":62}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String task;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" private String taskType;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" public Task(String taskDesc) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" this.task \u003d taskDesc;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" public Task(String taskDesc, String taskType) {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" this.task \u003d taskDesc;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" public void mark(){","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" public String getStatus() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" if (isDone) {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" return \"[X]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":" return \"[]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" public String getStatusBinary() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" return \"1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" return \"0\";","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" public String getTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":" return this.task;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"ReganChoy"},"content":" public String getTaskType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ReganChoy"},"content":" return \"[\" + this.taskType + \"]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ReganChoy"},"content":" return \"New task created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ReganChoy"},"content":" public String saveString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ReganChoy"},"content":" return \"Type/Done/Description\";","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ReganChoy"},"content":" public String getTaskTypeSingle() {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ReganChoy"},"content":" return this.taskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":57}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" public void markTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tWe have completed this task!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" currentTask.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tTask has been deleted!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ReganChoy"},"content":" taskList.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ReganChoy"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tOops, task unmarked!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ReganChoy"},"content":" currentTask.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + currentTask.getTaskType() + \" \" + currentTask.getStatus() + \" \" + currentTask.getTask());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ReganChoy"},"content":" public void listTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tThese are the tasks we currently have: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ReganChoy"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ReganChoy"},"content":" Task currentTask \u003d taskList.get(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + (i+1) + \". \" + currentTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tWe have \" + (taskList.size()) + \" tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ReganChoy"},"content":" public void addTask(String first, String second) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ReganChoy"},"content":" Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ReganChoy"},"content":" if (first.equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new ToDo(second, \"T\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + newTask.announcement());","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\\t\" + newTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ReganChoy"},"content":" } else if (first.equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ReganChoy"},"content":" String[] secondaryInputSplit \u003d second.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new Deadline(secondaryInputSplit[0], \"D\", secondaryInputSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + newTask.announcement());","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\\t\" + newTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ReganChoy"},"content":" } else if (first.equals(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ReganChoy"},"content":" String[] secondaryInputSplit \u003d second.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ReganChoy"},"content":" newTask \u003d new Event(secondaryInputSplit[0], \"E\", secondaryInputSplit[1],","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ReganChoy"},"content":" secondaryInputSplit[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ReganChoy"},"content":" this.taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\" + newTask.announcement());","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\t\\t\" + newTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ReganChoy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tInvalid Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ReganChoy"},"content":" public int size() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ReganChoy"},"content":" return taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ReganChoy"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ReganChoy"},"content":" return this.taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ReganChoy"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ReganChoy"},"content":" return taskList.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ReganChoy":78}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" public ToDo(String Task, String taskType) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":" super(Task,taskType);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":" public String announcement() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" return \"New ToDo created!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskType() + this.getStatus() + \" \" + this.getTask();","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" public String saveString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":" return this.getTaskTypeSingle() + \"/\" + this.getStatusBinary() + \"/\" + this.getTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":17}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":" private String name \u003d \"XVX-016 Aerial\";","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":" public Ui () {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ReganChoy"},"content":" public void greeting() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tHELLO, Nice to meet you. I am \" + this.name + \"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tWhat are we doing today?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ReganChoy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ReganChoy"},"content":" public void bye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ReganChoy"},"content":" System.out.println(\"\\tSee you next time! ♥( ˆ⌣ ˆԅ)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ReganChoy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ReganChoy"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ReganChoy":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ReganChoy"},"content":"todo cake","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ReganChoy"},"content":"deadline cake /3pm","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ReganChoy"},"content":"event cake /3pm /4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ReganChoy"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"ReganChoy"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ReganChoy":5}}] diff --git a/ReganChoy_ip_master/commits.json b/ReganChoy_ip_master/commits.json index b861b73a..16044b97 100644 --- a/ReganChoy_ip_master/commits.json +++ b/ReganChoy_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ReganChoy":[{"date":"2024-01-22","commitResults":[{"hash":"ae7f5f60da2dcd769650ec70990135eed9d78d07","isMergeCommit":false,"messageTitle":"Added Name, Greeting and Bye","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":0}}},{"hash":"da80f928a34b3731a8c6233efae234dcce8154c3","isMergeCommit":false,"messageTitle":"Added Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":18}}}]},{"date":"2024-01-23","commitResults":[{"hash":"b66390adde8b558573da6afa41a62eaf31d6d36a","isMergeCommit":false,"messageTitle":"Added: List and Add methods","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":2}}},{"hash":"d6d838ca0eeff5bf5f9d138fc5689802a9313665","isMergeCommit":false,"messageTitle":"Added: Task class, Mark and Unmark methods","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":4}}},{"hash":"2ad497483e7d0d5a1e18dda7b577658c0605e3bd","isMergeCommit":false,"messageTitle":"Added: Subclassses of Task (ToDo, Event, Deadline)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":10}}},{"hash":"bce02ca242a9d93fd2beec937f27137fb965f27d","isMergeCommit":false,"messageTitle":"Edited: input.txt and Expected.txt","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":8,"deletions":5}}},{"hash":"ebae447530469d79b29db174375a5d9afa029933","isMergeCommit":false,"messageTitle":"Added: Exception Handling for Methods","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":18}}},{"hash":"5118c1601d3eb1ff7030034f021f9110e2c13be1","isMergeCommit":false,"messageTitle":"Added: Delete method","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"ReganChoy":{"java":323,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"ReganChoy":19440.16},"authorDisplayNameMap":{"ReganChoy":"CS2103T-W12-1 REGA..N FU"}} +{"authorDailyContributionsMap":{"ReganChoy":[{"date":"2024-01-22","commitResults":[{"hash":"ae7f5f60da2dcd769650ec70990135eed9d78d07","isMergeCommit":false,"messageTitle":"Added Name, Greeting and Bye","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":0}}},{"hash":"da80f928a34b3731a8c6233efae234dcce8154c3","isMergeCommit":false,"messageTitle":"Added Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":18}}}]},{"date":"2024-01-23","commitResults":[{"hash":"b66390adde8b558573da6afa41a62eaf31d6d36a","isMergeCommit":false,"messageTitle":"Added: List and Add methods","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":2}}},{"hash":"d6d838ca0eeff5bf5f9d138fc5689802a9313665","isMergeCommit":false,"messageTitle":"Added: Task class, Mark and Unmark methods","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":4}}},{"hash":"2ad497483e7d0d5a1e18dda7b577658c0605e3bd","isMergeCommit":false,"messageTitle":"Added: Subclassses of Task (ToDo, Event, Deadline)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":10}}},{"hash":"bce02ca242a9d93fd2beec937f27137fb965f27d","isMergeCommit":false,"messageTitle":"Edited: input.txt and Expected.txt","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":8,"deletions":5}}},{"hash":"ebae447530469d79b29db174375a5d9afa029933","isMergeCommit":false,"messageTitle":"Added: Exception Handling for Methods","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":18}}},{"hash":"5118c1601d3eb1ff7030034f021f9110e2c13be1","isMergeCommit":false,"messageTitle":"Added: Delete method","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}}]},{"date":"2024-01-30","commitResults":[{"hash":"1d50728d820235faa6835b57e868b90b6cb843e0","isMergeCommit":false,"messageTitle":"Implemented Load and Save functions Re-organized code into different classes from Duke class","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":234,"deletions":169}}}]}]},"authorFileTypeContributionMap":{"ReganChoy":{"java":389,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"ReganChoy":19953.166},"authorDisplayNameMap":{"ReganChoy":"CS2103T-W12-1 REGA..N FU"}} diff --git a/Rikko1204_ip_master/authorship.json b/Rikko1204_ip_master/authorship.json index d239ce23..bb41e30c 100644 --- a/Rikko1204_ip_master/authorship.json +++ b/Rikko1204_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Arona.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"public class Arona {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" private String name;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" private ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" public Arona(String name) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" public void greetings() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" String logo \u003d\" _____ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"/* */ \" / _ \\\\_______ ____ _____ _____ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"/* */ \" / /_\\\\ \\\\_ __ \\\\/ _ \\\\ / \\\\___ \\\\ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" /* */ \" / | \\\\ | \\\\_ ( \u003c_\u003e ) | \\\\/ __ \\\\_ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"/* */ \" \\\\____|__ /__| \\\\____/|___|_ (____ / \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"/* */ \" \\\\/ \\\\/ \\\\/ \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Hello from \\n\" + logo);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":"// String reply \u003d \"Hi! I\u0027m \" + this.name + \". What can I do for you?\";","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" String reply \u003d \"こんにちは先生、私は\" + this.name + \"アロナです. \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" + \"どういうご用件ですか? \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":" + \"ここで先生のスケジュールが決まります!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" System.out.println(reply);","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" public void quitApplication() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" String reply \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" System.out.println(reply);","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" public void addTask(String input) throws TaskException {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" String type \u003d splitInput[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" if (splitInput.length \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"OOPS!!! Please enter some tasks!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" } else if (!containsEnumValue(TaskEnum.class, type)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" } else if (splitInput.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"OOPS!!! Please provide some task description\");","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" String[] info \u003d splitInput[1].split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" String description \u003d info[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" switch(type) {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" case \"todo\":","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Todo(description));","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" if (info.length \u003c 2) throw new TaskException(\"OOPS!!! Please provide a deadline.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" String by \u003d info[1].replaceAll(\"by\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Deadline(description, by));","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" case \"event\":","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" if (info.length \u003c 3) throw new TaskException(\"OOPS!!! Please provide an event begin and deadline.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" String from \u003d info[1].replaceAll(\"from\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" by \u003d info[2].replaceAll(\"to\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Event(description, from, by));","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" System.out.println(tasks.get(tasks.size() - 1).toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" public void DeleteTask(int taskNum) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" if (taskNum \u003e tasks.size()) throw new IndexOutOfBoundsException(\"OOPS!!! The task doesn\u0027t exist!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":" int index \u003d taskNum - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Noted. I have removed this task: \");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":" public void printTasks() {","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"Rikko1204"},"content":" if (tasks.get(i) \u003d\u003d null) break;","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"Rikko1204"},"content":" System.out.println(i + 1 + \".\" + task.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":88,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"Rikko1204"},"content":" public void changeTaskStatus(int taskNum, boolean status) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"Rikko1204"},"content":" if (taskNum \u003e tasks.size()) throw new IndexOutOfBoundsException(\"OOPS!!! The task doesn\u0027t exist!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"Rikko1204"},"content":" int index \u003d taskNum - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"Rikko1204"},"content":" if (task.getStatus() \u003d\u003d status) {","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"The task has already been marked as \" + (status ? \"done.\" : \"not done.\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"Rikko1204"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Rikko1204"},"content":" task.setStatusIcon(status);","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"Rikko1204"},"content":" if (status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"Rikko1204"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"Rikko1204"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"Rikko1204"},"content":" public static void main(String[] args) throws AronaException {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Rikko1204"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":112,"author":{"gitId":"Rikko1204"},"content":" Arona arona \u003d new Arona(\"Arona\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Rikko1204"},"content":" arona.greetings();","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":115,"author":{"gitId":"Rikko1204"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":116,"author":{"gitId":"Rikko1204"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"Rikko1204"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"Rikko1204"},"content":" String command \u003d input.split(\" \", 0)[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"Rikko1204"},"content":" switch(command) {","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"Rikko1204"},"content":" case \"bye\":","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"Rikko1204"},"content":" arona.quitApplication();","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Rikko1204"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":123,"author":{"gitId":"Rikko1204"},"content":" case \"list\":","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"Rikko1204"},"content":" arona.printTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"Rikko1204"},"content":" case \"mark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"OOPS!!! Please provide task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Rikko1204"},"content":" int taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":129,"author":{"gitId":"Rikko1204"},"content":" arona.changeTaskStatus(taskNum, true);","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"Rikko1204"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"OOPS!!! Please provide task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"Rikko1204"},"content":" taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"Rikko1204"},"content":" arona.changeTaskStatus(taskNum, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"Rikko1204"},"content":" case \"delete\":","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"OOPS!!! Please provide task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"Rikko1204"},"content":" taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"Rikko1204"},"content":" arona.DeleteTask(taskNum);","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"Rikko1204"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"Rikko1204"},"content":" arona.addTask(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":145,"author":{"gitId":"Rikko1204"},"content":" } catch (TaskException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"Rikko1204"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"Rikko1204"},"content":" } catch (AronaException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"Rikko1204"},"content":" private static \u003cE extends Enum\u003cE\u003e\u003e boolean containsEnumValue(Class\u003cE\u003e enumClass, String value) {","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"Rikko1204"},"content":" for (Enum\u003cE\u003e enumConstant : enumClass.getEnumConstants()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"Rikko1204"},"content":" if (enumConstant.name().equalsIgnoreCase(value)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"Rikko1204"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":160,"author":{"gitId":"Rikko1204"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Rikko1204":160,"-":2}},{"path":"src/main/java/AronaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class AronaException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public AronaException(String string) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(string);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/CommandEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public enum CommandEnum {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" BYE,","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" LIST,","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" MARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" UNMARK","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":6}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":12}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" public Event(String description, String from, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" return \"[E]\" + super.toString() + \"(from: \" + this.from + \" to: \" + this.by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":14}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" return description;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" return isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" public void setStatusIcon(boolean status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":30}},{"path":"src/main/java/TaskEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public enum TaskEnum {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" TODO,","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" DEADLINE,","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" EVENT","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class TaskException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public TaskException(String string) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(string);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"todo food","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Rikko1204":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":"Rikko1204"},"content":"@REM REM compile the code into the bin folder","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"@REM javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke.java","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"@REM IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"@REM echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"@REM exit /b 1","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"@REM )","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"@REM REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-24"},{"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":"Rikko1204"},"content":"java -classpath \"..\\out\\production\\Personal Project\" Arona \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"Rikko1204":8,"-":13}}] +[{"path":"src/data/tasklist.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"D | 0 | return book | June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"E | 0 | project meeting | Aug 6th | 2-4pm","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"T | 0 | food","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/Arona.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"import java.io.OutputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"public class Arona {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" private String name;","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" private ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" public Arona(String name) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" public void greetings() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":" String logo \u003d\" _____ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"/* */ \" / _ \\\\_______ ____ _____ _____ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":"/* */ \" / /_\\\\ \\\\_ __ \\\\/ _ \\\\ / \\\\___ \\\\ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" /* */ \" / | \\\\ | \\\\_ ( \u003c_\u003e ) | \\\\/ __ \\\\_ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"/* */ \" \\\\____|__ /__| \\\\____/|___|_ (____ / \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"/* */ \" \\\\/ \\\\/ \\\\/ \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"開始中... \\n\" + logo);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":"// String reply \u003d \"Hi! I\u0027m \" + this.name + \". What can I do for you?\";","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" String reply \u003d \"こんにちは先生、私は\" + this.name + \"アロナです. \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" + \"どういうご用件ですか? \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" + \"ここで先生のスケジュールが決まります\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" System.out.println(reply);","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" public void quitApplication() {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" String reply \u003d \"Goodbye sensei! Hope to see you soon!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" System.out.println(reply);","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" public void addTask(String input) throws TaskException {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" String type \u003d splitInput[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" if (splitInput.length \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"Sensei! Please enter some tasks!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" } else if (!containsEnumValue(TaskEnum.class, type)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"Sensei, Arona does not know what that means!.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" } else if (splitInput.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" throw new TaskException(\"Sensei! Please provide some task description!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" String[] info \u003d splitInput[1].split(\"/\");","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" String description \u003d info[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" switch(type) {","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" case \"todo\":","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Todo(description));","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" if (info.length \u003c 2) throw new TaskException(\"Sensei! Please provide a deadline!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":" String by \u003d info[1].replaceAll(\"by\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Deadline(description, by));","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" case \"event\":","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" if (info.length \u003c 3) throw new TaskException(\"Sensei! Please provide an event begin and deadline.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":" String from \u003d info[1].replaceAll(\"from\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" by \u003d info[2].replaceAll(\"to\", \"\").trim();","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" tasks.add(new Event(description, from, by));","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Arona has added this task to sensei\u0027s task list!: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":" System.out.println(tasks.get(tasks.size() - 1).toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Arona has counted \" + tasks.size() + \" tasks in the list!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":77,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":78,"author":{"gitId":"Rikko1204"},"content":" public void DeleteTask(int taskNum) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":" if (taskNum \u003e tasks.size()) throw new IndexOutOfBoundsException(\"Sensei, the task doesn\u0027t exist!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" int index \u003d taskNum - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"Rikko1204"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Arona has removed this task!: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Arona has counted \" + tasks.size() + \" tasks in the list!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"Rikko1204"},"content":" public void printTasks() {","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Sensei! Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Rikko1204"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"Rikko1204"},"content":" if (tasks.get(i) \u003d\u003d null) break;","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"Rikko1204"},"content":" System.out.println(i + 1 + \".\" + task.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":98,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"Rikko1204"},"content":" public void changeTaskStatus(int taskNum, boolean status) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"Rikko1204"},"content":" if (taskNum \u003e tasks.size()) throw new IndexOutOfBoundsException(\"Sensei! The task doesn\u0027t exist!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"Rikko1204"},"content":" int index \u003d taskNum - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"Rikko1204"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"Rikko1204"},"content":" if (task.getStatus() \u003d\u003d status) {","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Sensei, the task has already been marked as \" + (status ? \"done!\" : \"not done!\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Rikko1204"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"Rikko1204"},"content":" task.setStatusIcon(status);","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"Rikko1204"},"content":" if (status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":113,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"Congratulation, sensei! Arona has marked the task as done!:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Rikko1204"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"Rikko1204"},"content":" System.out.println(\"I understand, sensei! Arona has marked the task as not done!:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Rikko1204"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Rikko1204"},"content":" public void readTaskFromFile(String filePath) throws TaskException {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Rikko1204"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Rikko1204"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Rikko1204"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Rikko1204"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Rikko1204"},"content":" int counter \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Rikko1204"},"content":" PrintStream originalOut \u003d System.out;","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Rikko1204"},"content":" System.setOut(new PrintStream(new OutputStream() {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Rikko1204"},"content":" public void write(int b) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Rikko1204"},"content":" // Do nothing","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Rikko1204"},"content":" }));","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Rikko1204"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Rikko1204"},"content":" String[] splitString \u003d line.split(\"\\\\|\", 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Rikko1204"},"content":" String taskStatus \u003d splitString[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Rikko1204"},"content":" String taskInput \u003d line.replaceAll(\"\\\\| 0 \\\\|\", \"\")","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\| 1 \\\\|\", \"\")","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\|\", \"/\")","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"T\", \"todo\")","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"D\", \"deadline\")","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"E\", \"event\")","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\" \", \" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Rikko1204"},"content":" addTask(taskInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Rikko1204"},"content":" boolean isTaskDone \u003d taskStatus.trim().equals(\"1\") ? true : false;","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Rikko1204"},"content":" changeTaskStatus(counter, isTaskDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Rikko1204"},"content":" counter++;","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Rikko1204"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Rikko1204"},"content":" reader.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Rikko1204"},"content":" System.setOut(originalOut);","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Rikko1204"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Rikko1204"},"content":" System.err.println(\"Oops sensei, Arona cannot find your task file!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Rikko1204"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Rikko1204"},"content":" System.err.println(\"Sensei! There were some errors reading tasks from the file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Rikko1204"},"content":" public void saveTaskToFile(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Rikko1204"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Rikko1204"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Rikko1204"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Rikko1204"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Rikko1204"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"Rikko1204"},"content":" writer.write(taskToString(task));","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"Rikko1204"},"content":" writer.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Rikko1204"},"content":" writer.flush();","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Rikko1204"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Rikko1204"},"content":" } catch (IOException e ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Rikko1204"},"content":" System.err.println(\"Sensei! There were some errors reading tasks from the file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"Rikko1204"},"content":" public String taskToString(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Rikko1204"},"content":" String output \u003d task.toString()","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\[T]\", \"T\")","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\[D]\", \"D\")","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\[E]\", \"E\")","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\[ ]\", \" \\\\| 0 \\\\|\")","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\[X]\", \" \\\\| 1 \\\\|\")","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\(by:\", \"\\\\|\")","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\)\", \"\")","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\(from:\", \"\\\\|\")","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"to:\", \"\\\\|\")","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Rikko1204"},"content":" .replaceAll(\"\\\\)\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Rikko1204"},"content":" return output;","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":193,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":194,"author":{"gitId":"Rikko1204"},"content":" public static void main(String[] args) throws TaskException {","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Rikko1204"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":196,"author":{"gitId":"Rikko1204"},"content":" Arona arona \u003d new Arona(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"Rikko1204"},"content":" arona.greetings();","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"Rikko1204"},"content":" String filePath \u003d \"./src/data/tasklist.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Rikko1204"},"content":" arona.readTaskFromFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":202,"author":{"gitId":"Rikko1204"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":203,"author":{"gitId":"Rikko1204"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"Rikko1204"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":205,"author":{"gitId":"Rikko1204"},"content":" String command \u003d input.split(\" \", 0)[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":206,"author":{"gitId":"Rikko1204"},"content":" switch(command) {","lastModifiedDate":"2024-01-22"},{"lineNumber":207,"author":{"gitId":"Rikko1204"},"content":" case \"bye\":","lastModifiedDate":"2024-01-22"},{"lineNumber":208,"author":{"gitId":"Rikko1204"},"content":" arona.quitApplication();","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"Rikko1204"},"content":" return;","lastModifiedDate":"2024-01-22"},{"lineNumber":210,"author":{"gitId":"Rikko1204"},"content":" case \"list\":","lastModifiedDate":"2024-01-22"},{"lineNumber":211,"author":{"gitId":"Rikko1204"},"content":" arona.printTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":212,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":213,"author":{"gitId":"Rikko1204"},"content":" case \"mark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":214,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"Sensei! Please provide a task number!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"Rikko1204"},"content":" int taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":216,"author":{"gitId":"Rikko1204"},"content":" arona.changeTaskStatus(taskNum, true);","lastModifiedDate":"2024-01-29"},{"lineNumber":217,"author":{"gitId":"Rikko1204"},"content":" arona.saveTaskToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":219,"author":{"gitId":"Rikko1204"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":220,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"Sensei! Please provide a task number!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Rikko1204"},"content":" taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":222,"author":{"gitId":"Rikko1204"},"content":" arona.changeTaskStatus(taskNum, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":223,"author":{"gitId":"Rikko1204"},"content":" arona.saveTaskToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":225,"author":{"gitId":"Rikko1204"},"content":" case \"delete\":","lastModifiedDate":"2024-01-23"},{"lineNumber":226,"author":{"gitId":"Rikko1204"},"content":" if (input.split(\" \", 0).length \u003d\u003d 1) throw new AronaException(\"Sensei! Please provide a task number!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Rikko1204"},"content":" taskNum \u003d Integer.parseInt(input.split(\" \", 0)[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":228,"author":{"gitId":"Rikko1204"},"content":" arona.DeleteTask(taskNum);","lastModifiedDate":"2024-01-29"},{"lineNumber":229,"author":{"gitId":"Rikko1204"},"content":" arona.saveTaskToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":231,"author":{"gitId":"Rikko1204"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":232,"author":{"gitId":"Rikko1204"},"content":" arona.addTask(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":233,"author":{"gitId":"Rikko1204"},"content":" arona.saveTaskToFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"Rikko1204"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":235,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":236,"author":{"gitId":"Rikko1204"},"content":" } catch (TaskException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":237,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":238,"author":{"gitId":"Rikko1204"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":239,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":240,"author":{"gitId":"Rikko1204"},"content":" } catch (AronaException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":241,"author":{"gitId":"Rikko1204"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":242,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":243,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":244,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":245,"author":{"gitId":"Rikko1204"},"content":" private static \u003cE extends Enum\u003cE\u003e\u003e boolean containsEnumValue(Class\u003cE\u003e enumClass, String value) {","lastModifiedDate":"2024-01-23"},{"lineNumber":246,"author":{"gitId":"Rikko1204"},"content":" for (Enum\u003cE\u003e enumConstant : enumClass.getEnumConstants()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":247,"author":{"gitId":"Rikko1204"},"content":" if (enumConstant.name().equalsIgnoreCase(value)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":248,"author":{"gitId":"Rikko1204"},"content":" return true;","lastModifiedDate":"2024-01-23"},{"lineNumber":249,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":250,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":251,"author":{"gitId":"Rikko1204"},"content":" return false;","lastModifiedDate":"2024-01-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Rikko1204":251,"-":2}},{"path":"src/main/java/AronaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class AronaException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public AronaException(String string) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(string);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/CommandEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public enum CommandEnum {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" BYE,","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" LIST,","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" MARK,","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" UNMARK","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":6}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":12}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" protected String to;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" return \"[E]\" + super.toString() + \"(from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":14}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" return description;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" return isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" public void setStatusIcon(boolean status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":30}},{"path":"src/main/java/TaskEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public enum TaskEnum {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" TODO,","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" DEADLINE,","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" EVENT","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class TaskException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public TaskException(String string) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(string);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Rikko1204":5}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"Rikko1204":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"todo food","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Rikko1204":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":"Rikko1204"},"content":"@REM REM compile the code into the bin folder","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"@REM javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke.java","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"@REM IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"@REM echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"@REM exit /b 1","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"@REM )","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"@REM REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-24"},{"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":"Rikko1204"},"content":"java -classpath \"..\\out\\production\\Personal Project\" Arona \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"Rikko1204":8,"-":13}}] diff --git a/Rikko1204_ip_master/commits.json b/Rikko1204_ip_master/commits.json index 3cc73c34..22cbdea2 100644 --- a/Rikko1204_ip_master/commits.json +++ b/Rikko1204_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Rikko1204":[{"date":"2024-01-21","commitResults":[{"hash":"b565e3e5182d2a7969f7e86e52905efea7b6e4dd","isMergeCommit":false,"messageTitle":"Chatbot skeleton","messageBody":"","tags":["Level-0_Rename_Greet_Exit"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"419db981bbecb25e10f364903f18052c1481377f","isMergeCommit":false,"messageTitle":"Added echo commands","messageBody":"","tags":["Level-1.Echo"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":3}}}]},{"date":"2024-01-22","commitResults":[{"hash":"17e7cedfff79279c7d60a5070086135dd4d813e5","isMergeCommit":false,"messageTitle":"Added task lists","messageBody":"","tags":["Level-2_Add_List"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":18}}},{"hash":"b1b04e6a187b1320599a0963d7af0dca1303cdae","isMergeCommit":false,"messageTitle":"Added task done","messageBody":"","tags":["Level-3_Mark_As_Done"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":17}}},{"hash":"2e3e6a662a276805e02bb1f91575f43fa21bd400","isMergeCommit":false,"messageTitle":"Added task types","messageBody":"","tags":["Level-4_Todos_Deadlines_Events"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":13}}}]},{"date":"2024-01-23","commitResults":[{"hash":"3dc730fb848374e23ccbaf93b2cfe09a8dec1e61","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level-5_handle_errors"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":79,"deletions":28}}},{"hash":"f8c11feafa5f8966edcfa0fb82a4fc2554d9bec4","isMergeCommit":false,"messageTitle":"Added task delete","messageBody":"","tags":["Level-6_delete"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"3b712580ed42db6537fd85328fd20a5b0f6ef034","isMergeCommit":false,"messageTitle":"Added testings","messageBody":"","tags":["A-TextUiTesting_Automated_Text_UI_Testing"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":12,"deletions":3},"bat":{"insertions":8,"deletions":8}}}]},{"date":"2024-01-29","commitResults":[{"hash":"29ee426fedaa021f6220049ad646059ee20c790b","isMergeCommit":false,"messageTitle":"Change chatbot name to Arona","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":24},"bat":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Rikko1204":{"java":247,"md":0,"fxml":0,"sh":0,"bat":8,"gradle":0,"txt":2}},"authorContributionVariance":{"Rikko1204":4541.52},"authorDisplayNameMap":{"Rikko1204":"CS2103T-T15-2 CHEN.. MIN"}} +{"authorDailyContributionsMap":{"Rikko1204":[{"date":"2024-01-21","commitResults":[{"hash":"b565e3e5182d2a7969f7e86e52905efea7b6e4dd","isMergeCommit":false,"messageTitle":"Chatbot skeleton","messageBody":"","tags":["Level-0_Rename_Greet_Exit"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"419db981bbecb25e10f364903f18052c1481377f","isMergeCommit":false,"messageTitle":"Added echo commands","messageBody":"","tags":["Level-1.Echo"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":3}}}]},{"date":"2024-01-22","commitResults":[{"hash":"17e7cedfff79279c7d60a5070086135dd4d813e5","isMergeCommit":false,"messageTitle":"Added task lists","messageBody":"","tags":["Level-2_Add_List"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":18}}},{"hash":"b1b04e6a187b1320599a0963d7af0dca1303cdae","isMergeCommit":false,"messageTitle":"Added task done","messageBody":"","tags":["Level-3_Mark_As_Done"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":17}}},{"hash":"2e3e6a662a276805e02bb1f91575f43fa21bd400","isMergeCommit":false,"messageTitle":"Added task types","messageBody":"","tags":["Level-4_Todos_Deadlines_Events"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":13}}}]},{"date":"2024-01-23","commitResults":[{"hash":"3dc730fb848374e23ccbaf93b2cfe09a8dec1e61","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level-5_handle_errors"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":79,"deletions":28}}},{"hash":"f8c11feafa5f8966edcfa0fb82a4fc2554d9bec4","isMergeCommit":false,"messageTitle":"Added task delete","messageBody":"","tags":["Level-6_delete"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"3b712580ed42db6537fd85328fd20a5b0f6ef034","isMergeCommit":false,"messageTitle":"Added testings","messageBody":"","tags":["A-TextUiTesting_Automated_Text_UI_Testing"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":12,"deletions":3},"bat":{"insertions":8,"deletions":8}}}]},{"date":"2024-01-29","commitResults":[{"hash":"29ee426fedaa021f6220049ad646059ee20c790b","isMergeCommit":false,"messageTitle":"Change chatbot name to Arona","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":24},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"301f67400237f9a69cf83af37830915e53143d19","isMergeCommit":false,"messageTitle":"Add load and save file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":118,"deletions":27}}}]}]},"authorFileTypeContributionMap":{"Rikko1204":{"java":338,"md":0,"fxml":0,"sh":0,"bat":8,"gradle":0,"txt":7}},"authorContributionVariance":{"Rikko1204":4996.521},"authorDisplayNameMap":{"Rikko1204":"CS2103T-T15-2 CHEN.. MIN"}} diff --git a/STELLA-LYE_ip_master/authorship.json b/STELLA-LYE_ip_master/authorship.json index eac66d96..bf49f25f 100644 --- a/STELLA-LYE_ip_master/authorship.json +++ b/STELLA-LYE_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":" protected String date;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":" public Deadline(String description, String date) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" return \"[\" + super.getStatusIcon() + \"]\" + \" Deadline | \"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" + this.description + \" | \"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" + this.date;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":15}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" public static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" public static Integer taskCount \u003d 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" taskList \u003d loadFromFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" //Greets User","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" String lineBreak \u003d \"-----------------\";","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" \"Hello! I\u0027m Panda\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" \"What can I do for you?\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" String user_input \u003d sc.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" //conditions","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" while (!user_input.equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" String[] inputArray \u003d user_input.split(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" switch (inputArray[0]) {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" case \"list\":","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" \"There is currently no task in your list, trying adding some!\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" \"Here are the tasks in your list: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" for (int i \u003d 0; i \u003c taskCount; i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"\" + (i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" case \"mark\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" int taskNum \u003d Integer.parseInt(inputArray[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" currTask.check();","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" taskList.set(taskNum - 1, currTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" \"Nice! I\u0027ve marked this task as done:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" currTask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" case \"unmark\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" int taskNum \u003d Integer.parseInt(inputArray[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" currTask.uncheck();","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" taskList.set(taskNum - 1, currTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" \"OK, I\u0027ve marked this task as not done yet:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" currTask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" case \"todo\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" String[] tempArray \u003d user_input.split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" if (tempArray.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" throw new ExceptionDuke(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d new Todo(tempArray[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" taskList.add(currTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":" taskCount++;","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" \"Got it. I\u0027ve added this task:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" currTask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" \"Now you have \" + taskCount + \" tasks in the list.\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" case \"deadline\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" String[] dateArray \u003d user_input.split(\"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" String[] descriptionArray \u003d dateArray[0].split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d new Deadline(descriptionArray[1].stripLeading(), dateArray[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" taskList.add(currTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" taskCount++;","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" \"Got it. I\u0027ve added this task:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" currTask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":" \"Now you have \" + taskCount + \" tasks in the list.\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"STELLA-LYE"},"content":" case \"event\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"STELLA-LYE"},"content":" String[] dateArray \u003d user_input.split(\"/\");","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"STELLA-LYE"},"content":" String[] descriptionArray \u003d dateArray[0].split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"STELLA-LYE"},"content":" String date \u003d dateArray[1].substring(5);","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"STELLA-LYE"},"content":" String[] timeArray \u003d user_input.split(\"/to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"STELLA-LYE"},"content":" String time \u003d timeArray[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d new Event(descriptionArray[1].stripTrailing(), date, time);","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"STELLA-LYE"},"content":" taskList.add(currTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"STELLA-LYE"},"content":" taskCount++;","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"STELLA-LYE"},"content":" \"Got it. I\u0027ve added this task:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"STELLA-LYE"},"content":" currTask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"STELLA-LYE"},"content":" \"Now you have \" + taskCount + \" tasks in the list.\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"STELLA-LYE"},"content":" case \"delete\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"STELLA-LYE"},"content":" int taskNum \u003d Integer.parseInt(inputArray[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"STELLA-LYE"},"content":" Task currtask \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"STELLA-LYE"},"content":" taskList.remove(taskNum - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"STELLA-LYE"},"content":" taskCount--;","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"STELLA-LYE"},"content":" \"Noted. I\u0027ve removed this task:\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"STELLA-LYE"},"content":" currtask + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"STELLA-LYE"},"content":" \"Now you have \" + taskCount + \" tasks in the list.\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"STELLA-LYE"},"content":" default: {","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"STELLA-LYE"},"content":" throw new ExceptionDuke(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"STELLA-LYE"},"content":" } catch (ExceptionDuke e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"STELLA-LYE"},"content":" e.getMessage() + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"STELLA-LYE"},"content":" user_input \u003d sc.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"STELLA-LYE"},"content":" saveToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(lineBreak + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"STELLA-LYE"},"content":" \"Bye. Hope to see you again soon!\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"STELLA-LYE"},"content":" lineBreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":140,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"STELLA-LYE"},"content":" public static void saveToFile() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"STELLA-LYE"},"content":" // ##can change user.home to user.dir so that easier to track file in ip directory","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"STELLA-LYE"},"content":" String currPath \u003d System.getProperty(\"user.home\") + \"/data\";","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(currPath);","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"STELLA-LYE"},"content":" File dataDirectory \u003d new File(currPath);","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"STELLA-LYE"},"content":" if (!dataDirectory.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"STELLA-LYE"},"content":" dataDirectory.mkdir();","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"STELLA-LYE"},"content":" File currFile \u003d new File(currPath + \"/duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"STELLA-LYE"},"content":" FileWriter fw \u003d new FileWriter(currFile, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"STELLA-LYE"},"content":" for (Task task: taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"STELLA-LYE"},"content":" fw.write(task.toString() + \u0027\\n\u0027);","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"STELLA-LYE"},"content":" System.out.print(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"STELLA-LYE"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"STELLA-LYE"},"content":" public static ArrayList\u003cTask\u003e loadFromFile() throws FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"STELLA-LYE"},"content":" ArrayList\u003cTask\u003e dataTaskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"STELLA-LYE"},"content":" String path \u003d System.getProperty(\"user.home\");","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"STELLA-LYE"},"content":" //checking if file exists","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"STELLA-LYE"},"content":" File sourceFile \u003d new File(path + \"/data/duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(sourceFile.exists());","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"STELLA-LYE"},"content":" if (!sourceFile.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"STELLA-LYE"},"content":" return dataTaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"STELLA-LYE"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"STELLA-LYE"},"content":" Scanner sc \u003d new Scanner(sourceFile);","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"STELLA-LYE"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"STELLA-LYE"},"content":" String line \u003d sc.nextLine().substring(4);","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"STELLA-LYE"},"content":" String[] typeLine \u003d line.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"STELLA-LYE"},"content":" String[] detailLine \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"STELLA-LYE"},"content":" switch(typeLine[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"STELLA-LYE"},"content":" case \"Todo\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"STELLA-LYE"},"content":" Todo currTask \u003d new Todo(detailLine[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"STELLA-LYE"},"content":" dataTaskList.add(currTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"STELLA-LYE"},"content":" case \"Deadline\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d new Deadline(detailLine[1], detailLine[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"STELLA-LYE"},"content":" dataTaskList.add(currTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"STELLA-LYE"},"content":" case \"Event\": {","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"STELLA-LYE"},"content":" String[] timeArray \u003d line.split(\" \\\\ - \");","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(timeArray[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d new Event(detailLine[1], detailLine[2], timeArray[1] );","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"STELLA-LYE"},"content":" dataTaskList.add(currTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"STELLA-LYE"},"content":" return dataTaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":197,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":198,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"STELLA-LYE"},"content":"// String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":203,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"STELLA-LYE"},"content":"// + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"STELLA-LYE"},"content":"// System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":202,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":" protected String date;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" protected String time;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" public Event(String description, String date, String time) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" this.time \u003d time;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" return \"[\" + super.getStatusIcon() + \"]\" + \" Event | \" + this.description","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" + \" | \" + this.date","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" + \" - \" + this.time;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":17}},{"path":"src/main/java/ExceptionDuke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"public class ExceptionDuke extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" public ExceptionDuke(String message) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":" super(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" return super.getMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":11}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" //mark X on done tasks","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" public void check() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public void uncheck() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":27}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" return \"[\" + super.getStatusIcon() + \"]\" + \" Todo | \" + this.description;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"todo read book","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"deadline return book /by Monday","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"todo join sports club","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"todo borrow book","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"mark 4","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"unmark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"delete 1","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"todo","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"delete4","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":17}}] +[{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" private TextUi ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" this.ui \u003d new TextUi();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" this.tasks \u003d new TaskList(storage.loadFromFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" ui.showGreetMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" String fullCommand \u003d ui.readUserCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" ui.showErrorMessage(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":"// String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"// + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":"// + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":"// System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":52}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" super(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" return super.getMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":13}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.command.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" public static Command parse(String command) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" String[] commandArray \u003d command.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" switch (commandArray[0].toUpperCase()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" case \"TODO\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" if (commandArray.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"You have to tell me what you want to do \u003e.\u003c\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" String taskDetails \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" return new TodoCommand(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" case \"LIST\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" case \"MARK\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" if (commandArray.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"You have to tell me which task you want to mark as done!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" String taskNum \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" return new MarkCommand(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" case \"UNMARK\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" if (commandArray.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"You have to tell me which task you want to mark as undone!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" String taskNum \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" return new UnmarkCommand(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" case \"EVENT\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" String taskDetails \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" return new EventCommand(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" case \"DEADLINE\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" String taskDetails \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" return new DeadlineCommand(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" case \"DELETE\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" String taskNum \u003d commandArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" return new DeleteCommand(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" case \"BYE\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" default: {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"It\u0027s an INVALID COMMAND, follow the instruction and try again :-)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":53}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" private final String STORAGE_PATH;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" this.STORAGE_PATH \u003d \"/\" + filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" public void saveToFile(ArrayList\u003cTask\u003e tasksList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" String directory \u003d System.getProperty(\"user.dir\") + \"/data\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" File file \u003d new File(directory);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" file.mkdir();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" File saveFile \u003d new File(System.getProperty(\"user.dir\") + STORAGE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" FileWriter fw \u003d new FileWriter(saveFile, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" for (Task task : tasksList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" fw.write(task.toString() + \u0027\\n\u0027);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" public ArrayList\u003cTask\u003e loadFromFile() throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" ArrayList\u003cTask\u003e tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(STORAGE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" String path \u003d System.getProperty(\"user.dir\") + STORAGE_PATH;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" File sourceFile \u003d new File(path);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" if (!sourceFile.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" return tasksList;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" return readFile(sourceFile);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" public ArrayList\u003cTask\u003e readFile(File file) throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" ArrayList\u003cTask\u003e tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" Scanner sc \u003dnew Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" String nextLine \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" String[] actionArray \u003d nextLine.split(\"]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" String[] actionNextArray \u003d actionArray[1].split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" String action \u003d actionNextArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" switch(action) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" case \"Todo\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" String[] taskArray \u003d nextLine.split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" String task \u003d taskArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" Task savedTask \u003d new Todo(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" if (nextLine.substring(1, 2).equals(\"X\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" savedTask.check();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.add(savedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":" case \"Deadline\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" String[] frontTaskArray \u003d nextLine.split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" String[] backTaskArray \u003d frontTaskArray[1].split(\"\\\\[\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" String task \u003d backTaskArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" String[] frontByArray \u003d nextLine.split(\"\\\\[\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" String[] backByArray \u003d frontByArray[1].split(\"]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" String by \u003d backByArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" LocalDate storageBy \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" String outputBy \u003d storageBy.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" Task savedTask \u003d new Deadline(task, outputBy);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" if (nextLine.substring(1, 2).equals(\"X\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"STELLA-LYE"},"content":" savedTask.check();","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.add(savedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" case \"Event\": {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":" String[] frontTaskArray \u003d nextLine.split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":" String[] backTaskArray \u003d frontTaskArray[1].split(\"\\\\[\");","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"STELLA-LYE"},"content":" String task \u003d backTaskArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"STELLA-LYE"},"content":" String[] frontFromArray \u003d nextLine.substring(3).split(\"\\\\[\");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"STELLA-LYE"},"content":" String[] backFromArray \u003d frontFromArray[1].split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"STELLA-LYE"},"content":" String from \u003d backFromArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"STELLA-LYE"},"content":" String[] frontToArray \u003d nextLine.split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"STELLA-LYE"},"content":" String[] backToArray \u003d frontToArray[1].split(\"]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"STELLA-LYE"},"content":" String to \u003d backToArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"STELLA-LYE"},"content":" LocalDate storageFrom \u003d LocalDate.parse(from, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"STELLA-LYE"},"content":" String outputFrom \u003d storageFrom.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"STELLA-LYE"},"content":" LocalDate storageTo \u003d LocalDate.parse(to, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"STELLA-LYE"},"content":" String outputTo \u003d storageTo.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"STELLA-LYE"},"content":" Task savedTask \u003d new Event(task, outputFrom, outputTo);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"STELLA-LYE"},"content":" if (nextLine.substring(1, 2).equals(\"X\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"STELLA-LYE"},"content":" savedTask.check();","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.add(savedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"STELLA-LYE"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"STELLA-LYE"},"content":" return tasksList;","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":114}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" public ArrayList\u003cTask\u003e tasksList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public TaskList(ArrayList\u003cTask\u003e tasksList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList \u003d tasksList;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" return this.tasksList;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" public void addToTaskList(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" public void deleteFromTaskList(int taskNum) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList.remove(taskNum - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" public void list() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" for (Task task: this.tasksList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" public void mark(int num) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d this.tasksList.get(num - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" currTask.check();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList.set(num - 1, currTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" public void unMark(int num) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" Task currTask \u003d this.tasksList.get(num - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" currTask.uncheck();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" this.tasksList.set(num - 1, currTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" public Task get(int num) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" return this.tasksList.get(num - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":49}},{"path":"src/main/java/duke/TextUi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"public class TextUi {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" private final static String BORDER \u003d \"***************************\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" private final static String DASH \u003d \"___________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" private final static String LOGO \u003d \"Current no available Logo\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private final static String USER_INSTRUCTION \u003d \"\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" \"TODO : Adds a task to task list [ Format : TODO_\u003cTASK_DESCRIPTION\u003e ]\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" \"LIST : List ALL tasks from task list [ Format : LIST ]\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" \"MARK/UNMARK : Mark/Unmark a task from the task list [ Format : MARK/UNMARK_\u003cTask Number\u003e ]\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" \"EVENT : Adds an event from and to with specific date and time\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" \" [ Format : EVENT_\u003cEVENT_DESCRIPTION\u003e_/\u003cDATE_TIME_FROM\u003e_/\u003cDATE_TIME_TO\u003e ] ( DATE_TIME \u003d YYYY-MM-DD HHMM )\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" \"DEADLINE : Adds a task with a deadline at specific date and time\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" \" [ Format : DEADLINE_\u003cTASK_DESCRIPTION\u003e_/\u003cDATE_TIME_BY\u003e ( DATE_TIME \u003d YYYY-MM-DD HHMM )\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" \"DELETE : Remove task from task list [ Format : DELETE_\u003cTASK_NUMBER\u003e ]\" +\u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" \"BYE : Exits the app\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" DASH + \u0027\\n\u0027 ;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" private final static String ADD_TASK_MESSAGE \u003d \"Nice! I\u0027ve added this task to your task list :\" ;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" private final static String MARK_TASK_MESSAGE \u003d \"Well Done!!! I\u0027ve marked this task as done :\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" private final static String UNMARK_TASK_MESSAGE \u003d \"Alright. I\u0027ve marked this task as undone :\";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" private final static String DELETE_TASK_MESSAGE \u003d \"NOTED. I\u0027ve removed this task from your task list :\";","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" public void showGreetMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println( BORDER + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" LOGO + \u0027\\n\u0027 + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" \"------WELCOME !!!------\" + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" \"I am Panda, your personal task manager. How may I assist you today?\" + \u0027\\n\u0027 + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" USER_INSTRUCTION);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" public String readUserCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"Enter Commands :\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" String userCommand \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" return userCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" public void showTotalCountMessage(TaskList taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"Now you have \" + taskList.getList().size() + \" tasks in your task list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" public void showAddTaskMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" ADD_TASK_MESSAGE + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" task);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" public void showMarkTaskMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" MARK_TASK_MESSAGE + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" task + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" public void showUnmarkTaskMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" UNMARK_TASK_MESSAGE + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" task + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" public void showDeleteTaskMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" DELETE_TASK_MESSAGE + \u0027\\n\u0027 +","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" task);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" public void showTaskList(TaskList taskslist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":" taskslist.list();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"There is no existing file in your computer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" public void showErrorMessage(String m) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(m);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" public void showExitMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"It\u0027s great working with you! See you again soon. BYE!!!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(BORDER);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":91}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" ui.showExitMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":18}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" public abstract void execute(TaskList tasks, TextUi ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":10}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" private final String DETAILS;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public DeadlineCommand(String detail) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" this.DETAILS \u003d detail;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" String[] detailArray \u003d DETAILS.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(DETAILS);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(Arrays.toString(detailArray));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" String description \u003d detailArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" String by \u003d detailArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" Task deadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.addToTaskList(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" ui.showAddTaskMessage(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":34}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" private final int TASK_NUM;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" public DeleteCommand(String num) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" this.TASK_NUM \u003d Integer.parseInt(num);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" Task deletedTask \u003d tasksList.get(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.deleteFromTaskList(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" ui.showDeleteTaskMessage(deletedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":27}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private final String DETAILS;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public EventCommand(String details) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" this.DETAILS \u003d details;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" String[] detailArray \u003d DETAILS.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" String description \u003d detailArray[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" String from \u003d detailArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" String to \u003d detailArray[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(from);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" Task event \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.addToTaskList(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" ui.showAddTaskMessage(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":33}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" if (tasksList.getList().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" System.out.println(\"Your task list empty, add something today!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" ui.showTaskList(tasksList);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":22}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"public class MarkCommand extends Command{","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private final int TASK_NUM;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public MarkCommand(String taskNum) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" this.TASK_NUM \u003d Integer.parseInt(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" if (TASK_NUM \u003c\u003d 0 | TASK_NUM \u003e tasksList.getList().size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"Invalid task number -.-!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.mark(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" Task markedTask \u003d tasksList.get(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" ui.showMarkTaskMessage(markedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":32}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" private final String DETAIL;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public TodoCommand(String taskDetails) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" this.DETAIL \u003d taskDetails;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" Task todo \u003d new Todo(DETAIL);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.addToTaskList(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" ui.showAddTaskMessage(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" ui.showTotalCountMessage(tasksList);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":29}},{"path":"src/main/java/duke/command/UnmarkedCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import duke.TextUi;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private final int TASK_NUM;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public UnmarkCommand(String taskNum) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" this.TASK_NUM \u003d Integer.parseInt(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void execute(TaskList tasksList, TextUi ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" if (TASK_NUM \u003c\u003d 0 | TASK_NUM \u003e tasksList.getList().size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" throw new DukeException(\"Invalid task number -.-!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" tasksList.unMark(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" Task unMarkedTask \u003d tasksList.get(TASK_NUM);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" ui.showUnmarkTaskMessage(unMarkedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" storage.saveToFile(tasksList.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"STELLA-LYE":32}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" //private final static Pattern OUTPUT_DATE_PATTERN \u003d Pattern.compile(\"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\"); //In yyyy-MM-dd","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" //private final static Pattern STORAGE_DATE_PATTERN \u003d Pattern.compile(\"^\\\\w{3} \\\\d{2} \\\\d{4}$\"); //In MMM dd yyyy","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" private final static String OUTPUT_DATE_FORMAT \u003d \"yyyy-MM-dd\" ;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" private final static String STORAGE_DATE_FORMAT \u003d \"MMM dd yyyy\" ;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" protected String date;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" public Deadline(String description, String endDate) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" this.date \u003d LocalDate.parse(endDate, DateTimeFormatter.ofPattern(OUTPUT_DATE_FORMAT)).format(DateTimeFormatter.ofPattern(STORAGE_DATE_FORMAT));","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" return super.toString() + \" Deadline : \" + this.description + \" [ \" + this.date + \" ]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":23}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" private final static String OUTPUT_DATE_FORMAT \u003d \"yyyy-MM-dd\" ;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" private final static String STORAGE_DATE_FORMAT \u003d \"MMM dd yyyy\" ;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" protected String dateStart;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" protected String dateEnd;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public Event(String description, String dateStart, String dateEnd) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" this.dateStart \u003d LocalDate.parse(dateStart, DateTimeFormatter.ofPattern(OUTPUT_DATE_FORMAT)).format(DateTimeFormatter.ofPattern(STORAGE_DATE_FORMAT));","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" this.dateEnd \u003d LocalDate.parse(dateEnd, DateTimeFormatter.ofPattern(OUTPUT_DATE_FORMAT)).format(DateTimeFormatter.ofPattern(STORAGE_DATE_FORMAT));","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" return super.toString() + \" Event : \" + this.description + \" [ \" + this.dateStart +","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" \" - \" + this.dateEnd + \" ]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":23}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" //mark X on done tasks","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void check() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" public void uncheck() {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" return \"[\" + this.getStatusIcon() + \"]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":29}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" return super.toString() + \" Todo : \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"todo read book","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"deadline return book /by Monday","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"todo join sports club","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"todo borrow book","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"mark 4","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"unmark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"delete 1","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"todo","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"delete4","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"STELLA-LYE":17}}] diff --git a/STELLA-LYE_ip_master/commits.json b/STELLA-LYE_ip_master/commits.json index 23d25742..2b67b556 100644 --- a/STELLA-LYE_ip_master/commits.json +++ b/STELLA-LYE_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"STELLA-LYE":[{"date":"2024-01-26","commitResults":[{"hash":"72db2d9faad51054c396ff1deec920e81d66e948","isMergeCommit":false,"messageTitle":"Added Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":20,"deletions":6}}},{"hash":"aa4bf8eac5ecc85ef10f7870d8e7b75cddf50fc8","isMergeCommit":false,"messageTitle":"Added Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"24330f3a6648a2c4f6ccd8cca9e6bf6ed3067fc1","isMergeCommit":false,"messageTitle":"Added Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":0}}},{"hash":"d44c2c68c5e0b1abc6f6fabb44791159e65e5430","isMergeCommit":false,"messageTitle":"Added Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"ac5bcaab11a0a3c84900de9f9af1446e4362c583","isMergeCommit":false,"messageTitle":"Added Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":6}}},{"hash":"45945163cd960b0b7eb84573675f74f1afc4f10f","isMergeCommit":false,"messageTitle":"Added A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"a59b3af0f74baa253d4b2f31d399c02613997896","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"b33cadcf60204e26eac11e5c03c63b15b81ab7eb","isMergeCommit":false,"messageTitle":"Added Level-6","messageBody":"","tags":["Level-8","Level-7","Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"c489adacf81eaa7eb13ba7b296f1d0703ad2965f","isMergeCommit":false,"messageTitle":"Added Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":5}}},{"hash":"75a8e78a538e80becbde326dd9e7c9aa3608a8e0","isMergeCommit":false,"messageTitle":"Updated Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"641206eafdc06a909d9fa15d9d532ccc94732ecc","isMergeCommit":false,"messageTitle":"Updated2 Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"STELLA-LYE":{"java":282,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":17}},"authorContributionVariance":{"STELLA-LYE":5831.7847},"authorDisplayNameMap":{"STELLA-LYE":"CS2103T-W10-4 STEL..I YU"}} +{"authorDailyContributionsMap":{"STELLA-LYE":[{"date":"2024-01-26","commitResults":[{"hash":"72db2d9faad51054c396ff1deec920e81d66e948","isMergeCommit":false,"messageTitle":"Added Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":20,"deletions":6}}},{"hash":"aa4bf8eac5ecc85ef10f7870d8e7b75cddf50fc8","isMergeCommit":false,"messageTitle":"Added Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"24330f3a6648a2c4f6ccd8cca9e6bf6ed3067fc1","isMergeCommit":false,"messageTitle":"Added Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":0}}},{"hash":"d44c2c68c5e0b1abc6f6fabb44791159e65e5430","isMergeCommit":false,"messageTitle":"Added Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"ac5bcaab11a0a3c84900de9f9af1446e4362c583","isMergeCommit":false,"messageTitle":"Added Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":6}}},{"hash":"45945163cd960b0b7eb84573675f74f1afc4f10f","isMergeCommit":false,"messageTitle":"Added A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"a59b3af0f74baa253d4b2f31d399c02613997896","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"b33cadcf60204e26eac11e5c03c63b15b81ab7eb","isMergeCommit":false,"messageTitle":"Added Level-6","messageBody":"","tags":["Level-8","Level-7","Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"c489adacf81eaa7eb13ba7b296f1d0703ad2965f","isMergeCommit":false,"messageTitle":"Added Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":5}}},{"hash":"75a8e78a538e80becbde326dd9e7c9aa3608a8e0","isMergeCommit":false,"messageTitle":"Updated Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"641206eafdc06a909d9fa15d9d532ccc94732ecc","isMergeCommit":false,"messageTitle":"Updated2 Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"6b437ca48fc712d255232726de47dd31df1e3af2","isMergeCommit":false,"messageTitle":"Added Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":15}}},{"hash":"1fd4c32587db3cb745ce1bd6986fd1e787e38531","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Level-8","messageBody":"Merge branch-Level-8 with master\n","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"97304eeaf7faaa65fee4f61bf4288e4b39599cf2","isMergeCommit":false,"messageTitle":"Added A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":478,"deletions":15}}},{"hash":"17cdc2da195e31a6c8864d48b45a45b931b9615e","isMergeCommit":false,"messageTitle":"Added A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":171,"deletions":233}}},{"hash":"5d28b3eb149c7749776d51a246ae7901a661794f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"A-Packages\n","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"6c8d0ae094a3412af2e0dff5468a8a0ed8598127","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"A-Gradle\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"STELLA-LYE":{"java":695,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":17}},"authorContributionVariance":{"STELLA-LYE":63066.5},"authorDisplayNameMap":{"STELLA-LYE":"CS2103T-W10-4 STEL..I YU"}} diff --git a/SherwynNg_ip_master/authorship.json b/SherwynNg_ip_master/authorship.json index e988c27b..fd4a9c06 100644 --- a/SherwynNg_ip_master/authorship.json +++ b/SherwynNg_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" BufferedReader br \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Hello! I\u0027m AcademicWeapon\");","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" String action;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":" ArrayList\u003cTask\u003e lst \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" do {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" String input \u003d br.readLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" String[] inputParts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":" action \u003d inputParts[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" String parameters;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" if (inputParts.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" parameters \u003d inputParts[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" parameters \u003d \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" DukeExceptions.validateInput(action, parameters);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":" } catch (DukeExceptions e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"SherwynNg"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"SherwynNg"},"content":" switch (action) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"SherwynNg"},"content":" case \"list\":","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"SherwynNg"},"content":" for (int i \u003d 0; i \u003c lst.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"SherwynNg"},"content":" Task currentTask \u003d lst.get(i);","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"SherwynNg"},"content":" System.out.println((i + 1) + \".\" + currentTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"SherwynNg"},"content":" case \"mark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"SherwynNg"},"content":" int indexToMark \u003d Integer.parseInt(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"SherwynNg"},"content":" Task markTask \u003d lst.get(indexToMark - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"SherwynNg"},"content":" markTask.markAsDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"SherwynNg"},"content":" System.out.println(markTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"SherwynNg"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"SherwynNg"},"content":" int indexToUnmark \u003d Integer.parseInt(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"SherwynNg"},"content":" Task unmarkTask \u003d lst.get(indexToUnmark - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"SherwynNg"},"content":" unmarkTask.markAsNotDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"SherwynNg"},"content":" System.out.println(unmarkTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"SherwynNg"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"SherwynNg"},"content":" Task addToDoTask \u003d new Todo(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"SherwynNg"},"content":" lst.add(addToDoTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addToDoTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"SherwynNg"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"SherwynNg"},"content":" String[] splitAgain \u003d inputParts[1].split(\"/by\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"SherwynNg"},"content":" Task addDeadlineTask \u003d new Deadline(splitAgain[0], splitAgain[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"SherwynNg"},"content":" lst.add(addDeadlineTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addDeadlineTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"SherwynNg"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"SherwynNg"},"content":" String[] splitOnce \u003d inputParts[1].split(\"/from \");","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"SherwynNg"},"content":" String message \u003d splitOnce[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"SherwynNg"},"content":" String[] splitTwice \u003d splitOnce[1].split(\"/to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"SherwynNg"},"content":" Task addEventTask \u003d new Event(message, splitTwice[0], splitTwice[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"SherwynNg"},"content":" lst.add(addEventTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addEventTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"SherwynNg"},"content":" case \"bye\":","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"SherwynNg"},"content":" case \"delete\":","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"SherwynNg"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"SherwynNg"},"content":" DukeExceptions.checkListNotEmpty(lst);","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"SherwynNg"},"content":" } catch (DukeExceptions e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"SherwynNg"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"SherwynNg"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"SherwynNg"},"content":" int deleteIndex \u003d Integer.parseInt(inputParts[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"SherwynNg"},"content":" Task toBeDeleted \u003d lst.get(deleteIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"SherwynNg"},"content":" lst.remove(deleteIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"SherwynNg"},"content":" System.out.println(toBeDeleted.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"SherwynNg"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"added: \" + input);","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"SherwynNg"},"content":" Task toAddTask \u003d new Task(input);","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"SherwynNg"},"content":" lst.add(toAddTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":122,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":123,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"SherwynNg"},"content":" } while(!action.equals(\"bye\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"SherwynNg"},"content":" br.close();","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"SherwynNg":125,"-":3}},{"path":"src/main/java/DukeExceptions.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"public class DukeExceptions extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" public DukeExceptions(String msg) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" super(msg);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" public static void checkListNotEmpty (ArrayList\u003cTask\u003e lst) throws DukeExceptions {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" if (lst.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The list is empty. There is nothing to delete.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" public static void validateInput(String action, String parameters) throws DukeExceptions{","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" switch(action) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" String[] deadlineInputs \u003d parameters.split(\"/by \");","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":" String dueDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" if (deadlineInputs.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The due date of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"SherwynNg"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"SherwynNg"},"content":" String[] eventInputs \u003d parameters.split(\"/from \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"SherwynNg"},"content":" if (eventInputs.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"SherwynNg"},"content":" String[] splitFromAndTo \u003d eventInputs[1].split(\"/to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"SherwynNg"},"content":" if (splitFromAndTo.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! Please include when does the event start and ends.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"SherwynNg"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The period of an event cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"SherwynNg"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"Please include the index to mark.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"SherwynNg"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"Please include the index to unmark.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"SherwynNg"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"SherwynNg"},"content":" if (!parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have included extra information, which I cannot read\");","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"SherwynNg"},"content":" case \"bye\":","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"SherwynNg"},"content":" if (!parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have included extra information, which I cannot read\");","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"SherwynNg"},"content":" case \"delete\":","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have to include which number to delete.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"SherwynNg"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":76}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"SherwynNg":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":"todo","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"deadline","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":"deadline return book","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"event","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":"event return book","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":"event return book /from tmr","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":"blah","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":"delete","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":19}}] +[{"path":"src/main/java/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public enum Action {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":" LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, BYE, DELETE","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SherwynNg":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" BufferedReader br \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Hello! I\u0027m AcademicWeapon\");","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" //String action;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":" Action action \u003d Action.TODO;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" ArrayList\u003cTask\u003e lst \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" do {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" String input \u003d br.readLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":" String[] inputParts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" action \u003d Action.valueOf(inputParts[0].toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Invalid action. Please enter a valid command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"List, mark, unmark, todo, deadline, event, bye, delete.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" String parameters;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":" if (inputParts.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"SherwynNg"},"content":" parameters \u003d inputParts[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"SherwynNg"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"SherwynNg"},"content":" parameters \u003d \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"SherwynNg"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"SherwynNg"},"content":" DukeExceptions.validateInput(action.toString(), parameters);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SherwynNg"},"content":" } catch (DukeExceptions e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"SherwynNg"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"SherwynNg"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"SherwynNg"},"content":" switch (action) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"SherwynNg"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"SherwynNg"},"content":" for (int i \u003d 0; i \u003c lst.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"SherwynNg"},"content":" Task currentTask \u003d lst.get(i);","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"SherwynNg"},"content":" System.out.println((i + 1) + \".\" + currentTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"SherwynNg"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"SherwynNg"},"content":" int indexToMark \u003d Integer.parseInt(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"SherwynNg"},"content":" Task markTask \u003d lst.get(indexToMark - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"SherwynNg"},"content":" markTask.markAsDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"SherwynNg"},"content":" System.out.println(markTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"SherwynNg"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"SherwynNg"},"content":" int indexToUnmark \u003d Integer.parseInt(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"SherwynNg"},"content":" Task unmarkTask \u003d lst.get(indexToUnmark - 1);","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"SherwynNg"},"content":" unmarkTask.markAsNotDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"SherwynNg"},"content":" System.out.println(unmarkTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"SherwynNg"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"SherwynNg"},"content":" Task addToDoTask \u003d new Todo(inputParts[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"SherwynNg"},"content":" lst.add(addToDoTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addToDoTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"SherwynNg"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"SherwynNg"},"content":" String[] splitAgain \u003d inputParts[1].split(\"/by\");","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"SherwynNg"},"content":" Task addDeadlineTask \u003d new Deadline(splitAgain[0], splitAgain[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"SherwynNg"},"content":" lst.add(addDeadlineTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addDeadlineTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"SherwynNg"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"SherwynNg"},"content":" String[] splitOnce \u003d inputParts[1].split(\"/from \");","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"SherwynNg"},"content":" String message \u003d splitOnce[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"SherwynNg"},"content":" String[] splitTwice \u003d splitOnce[1].split(\"/to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"SherwynNg"},"content":" Task addEventTask \u003d new Event(message, splitTwice[0], splitTwice[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"SherwynNg"},"content":" lst.add(addEventTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"SherwynNg"},"content":" System.out.println(addEventTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"SherwynNg"},"content":" case BYE:","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"SherwynNg"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"SherwynNg"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"SherwynNg"},"content":" DukeExceptions.checkListNotEmpty(lst);","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"SherwynNg"},"content":" } catch (DukeExceptions e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"SherwynNg"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"SherwynNg"},"content":" continue;","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"SherwynNg"},"content":" int deleteIndex \u003d Integer.parseInt(inputParts[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"SherwynNg"},"content":" Task toBeDeleted \u003d lst.get(deleteIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"SherwynNg"},"content":" lst.remove(deleteIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"SherwynNg"},"content":" System.out.println(toBeDeleted.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"Now you have \" + lst.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"SherwynNg"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":129,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"added: \" + input);","lastModifiedDate":"2024-01-22"},{"lineNumber":130,"author":{"gitId":"SherwynNg"},"content":" Task toAddTask \u003d new Task(input);","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"SherwynNg"},"content":" lst.add(toAddTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"SherwynNg"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":133,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"SherwynNg"},"content":" } while(action !\u003d Action.BYE);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"SherwynNg"},"content":" br.close();","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"SherwynNg":135,"-":3}},{"path":"src/main/java/DukeExceptions.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"public class DukeExceptions extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" public DukeExceptions(String msg) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" super(msg);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" public static void checkListNotEmpty (ArrayList\u003cTask\u003e lst) throws DukeExceptions {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" if (lst.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The list is empty. There is nothing to delete.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" public static void validateInput(String action, String parameters) throws DukeExceptions{","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" switch(action) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" case \"TODO\":","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":" case \"DEADLINE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" String[] deadlineInputs \u003d parameters.split(\"/by \");","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":" String dueDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" if (deadlineInputs.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The due date of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"SherwynNg"},"content":" case \"EVENT\":","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"SherwynNg"},"content":" String[] eventInputs \u003d parameters.split(\"/from \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"SherwynNg"},"content":" if (eventInputs.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"SherwynNg"},"content":" String[] splitFromAndTo \u003d eventInputs[1].split(\"/to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"SherwynNg"},"content":" if (splitFromAndTo.length !\u003d 2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! Please include when does the event start and ends.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"SherwynNg"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! The period of an event cannot be empty.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"SherwynNg"},"content":" case \"MARK\":","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"Please include the index to mark.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"SherwynNg"},"content":" case \"UNMARK\":","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"Please include the index to unmark.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"SherwynNg"},"content":" case \"LIST\":","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"SherwynNg"},"content":" if (!parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have included extra information, which I cannot read\");","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"SherwynNg"},"content":" case \"BYE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"SherwynNg"},"content":" if (!parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have included extra information, which I cannot read\");","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"SherwynNg"},"content":" case \"DELETE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"SherwynNg"},"content":" if (parameters.equals(\" \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! You have to include which number to delete.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"SherwynNg"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"SherwynNg"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"SherwynNg"},"content":" throw new DukeExceptions(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":76}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"SherwynNg"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"SherwynNg"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"SherwynNg"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"SherwynNg":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SherwynNg"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"SherwynNg"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"SherwynNg"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"SherwynNg"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"SherwynNg"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"SherwynNg"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"SherwynNg"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"SherwynNg"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"SherwynNg"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"SherwynNg"},"content":"todo","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"SherwynNg"},"content":"deadline","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"SherwynNg"},"content":"deadline return book","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"SherwynNg"},"content":"event","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"SherwynNg"},"content":"event return book","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"SherwynNg"},"content":"event return book /from tmr","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"SherwynNg"},"content":"blah","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"SherwynNg"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"SherwynNg"},"content":"delete","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"SherwynNg"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"SherwynNg":19}}] diff --git a/SherwynNg_ip_master/commits.json b/SherwynNg_ip_master/commits.json index a433b717..f31d1bfe 100644 --- a/SherwynNg_ip_master/commits.json +++ b/SherwynNg_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"SherwynNg":[{"date":"2024-01-22","commitResults":[{"hash":"76cf2ef78e6cf8207da529edc443c38e2d150bf9","isMergeCommit":false,"messageTitle":"added \"Level 0. Rename, Greet, Exit\"","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"655390bae88052cb0f7ccbeea078a47a761da2af","isMergeCommit":false,"messageTitle":"added \"level-1, echo\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":7}}},{"hash":"1bef8c98904f8e8c51579b8eb65a34b1f660df58","isMergeCommit":false,"messageTitle":"removed printwriter","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"ef169c601893c81201a17db2db615a9647504d5d","isMergeCommit":false,"messageTitle":"added \"Level 2. Add, list\"","messageBody":"","tags":["Level-2.-Add,-list"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"89f774a0376a75a19fb5c4a8d78ee5822144f01e","isMergeCommit":false,"messageTitle":"added Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"6f442e28c4be1d422995bb0fbf5cb2cc26326471","isMergeCommit":false,"messageTitle":"added \"Level 3. Mark as Done\"","messageBody":"","tags":["Level-3.-Mark-as-Done"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":7}}}]},{"date":"2024-01-23","commitResults":[{"hash":"cfd27ed606d84d72dcf740d2e9f08d700c40e07e","isMergeCommit":false,"messageTitle":"added \"Deadline class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"833f611320c3253372408565be3cd7f2788dd3af","isMergeCommit":false,"messageTitle":"added \"Event class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"7d51fed9124b3d8228fb38725cdaa5887cdfc1c4","isMergeCommit":false,"messageTitle":"added \"Todo class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"db27ae4645611269218fb7de7d9ebc966658b03f","isMergeCommit":false,"messageTitle":"added \"Level 4. ToDos, Events, Deadlines\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"d84cd332408df0fa50e958889477925732129751","isMergeCommit":false,"messageTitle":"Revert \"added \"Level 4. ToDos, Events, Deadlines\"\"","messageBody":"This reverts commit db27ae4645611269218fb7de7d9ebc966658b03f.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"0b0c6bce04c56dbe9a02612f55d01b7540821023","isMergeCommit":false,"messageTitle":"added \"toString method\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"9954a01bfc53e1de48d7205e94d4b0acb7a6bd37","isMergeCommit":false,"messageTitle":"added \"Level 4. ToDos, Events, Deadlines\"","messageBody":"","tags":["Level-4.-Todos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":6}}},{"hash":"881d3ecb0d46c76fa37c4f43f7219f5ec0272a5d","isMergeCommit":false,"messageTitle":"Changed a typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"fccb842ec18817e48fd908550f0ba3f400cd26fd","isMergeCommit":false,"messageTitle":"Added \"Input and Expected file for testing\"","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"d02df7b440d182e10ce87e75c492e2ea558f3671","isMergeCommit":false,"messageTitle":"Added \"DukeExceptions class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":0}}},{"hash":"23b406681252209904b742e09e1b1f2c24530d81","isMergeCommit":false,"messageTitle":"Included different test cases for error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"07dfeb09354783a7dec79f6c7bbd8f5b6b38f4f9","isMergeCommit":false,"messageTitle":"Added \"Level 5. Handle Errors\"","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":15}}},{"hash":"53ac49f21a2dc31e9daa7e98df06a7807df2e30e","isMergeCommit":false,"messageTitle":"added exceptions to check for empty list and delete action","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"c43b645603a366b9ebf9e0baee86c7c7e767a11a","isMergeCommit":false,"messageTitle":"updated input and expected files to include new test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"49ed0b62c53bf4c5e24e6472a265fb7ca5d4f234","isMergeCommit":false,"messageTitle":"added \"Level 6. Delete\"","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"SherwynNg":{"java":270,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":19}},"authorContributionVariance":{"SherwynNg":11049.039},"authorDisplayNameMap":{"SherwynNg":"CS2103T-T13-2 SHER.. XIN"}} +{"authorDailyContributionsMap":{"SherwynNg":[{"date":"2024-01-22","commitResults":[{"hash":"76cf2ef78e6cf8207da529edc443c38e2d150bf9","isMergeCommit":false,"messageTitle":"added \"Level 0. Rename, Greet, Exit\"","messageBody":"","tags":["Level-0.-Rename,-Greet,-Exit"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"655390bae88052cb0f7ccbeea078a47a761da2af","isMergeCommit":false,"messageTitle":"added \"level-1, echo\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":7}}},{"hash":"1bef8c98904f8e8c51579b8eb65a34b1f660df58","isMergeCommit":false,"messageTitle":"removed printwriter","messageBody":"","tags":["Level-1.-Echo"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"ef169c601893c81201a17db2db615a9647504d5d","isMergeCommit":false,"messageTitle":"added \"Level 2. Add, list\"","messageBody":"","tags":["Level-2.-Add,-list"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"89f774a0376a75a19fb5c4a8d78ee5822144f01e","isMergeCommit":false,"messageTitle":"added Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"6f442e28c4be1d422995bb0fbf5cb2cc26326471","isMergeCommit":false,"messageTitle":"added \"Level 3. Mark as Done\"","messageBody":"","tags":["Level-3.-Mark-as-Done"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":7}}}]},{"date":"2024-01-23","commitResults":[{"hash":"cfd27ed606d84d72dcf740d2e9f08d700c40e07e","isMergeCommit":false,"messageTitle":"added \"Deadline class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"833f611320c3253372408565be3cd7f2788dd3af","isMergeCommit":false,"messageTitle":"added \"Event class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"7d51fed9124b3d8228fb38725cdaa5887cdfc1c4","isMergeCommit":false,"messageTitle":"added \"Todo class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"db27ae4645611269218fb7de7d9ebc966658b03f","isMergeCommit":false,"messageTitle":"added \"Level 4. ToDos, Events, Deadlines\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"d84cd332408df0fa50e958889477925732129751","isMergeCommit":false,"messageTitle":"Revert \"added \"Level 4. ToDos, Events, Deadlines\"\"","messageBody":"This reverts commit db27ae4645611269218fb7de7d9ebc966658b03f.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"0b0c6bce04c56dbe9a02612f55d01b7540821023","isMergeCommit":false,"messageTitle":"added \"toString method\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"9954a01bfc53e1de48d7205e94d4b0acb7a6bd37","isMergeCommit":false,"messageTitle":"added \"Level 4. ToDos, Events, Deadlines\"","messageBody":"","tags":["Level-4.-Todos,-Events,-Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":6}}},{"hash":"881d3ecb0d46c76fa37c4f43f7219f5ec0272a5d","isMergeCommit":false,"messageTitle":"Changed a typo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"fccb842ec18817e48fd908550f0ba3f400cd26fd","isMergeCommit":false,"messageTitle":"Added \"Input and Expected file for testing\"","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"d02df7b440d182e10ce87e75c492e2ea558f3671","isMergeCommit":false,"messageTitle":"Added \"DukeExceptions class\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":0}}},{"hash":"23b406681252209904b742e09e1b1f2c24530d81","isMergeCommit":false,"messageTitle":"Included different test cases for error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"07dfeb09354783a7dec79f6c7bbd8f5b6b38f4f9","isMergeCommit":false,"messageTitle":"Added \"Level 5. Handle Errors\"","messageBody":"","tags":["Level-5.-Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":15}}},{"hash":"53ac49f21a2dc31e9daa7e98df06a7807df2e30e","isMergeCommit":false,"messageTitle":"added exceptions to check for empty list and delete action","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"c43b645603a366b9ebf9e0baee86c7c7e767a11a","isMergeCommit":false,"messageTitle":"updated input and expected files to include new test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"49ed0b62c53bf4c5e24e6472a265fb7ca5d4f234","isMergeCommit":false,"messageTitle":"added \"Level 6. Delete\"","messageBody":"","tags":["Level-6.-Delete"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"60dac485667b0d79db687584ae0174408650de39","isMergeCommit":false,"messageTitle":"add enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":20}}}]}]},"authorFileTypeContributionMap":{"SherwynNg":{"java":283,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":19}},"authorContributionVariance":{"SherwynNg":5996.354},"authorDisplayNameMap":{"SherwynNg":"CS2103T-T13-2 SHER.. XIN"}} diff --git a/SimHanKiong_ip_master/authorship.json b/SimHanKiong_ip_master/authorship.json index a17dc8a8..8f91629c 100644 --- a/SimHanKiong_ip_master/authorship.json +++ b/SimHanKiong_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":"SimHanKiong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-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":"-"},"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":"SimHanKiong"},"content":" mainClass.set(\"johnny.Johnny\")","lastModifiedDate":"2024-01-30"},{"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":"SimHanKiong"},"content":" archiveBaseName \u003d \"johnny\"","lastModifiedDate":"2024-01-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":{"SimHanKiong":3,"-":40}},{"path":"src/main/java/johnny/Johnny.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class Johnny {","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public Johnny(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" new Johnny(\"src/main/data/tasks.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"SimHanKiong":48}},{"path":"src/main/java/johnny/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" public AddDeadlineCommand(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Deadline(name, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":34}},{"path":"src/main/java/johnny/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public AddEventCommand(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Event(name, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":36}},{"path":"src/main/java/johnny/commands/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public AddTodoCommand(String name) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new ToDo(name);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"SimHanKiong":13}},{"path":"src/main/java/johnny/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.delete(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showDelete(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" ui.showEnd();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" ui.showList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.mark(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showMark(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.unmark(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showUnmark(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/exceptions/JohnnyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.exceptions;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"public class JohnnyException extends Exception {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":" public JohnnyException(String errorMessage) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":9}},{"path":"src/main/java/johnny/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddDeadlineCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddEventCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddTodoCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.DeleteCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.ExitCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.ListCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.MarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.UnmarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" public static Command parse(String fullCommand) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e parsedCommand \u003d Arrays.asList(fullCommand.split(\" \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Enter a command bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" String command \u003d parsedCommand.get(0);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" switch (command) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task do you want to mark bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only mark 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" int index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task do you want to unmark bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only unmark 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task am I supposed to delete bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only delete 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your todo bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" String name \u003d String.join(\" \", parsedCommand.subList(1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" return new AddTodoCommand(name);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your deadline bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" int i \u003d parsedCommand.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" if (i \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When is your deadline by bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":" name \u003d String.join(\" \", parsedCommand.subList(1, i));","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" String by \u003d String.join(\" \", parsedCommand.subList(i + 1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" return new AddDeadlineCommand(name, byDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your deadline bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":" i \u003d parsedCommand.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"SimHanKiong"},"content":" if (i \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When does your event start from bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"SimHanKiong"},"content":" int j \u003d parsedCommand.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"SimHanKiong"},"content":" if (j \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When does your event last to bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"SimHanKiong"},"content":" name \u003d String.join(\" \", parsedCommand.subList(1, i));","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":" String from \u003d String.join(\" \", parsedCommand.subList(i + 1, j));","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"SimHanKiong"},"content":" String to \u003d String.join(\" \", parsedCommand.subList(j + 1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime fromDate \u003d LocalDateTime.parse(from, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime toDate \u003d LocalDateTime.parse(to, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"SimHanKiong"},"content":" return new AddEventCommand(name, fromDate, toDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"SimHanKiong"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Your command does not make sense bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"SimHanKiong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Enter a valid number bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"SimHanKiong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Date and Time should be in the format of YYYY/MM/DD HHMM bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":121}},{"path":"src/main/java/johnny/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" private String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" public List\u003cTask\u003e load() throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" if (!file.isFile() \u0026\u0026 file.getParentFile().mkdir()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" String[] parsedInput \u003d input.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" String taskType \u003d parsedInput[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" switch(taskType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new ToDo(parsedInput[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime by \u003d LocalDateTime.parse(parsedInput[3], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new Deadline(parsedInput[2], by);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parsedInput[3], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parsedInput[4], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new Event(parsedInput[2], from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"The file has been corrupted bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" if (parsedInput[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can\u0027t create a new file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" public void rewriteFile(TaskList tasks) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" try (FileWriter fw \u003d new FileWriter(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" fw.write(tasks.get(i).addToFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Cannot write to file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" public void appendToFile(Task task) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" try (FileWriter fw \u003d new FileWriter(filePath, true)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" fw.write(task.addToFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Cannot write to file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":93}},{"path":"src/main/java/johnny/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" public Deadline(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + super.formatOutputDate(by) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" return \"D | \" + super.addToFile() + \" | \" + super.formatInputDate(by) + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":24}},{"path":"src/main/java/johnny/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public Event(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + super.formatOutputDate(from)","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" + \" to: \" + super.formatOutputDate(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" return \"E | \" + super.addToFile() + \" | \" + super.formatInputDate(from)","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" + \" | \" + super.formatInputDate(to) + \"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":28}},{"path":"src/main/java/johnny/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"public class Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter OUTPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void mark() {","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" public void unmark() {","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" String x \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" return \"[\" + x + \"] \" + name;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" String isDone \u003d this.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" return isDone + \" | \" + name;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" public String formatInputDate(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" return dateTime.format(INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" public String formatOutputDate(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" return dateTime.format(OUTPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"SimHanKiong":45}},{"path":"src/main/java/johnny/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" public Task get(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"This task does not exist bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" public Task mark(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" public Task unmark(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" task.unmark();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" public Task delete(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.remove(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"This task does not exist bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" public int size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":57}},{"path":"src/main/java/johnny/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return \"T | \" + super.addToFile() + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(errorMessage + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Johnny here. What do you want bro?\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" public void showEnd() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Bye bro. I\u0027m going back to sleep.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public void showList(TaskList tasks) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Get all these done bro:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(i + 1 + \". \" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" public void showMark(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Finally done bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" public void showUnmark(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Why are you not done yet bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" public void showDelete(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Task removed. Why so lazy bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"You still have \" + tasks.size() + \" tasks in your list bro.\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" public void showAddTask(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Go get this done bro:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"You still have \" + tasks.size() + \" tasks in your list bro.\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":61}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"todo borrow book","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"mark 1","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"unmark 1","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"blablabla","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"bye","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":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":"SimHanKiong"},"content":"REM run the program, feed johnny.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"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":{"SimHanKiong":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":"SimHanKiong"},"content":"if ! javac -cp ../src/main/java/johnny -Xlint:none -d ../bin ../src/main/java/johnny/*.java","lastModifiedDate":"2024-01-29"},{"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":"SimHanKiong"},"content":"# run the program, feed johnny.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"java -classpath ../bin Johnny \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"SimHanKiong":3,"-":35}}] +[{"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":"SimHanKiong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-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":"-"},"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":"SimHanKiong"},"content":" mainClass.set(\"johnny.Johnny\")","lastModifiedDate":"2024-01-30"},{"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":"SimHanKiong"},"content":" archiveBaseName \u003d \"Johnny\"","lastModifiedDate":"2024-01-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":{"SimHanKiong":3,"-":40}},{"path":"src/main/java/johnny/Johnny.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class Johnny {","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public Johnny(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" new Johnny(\"data/tasks.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"SimHanKiong":48}},{"path":"src/main/java/johnny/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" public AddDeadlineCommand(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Deadline(name, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":34}},{"path":"src/main/java/johnny/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public AddEventCommand(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Event(name, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":36}},{"path":"src/main/java/johnny/commands/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public AddTodoCommand(String name) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new ToDo(name);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" storage.appendToFile(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" ui.showAddTask(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"SimHanKiong":13}},{"path":"src/main/java/johnny/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.delete(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showDelete(task, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" ui.showEnd();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" ui.showList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.mark(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showMark(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import johnny.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private int index;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.unmark(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" storage.rewriteFile(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" ui.showUnmark(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":29}},{"path":"src/main/java/johnny/exceptions/JohnnyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.exceptions;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"public class JohnnyException extends Exception {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":" public JohnnyException(String errorMessage) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":9}},{"path":"src/main/java/johnny/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddDeadlineCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddEventCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.AddTodoCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.DeleteCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.ExitCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.ListCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.MarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"import johnny.commands.UnmarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" public static Command parse(String fullCommand) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e parsedCommand \u003d Arrays.asList(fullCommand.split(\" \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Enter a command bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" String command \u003d parsedCommand.get(0);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" switch (command) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task do you want to mark bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only mark 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" int index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task do you want to unmark bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only unmark 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Which task am I supposed to delete bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" } else if (parsedCommand.size() \u003e 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can only delete 1 task bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" index \u003d Integer.parseInt(parsedCommand.get(1)) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your todo bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" String name \u003d String.join(\" \", parsedCommand.subList(1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" return new AddTodoCommand(name);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your deadline bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" int i \u003d parsedCommand.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" if (i \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When is your deadline by bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":" name \u003d String.join(\" \", parsedCommand.subList(1, i));","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" String by \u003d String.join(\" \", parsedCommand.subList(i + 1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime byDate \u003d LocalDateTime.parse(by, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" return new AddDeadlineCommand(name, byDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" if (parsedCommand.size() \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"What is your deadline bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":" i \u003d parsedCommand.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"SimHanKiong"},"content":" if (i \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When does your event start from bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"SimHanKiong"},"content":" int j \u003d parsedCommand.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"SimHanKiong"},"content":" if (j \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"When does your event last to bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"SimHanKiong"},"content":" name \u003d String.join(\" \", parsedCommand.subList(1, i));","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":" String from \u003d String.join(\" \", parsedCommand.subList(i + 1, j));","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"SimHanKiong"},"content":" String to \u003d String.join(\" \", parsedCommand.subList(j + 1, parsedCommand.size()));","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime fromDate \u003d LocalDateTime.parse(from, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime toDate \u003d LocalDateTime.parse(to, INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"SimHanKiong"},"content":" return new AddEventCommand(name, fromDate, toDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"SimHanKiong"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Your command does not make sense bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"SimHanKiong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Enter a valid number bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"SimHanKiong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Date and Time should be in the format of YYYY/MM/DD HHMM bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":121}},{"path":"src/main/java/johnny/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" private String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" public List\u003cTask\u003e load() throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" if (!file.isFile() \u0026\u0026 file.getParentFile().mkdir()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" String[] parsedInput \u003d input.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" String taskType \u003d parsedInput[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" switch(taskType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new ToDo(parsedInput[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime by \u003d LocalDateTime.parse(parsedInput[3], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new Deadline(parsedInput[2], by);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime from \u003d LocalDateTime.parse(parsedInput[3], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime to \u003d LocalDateTime.parse(parsedInput[4], INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" task \u003d new Event(parsedInput[2], from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"The file has been corrupted bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" if (parsedInput[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"I can\u0027t create a new file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" public void rewriteFile(TaskList tasks) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" try (FileWriter fw \u003d new FileWriter(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" fw.write(tasks.get(i).addToFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Cannot write to file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" public void appendToFile(Task task) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" try (FileWriter fw \u003d new FileWriter(filePath, true)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" fw.write(task.addToFile());","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"Cannot write to file bro: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":93}},{"path":"src/main/java/johnny/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" public Deadline(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + super.formatOutputDate(by) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" return \"D | \" + super.addToFile() + \" | \" + super.formatInputDate(by) + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":24}},{"path":"src/main/java/johnny/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public Event(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + super.formatOutputDate(from)","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" + \" to: \" + super.formatOutputDate(to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" return \"E | \" + super.addToFile() + \" | \" + super.formatInputDate(from)","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" + \" | \" + super.formatInputDate(to) + \"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":28}},{"path":"src/main/java/johnny/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"public class Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter INPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" private static final DateTimeFormatter OUTPUT_DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void mark() {","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" public void unmark() {","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" String x \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" return \"[\" + x + \"] \" + name;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" String isDone \u003d this.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" return isDone + \" | \" + name;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" public String formatInputDate(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" return dateTime.format(INPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" public String formatOutputDate(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" return dateTime.format(OUTPUT_DATE_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"SimHanKiong":45}},{"path":"src/main/java/johnny/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" public Task get(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"This task does not exist bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" public Task mark(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" public Task unmark(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" task.unmark();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" public Task delete(int index) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d tasks.remove(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" throw new JohnnyException(\"This task does not exist bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" public int size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":57}},{"path":"src/main/java/johnny/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public String addToFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" return \"T | \" + super.addToFile() + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":19}},{"path":"src/main/java/johnny/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import johnny.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(errorMessage + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Johnny here. What do you want bro?\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" public void showEnd() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Bye bro. I\u0027m going back to sleep.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public void showList(TaskList tasks) throws JohnnyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Get all these done bro:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(i + 1 + \". \" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" public void showMark(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Finally done bro.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" public void showUnmark(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Why are you not done yet bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" public void showDelete(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Task removed. Why so lazy bro?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"You still have \" + tasks.size() + \" tasks in your list bro.\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" public void showAddTask(Task task, TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"Go get this done bro:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" System.out.println(\"You still have \" + tasks.size() + \" tasks in your list bro.\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"SimHanKiong":61}},{"path":"src/test/java/johnny/tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" public void toString_unMarkedDeadline_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" Deadline deadline \u003d new Deadline(\"return book\", LocalDateTime.parse(\"2013-06-15T23:50\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[D][ ] return book (by: Jun 15 2013 11:50 PM)\", deadline.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void toString_markedDeadline_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" Deadline deadline \u003d new Deadline(\"return book\", LocalDateTime.parse(\"2013-06-15T23:50\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" deadline.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[D][X] return book (by: Jun 15 2013 11:50 PM)\", deadline.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_unMarkedDeadline_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" Deadline deadline \u003d new Deadline(\"return book\", LocalDateTime.parse(\"2013-06-15T23:50\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"D | 0 | return book | 2013/06/15 2350\\n\", deadline.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_markedDeadline_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" Deadline deadline \u003d new Deadline(\"return book\", LocalDateTime.parse(\"2013-06-15T23:50\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" deadline.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"D | 1 | return book | 2013/06/15 2350\\n\", deadline.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SimHanKiong":37}},{"path":"src/test/java/johnny/tasks/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class EventTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" public void toString_unMarkedEvent_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" Event event \u003d new Event(\"borrow book\",","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-07-14T00:30\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-08-14T12:30\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[E][ ] borrow book (from: Jul 14 2001 12:30 AM to: Aug 14 2001 12:30 PM)\",","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" event.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" public void toString_markedEvent_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" Event event \u003d new Event(\"borrow book\",","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-07-14T00:30\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-08-14T12:30\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" event.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[E][X] borrow book (from: Jul 14 2001 12:30 AM to: Aug 14 2001 12:30 PM)\",","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" event.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_unMarkedEvent_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" Event event \u003d new Event(\"borrow book\",","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-07-14T00:30\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-08-14T12:30\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"E | 0 | borrow book | 2001/07/14 0030 | 2001/08/14 1230\\n\", event.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_markedEvent_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" Event event \u003d new Event(\"borrow book\",","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-07-14T00:30\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime.parse(\"2001-08-14T12:30\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" event.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"E | 1 | borrow book | 2001/07/14 0030 | 2001/08/14 1230\\n\", event.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SimHanKiong":47}},{"path":"src/test/java/johnny/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import johnny.exceptions.JohnnyException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" public void get_indexWithinBounds_success() throws JohnnyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" Task expected \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" list.add(expected);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, tasks.get(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" public void get_indexOutOfBounds_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" tasks.get(-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"This task does not exist bro.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" public void mark_indexWithinBounds_success() throws JohnnyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" Task expected \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" expected.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" list.add(expected);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, tasks.mark(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" public void unmark_indexWithinBounds_success() throws JohnnyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" Task expected \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" expected.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" list.add(expected);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, tasks.unmark(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" public void delete_indexWithinBounds_success() throws JohnnyException {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" Task expected \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" list.add(expected);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, tasks.delete(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(0, list.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" public void delete_indexOutOfBounds_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" tasks.delete(-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" } catch (JohnnyException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"This task does not exist bro.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" public void size_filledList_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" Task dummy1 \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":" Task dummy2 \u003d new Task(\"dummy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" list.add(dummy1);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" list.add(dummy2);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(2, tasks.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" public void size_emptyList_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(0, tasks.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SimHanKiong":92}},{"path":"src/test/java/johnny/tasks/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" public void toString_unMarkedTask_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Task(\"do homework\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[ ] do homework\", task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" public void toString_markedTask_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Task(\"do homework\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[X] do homework\", task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_unMarkedTask_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Task(\"do homework\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"0 | do homework\", task.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_markedTask_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" Task task \u003d new Task(\"do homework\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" task.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"1 | do homework\", task.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" public void formatInputDate_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(\"2013-01-23T21:30\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"2013/01/23 2130\", new Task(\"dummy\").formatInputDate(dateTime));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" public void formatOutputDate_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(\"2013-01-23T21:30\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"Jan 23 2013 09:30 PM\", new Task(\"dummy\").formatOutputDate(dateTime));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SimHanKiong":50}},{"path":"src/test/java/johnny/tasks/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package johnny.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"public class TodoTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" public void toString_unMarkedTodo_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" ToDo todo \u003d new ToDo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[T][ ] sleep\", todo.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void toString_markedTodo_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" ToDo todo \u003d new ToDo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" todo.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"[T][X] sleep\", todo.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_unMarkedTodo_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" ToDo todo \u003d new ToDo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"T | 0 | sleep\\n\", todo.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" public void addToFile_markedTodo_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" ToDo todo \u003d new ToDo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" todo.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(\"T | 1 | sleep\\n\", todo.addToFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"SimHanKiong":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"todo borrow book","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"mark 1","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"unmark 1","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"list","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"blablabla","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"bye","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"SimHanKiong":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":"SimHanKiong"},"content":"REM run the program, feed johnny.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"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":{"SimHanKiong":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":"SimHanKiong"},"content":"if ! javac -cp ../src/main/java/johnny -Xlint:none -d ../bin ../src/main/java/johnny/*.java","lastModifiedDate":"2024-01-29"},{"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":"SimHanKiong"},"content":"# run the program, feed johnny.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"java -classpath ../bin Johnny \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"SimHanKiong":3,"-":35}}] diff --git a/SimHanKiong_ip_master/commits.json b/SimHanKiong_ip_master/commits.json index 7ccb3881..f03eab49 100644 --- a/SimHanKiong_ip_master/commits.json +++ b/SimHanKiong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"SimHanKiong":[{"date":"2024-01-20","commitResults":[{"hash":"227f3fb716139cafac2c7ef7a9e4b9a9364584f7","isMergeCommit":false,"messageTitle":"Reached Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"f35e80e3192033e0c5a4c22724e1551539df97f9","isMergeCommit":false,"messageTitle":"Reached Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"55164b92b7ff0b1c346e201cec2cae8b457eedd5","isMergeCommit":false,"messageTitle":"Reached Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"43af79605d2867ac0a97c209337123cf2b987cd3","isMergeCommit":false,"messageTitle":"Reached Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":7}}}]},{"date":"2024-01-21","commitResults":[{"hash":"801175c522066bc799461f3ecf7b3a8c73f7c974","isMergeCommit":false,"messageTitle":"Reach Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}},{"hash":"ac0c379174fab29a19adddaf676a77548c9f89d4","isMergeCommit":false,"messageTitle":"Reached A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"4eba514e25f64e4b34339aa763372cee15186079","isMergeCommit":false,"messageTitle":"Reached Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":40}}},{"hash":"51666c6e9d5cd3e5c6a6ade4449154eecb1f8872","isMergeCommit":false,"messageTitle":"Reached Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}}]},{"date":"2024-01-25","commitResults":[{"hash":"be703afc099f2eb32f090f97dda6f82341c9b786","isMergeCommit":false,"messageTitle":"Reached A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":38,"deletions":15}}}]},{"date":"2024-01-28","commitResults":[{"hash":"27bb72bd47cf4f0b814cfd5648fc0e60231a5322","isMergeCommit":false,"messageTitle":"Add Save Feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":109,"deletions":14}}},{"hash":"0a83ed5c49d383b9b081990d25fc46a13af7a5d8","isMergeCommit":false,"messageTitle":"Add data/johnny.txt Storage File","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"df047197314be7e02ad579a330d9dca91e8d947f","isMergeCommit":false,"messageTitle":"Add Date and Time parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":47}}},{"hash":"cb59eebb9744ac331baa1867cb449446756e349d","isMergeCommit":false,"messageTitle":"Remove tracking of storage file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4}}},{"hash":"1e1686a4543c10b3d9747696e6d1691d85cfe727","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 into \u0027master\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"f9e1e0bd5db2813fe35866a3929a391d8d39835f","isMergeCommit":false,"messageTitle":"Refactor to match OOP standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":510,"deletions":295}}},{"hash":"ed00f56ae2240bc226cce2cbdd1cd898a2abb64d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"6c01e5e9bdea67c5fe6a873ea65be2a8973a2a3e","isMergeCommit":false,"messageTitle":"Refactor code into separate packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":5},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"48d80ae8c4ddd4793374c95a3dd3b81defb3bf22","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f277a54d15a088dee3db3ed075f61f37297376ba","isMergeCommit":false,"messageTitle":"Fix package refactor error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":22},"sh":{"insertions":1,"deletions":1}}},{"hash":"b8ca1a2767b2a01c78690332ec952b2841a24086","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"8b24a5edeed458cb3a331be7050f2193bdd99a46","isMergeCommit":true,"messageTitle":"Merge commit \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bc2fa6989b5854929a6ff2671d6f89f9c724f44b","isMergeCommit":false,"messageTitle":"Add Gradle and Refactor code to fit checkstyle requirements","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2},"java":{"insertions":37,"deletions":22}}},{"hash":"b690e8da9e09a8b3e9f9bb2f3e1228a82c702222","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SimHanKiong":{"java":742,"md":0,"fxml":0,"sh":3,"bat":1,"gradle":3,"txt":11}},"authorContributionVariance":{"SimHanKiong":88763.63},"authorDisplayNameMap":{"SimHanKiong":"CS2103T-F13-2 SIM ..IONG"}} +{"authorDailyContributionsMap":{"SimHanKiong":[{"date":"2024-01-20","commitResults":[{"hash":"227f3fb716139cafac2c7ef7a9e4b9a9364584f7","isMergeCommit":false,"messageTitle":"Reached Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"f35e80e3192033e0c5a4c22724e1551539df97f9","isMergeCommit":false,"messageTitle":"Reached Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"55164b92b7ff0b1c346e201cec2cae8b457eedd5","isMergeCommit":false,"messageTitle":"Reached Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"43af79605d2867ac0a97c209337123cf2b987cd3","isMergeCommit":false,"messageTitle":"Reached Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":7}}}]},{"date":"2024-01-21","commitResults":[{"hash":"801175c522066bc799461f3ecf7b3a8c73f7c974","isMergeCommit":false,"messageTitle":"Reach Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}},{"hash":"ac0c379174fab29a19adddaf676a77548c9f89d4","isMergeCommit":false,"messageTitle":"Reached A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"4eba514e25f64e4b34339aa763372cee15186079","isMergeCommit":false,"messageTitle":"Reached Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":40}}},{"hash":"51666c6e9d5cd3e5c6a6ade4449154eecb1f8872","isMergeCommit":false,"messageTitle":"Reached Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}}]},{"date":"2024-01-25","commitResults":[{"hash":"be703afc099f2eb32f090f97dda6f82341c9b786","isMergeCommit":false,"messageTitle":"Reached A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":38,"deletions":15}}}]},{"date":"2024-01-28","commitResults":[{"hash":"27bb72bd47cf4f0b814cfd5648fc0e60231a5322","isMergeCommit":false,"messageTitle":"Add Save Feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":109,"deletions":14}}},{"hash":"0a83ed5c49d383b9b081990d25fc46a13af7a5d8","isMergeCommit":false,"messageTitle":"Add data/johnny.txt Storage File","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"df047197314be7e02ad579a330d9dca91e8d947f","isMergeCommit":false,"messageTitle":"Add Date and Time parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":47}}},{"hash":"cb59eebb9744ac331baa1867cb449446756e349d","isMergeCommit":false,"messageTitle":"Remove tracking of storage file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4}}},{"hash":"1e1686a4543c10b3d9747696e6d1691d85cfe727","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 into \u0027master\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"f9e1e0bd5db2813fe35866a3929a391d8d39835f","isMergeCommit":false,"messageTitle":"Refactor to match OOP standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":510,"deletions":295}}},{"hash":"ed00f56ae2240bc226cce2cbdd1cd898a2abb64d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"6c01e5e9bdea67c5fe6a873ea65be2a8973a2a3e","isMergeCommit":false,"messageTitle":"Refactor code into separate packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":5},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"48d80ae8c4ddd4793374c95a3dd3b81defb3bf22","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f277a54d15a088dee3db3ed075f61f37297376ba","isMergeCommit":false,"messageTitle":"Fix package refactor error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":22},"sh":{"insertions":1,"deletions":1}}},{"hash":"b8ca1a2767b2a01c78690332ec952b2841a24086","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"8b24a5edeed458cb3a331be7050f2193bdd99a46","isMergeCommit":true,"messageTitle":"Merge commit \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bc2fa6989b5854929a6ff2671d6f89f9c724f44b","isMergeCommit":false,"messageTitle":"Add Gradle and Refactor code to fit checkstyle requirements","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2},"java":{"insertions":37,"deletions":22}}},{"hash":"b690e8da9e09a8b3e9f9bb2f3e1228a82c702222","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"ad4deaee7734a7c178f67951fb44ad1168dd344a","isMergeCommit":false,"messageTitle":"Add JUnit tests for tasks package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":263,"deletions":0}}},{"hash":"197c8dd43cb4362dd1b1fdfdc1403240869b8c09","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"ad402693fc0eac1bb6c383de3d9c66d7fac7b12f","isMergeCommit":false,"messageTitle":"Refactor to allow jar file to be created","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":1}}},{"hash":"91bae872973c1c21d60821b43291b48ce2c91b4d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SimHanKiong":{"java":1005,"md":0,"fxml":0,"sh":3,"bat":1,"gradle":3,"txt":11}},"authorContributionVariance":{"SimHanKiong":90552.91},"authorDisplayNameMap":{"SimHanKiong":"CS2103T-F13-2 SIM ..IONG"}} diff --git a/Yskie_ip_master/commits.json b/Yskie_ip_master/commits.json index 74efe25c..1da78fe8 100644 --- a/Yskie_ip_master/commits.json +++ b/Yskie_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Yskie":[{"date":"2024-01-24","commitResults":[{"hash":"163b293c334a2713f7a0d6e36bff3f30cf082107","isMergeCommit":false,"messageTitle":"Implemented Skeletal Version of Tiny","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"81ff1a1a1157ca52dd13d53f74ab9527f1c023df","isMergeCommit":false,"messageTitle":"Echo and Bye Function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":17}}},{"hash":"3126f232d73c7f954b38df4465fed85ad60f0d5d","isMergeCommit":false,"messageTitle":"Implemented Add and List Functions with a Task class.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}},{"hash":"f887b32cf8c043fec2f4db3add3e207f0d1366c0","isMergeCommit":false,"messageTitle":"Added Mark and Umarked Function with Exception Handling.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":22}}}]},{"date":"2024-01-25","commitResults":[{"hash":"da01acab4d43dad899763c6ecd7321a34bb6a11c","isMergeCommit":false,"messageTitle":"Added “Deadline, Event and Todo class and implemented their methods.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":205,"deletions":53}}},{"hash":"1a6ef84f64caac0d4d2ec2fcad3a4e92c682b291","isMergeCommit":false,"messageTitle":"Handled Exceptions and Incorrect Inputs.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"38cd27c05e2bc86dae4afb9b1eaf98fbbce116c0","isMergeCommit":false,"messageTitle":"Tested using I/O redirection.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2}}},{"hash":"be10f543020755b6bf8f52634aaf43ea0b287cf4","isMergeCommit":false,"messageTitle":"Implemented Deletion Feature.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":7}}}]},{"date":"2024-01-29","commitResults":[{"hash":"6ee7268459de06f9647845eac333ddfba40b7839","isMergeCommit":false,"messageTitle":"Add Save function and OOP optimisation with the respective class","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":381,"deletions":219}}},{"hash":"cf0cb0752adf2e5f9049485bd0351e8f1a9264f1","isMergeCommit":false,"messageTitle":"Bug fix for the data directory is not found","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":7,"deletions":0}}},{"hash":"4fc817847c40d937770a53f4509924abd5ca4738","isMergeCommit":false,"messageTitle":"Updated the varaibles modifier to be protected","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":10}}},{"hash":"b4e6d09b47c3d718f6dbe741a1c1fd5adef0c112","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"2a851ccb5e255aa33c634fcf1d663da0301a9032","isMergeCommit":false,"messageTitle":"Changed deadline to be stored as LocalDateTime for deadline and event","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":37}}},{"hash":"155e0fa25e484a472586697c901e1353b314d4be","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4e82947da2615dccc43799fddfd38e57569ddeb7","isMergeCommit":false,"messageTitle":"Refactored code to follow OOP Style","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"4d9c727a0f14ca38ae21165c81675498e36cd318","isMergeCommit":false,"messageTitle":"Refactor code into a package \u0027tiny\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":1}}},{"hash":"56f501503f6a6f142717b62793b3efee3dfd2ed1","isMergeCommit":false,"messageTitle":"Refactored code to follow Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":8}}},{"hash":"208c2d08e7f1a5d122c1a67ff330343f8b61b506","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Yskie":{"java":666,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"Yskie":37065.855},"authorDisplayNameMap":{"Yskie":"CS2103T-W13-4 YONG..KANG"}} +{"authorDailyContributionsMap":{"Yskie":[{"date":"2024-01-24","commitResults":[{"hash":"163b293c334a2713f7a0d6e36bff3f30cf082107","isMergeCommit":false,"messageTitle":"Implemented Skeletal Version of Tiny","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"81ff1a1a1157ca52dd13d53f74ab9527f1c023df","isMergeCommit":false,"messageTitle":"Echo and Bye Function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":17}}},{"hash":"3126f232d73c7f954b38df4465fed85ad60f0d5d","isMergeCommit":false,"messageTitle":"Implemented Add and List Functions with a Task class.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}},{"hash":"f887b32cf8c043fec2f4db3add3e207f0d1366c0","isMergeCommit":false,"messageTitle":"Added Mark and Umarked Function with Exception Handling.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":22}}}]},{"date":"2024-01-25","commitResults":[{"hash":"da01acab4d43dad899763c6ecd7321a34bb6a11c","isMergeCommit":false,"messageTitle":"Added “Deadline, Event and Todo class and implemented their methods.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":205,"deletions":53}}},{"hash":"1a6ef84f64caac0d4d2ec2fcad3a4e92c682b291","isMergeCommit":false,"messageTitle":"Handled Exceptions and Incorrect Inputs.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"38cd27c05e2bc86dae4afb9b1eaf98fbbce116c0","isMergeCommit":false,"messageTitle":"Tested using I/O redirection.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2}}},{"hash":"be10f543020755b6bf8f52634aaf43ea0b287cf4","isMergeCommit":false,"messageTitle":"Implemented Deletion Feature.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":7}}}]},{"date":"2024-01-29","commitResults":[{"hash":"6ee7268459de06f9647845eac333ddfba40b7839","isMergeCommit":false,"messageTitle":"Add Save function and OOP optimisation with the respective class","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":381,"deletions":219}}},{"hash":"cf0cb0752adf2e5f9049485bd0351e8f1a9264f1","isMergeCommit":false,"messageTitle":"Bug fix for the data directory is not found","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":7,"deletions":0}}},{"hash":"4fc817847c40d937770a53f4509924abd5ca4738","isMergeCommit":false,"messageTitle":"Updated the varaibles modifier to be protected","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":10}}},{"hash":"b4e6d09b47c3d718f6dbe741a1c1fd5adef0c112","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"2a851ccb5e255aa33c634fcf1d663da0301a9032","isMergeCommit":false,"messageTitle":"Changed deadline to be stored as LocalDateTime for deadline and event","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":37}}},{"hash":"155e0fa25e484a472586697c901e1353b314d4be","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4e82947da2615dccc43799fddfd38e57569ddeb7","isMergeCommit":false,"messageTitle":"Refactored code to follow OOP Style","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"4d9c727a0f14ca38ae21165c81675498e36cd318","isMergeCommit":false,"messageTitle":"Refactor code into a package \u0027tiny\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":1}}},{"hash":"56f501503f6a6f142717b62793b3efee3dfd2ed1","isMergeCommit":false,"messageTitle":"Refactored code to follow Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":8}}},{"hash":"208c2d08e7f1a5d122c1a67ff330343f8b61b506","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"33594ae582d454db2240ad0414122d0b3e70b712","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Yskie/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Yskie":{"java":666,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"Yskie":37065.855},"authorDisplayNameMap":{"Yskie":"CS2103T-W13-4 YONG..KANG"}} diff --git a/Zack-Tay_ip_master/authorship.json b/Zack-Tay_ip_master/authorship.json index b4e33ba1..a2ca912e 100644 --- a/Zack-Tay_ip_master/authorship.json +++ b/Zack-Tay_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Fredricksen.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":"public class Fredricksen {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":" public static void greeting(String line) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Hello! I\u0027m Fredricksen\");","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":" public static void updateFile(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":" String filename \u003d \"./data/Fredricksen.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Zack-Tay"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Zack-Tay"},"content":" try (BufferedWriter bw \u003d new BufferedWriter(new FileWriter(filename))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Zack-Tay"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Zack-Tay"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Zack-Tay"},"content":" return;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Zack-Tay"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Zack-Tay"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Zack-Tay"},"content":" String type \u003d task.getType();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Zack-Tay"},"content":" String content \u003d task.getTask();","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Zack-Tay"},"content":" boolean isDone \u003d task.getDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Zack-Tay"},"content":" bw.write(\"type: \" + type + \" isDone: \" + isDone + \" content: \" + content);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Zack-Tay"},"content":" bw.newLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Zack-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Zack-Tay"},"content":" public static ArrayList\u003cTask\u003e loadList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Zack-Tay"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Zack-Tay"},"content":" String filename \u003d \"./data/Fredricksen.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Zack-Tay"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Zack-Tay"},"content":" try (BufferedReader br \u003d new BufferedReader(new FileReader(filename))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Zack-Tay"},"content":" String next;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Zack-Tay"},"content":" while ((next \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Zack-Tay"},"content":" int type \u003d next.indexOf(\"type: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Zack-Tay"},"content":" int isDone \u003d next.indexOf(\"isDone: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Zack-Tay"},"content":" int content \u003d next.indexOf(\"content: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Zack-Tay"},"content":" String done \u003d next.substring(isDone + 8, isDone + 9);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Zack-Tay"},"content":" Task newTask \u003d new Task(next.substring(content + 9), next.substring(type + 6, type + 7), done.equals(\"t\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Zack-Tay"},"content":" list.add(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Zack-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Zack-Tay"},"content":" // read file, if have content, add to list, else leave list as empty.","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Zack-Tay"},"content":" return list;","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Zack-Tay"},"content":" public static void listOfCommands() {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You might have entered an invalid command!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Below are the available commands and formats to follow!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"1. To view all your current task: list\");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"2. To add new task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" a. todos: todo \u003ctask\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" b. deadlines: deadline \u003ctask\u003e /by \u003cdeadline\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" c. event: event \u003cevent\u003e /from \u003cstartdate, starttiming\u003e /to \u003cenddate, endtiming\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"3. To delete a task: delete \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"4. To mark task as completed: mark \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"5. To unmark completed task: unmark \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"6. To exit program: bye\");","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Zack-Tay"},"content":" public enum commands {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Zack-Tay"},"content":" list, todo, deadline, event, mark, unmark, delete, bye","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Zack-Tay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Zack-Tay"},"content":" ArrayList\u003cTask\u003e list \u003d loadList();","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Zack-Tay"},"content":" Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Zack-Tay"},"content":" // ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Zack-Tay"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Zack-Tay"},"content":" greeting(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Zack-Tay"},"content":" boolean loop \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Zack-Tay"},"content":" while (loop) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Zack-Tay"},"content":" String s \u003d in.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Zack-Tay"},"content":" String[] split \u003d s.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"Zack-Tay"},"content":" String first \u003d split[0].toLowerCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Zack-Tay"},"content":" switch (first) {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Zack-Tay"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Zack-Tay"},"content":" Task t1 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Zack-Tay"},"content":" t1.setDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t1.printTask(t1.getType(), t1.getDone(), t1.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Zack-Tay"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Zack-Tay"},"content":" Task t2 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"Zack-Tay"},"content":" t2.setUndone();","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t2.printTask(t2.getType(), t2.getDone(), t2.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"Zack-Tay"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Zack-Tay"},"content":" Task t2 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"Zack-Tay"},"content":" list.remove(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t2.printTask(t2.getType(), t2.getDone(), t2.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Now you have \" + list.size() + \" \" + single + \" in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"Zack-Tay"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Zack-Tay"},"content":" loop \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Zack-Tay"},"content":" case \"\":","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"Zack-Tay"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"Zack-Tay"},"content":" if (list.size() \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"Zack-Tay"},"content":" Task.printList(list);","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"Zack-Tay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"Zack-Tay"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"Zack-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"Zack-Tay"},"content":" String res \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"Zack-Tay"},"content":" switch (first) {","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"Zack-Tay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"T\";","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"Zack-Tay"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"E\";","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"Zack-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"D\";","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"Zack-Tay"},"content":" int startInd1 \u003d s.indexOf(\"/by\");","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"Zack-Tay"},"content":" int startInd2 \u003d s.indexOf(\"/from\");","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"Zack-Tay"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"Zack-Tay"},"content":" String ss \u003d s.substring(first.length() + 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"Zack-Tay"},"content":" if (startInd2 \u003d\u003d -1 \u0026\u0026 startInd1 \u003d\u003d -1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(ss, res, false);","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"Zack-Tay"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"Zack-Tay"},"content":" if (startInd1 !\u003d -1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"Zack-Tay"},"content":" // dl \u003d deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"Zack-Tay"},"content":" String dl \u003d s.substring(first.length() + 1, startInd1) + \"(\" + s.substring(startInd1 + 1, startInd1 + 3) + \": \" + s.substring(startInd1 + 4) + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(dl, res, false);","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"Zack-Tay"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"Zack-Tay"},"content":" // e \u003d event","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"Zack-Tay"},"content":" int startTo \u003d s.indexOf(\"/to\");","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"Zack-Tay"},"content":" String e \u003d s.substring(first.length() + 1, startInd2) +","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"Zack-Tay"},"content":" \"(\" + s.substring(startInd2 + 1, startInd2 + 5) + \": \" + s.substring(startInd2 + 6, startTo) + s.substring(startTo + 1, startTo + 3) +","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"Zack-Tay"},"content":" \": \" + s.substring(startTo + 4) + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(e, res, false);","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"Zack-Tay"},"content":" list.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"Zack-Tay"},"content":" String t \u003d newTask.printTask(res, false, newTask.getTask());","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"Zack-Tay"},"content":" // String task \u003d \" [\" + res + \"]\" + \"[] \" + s.substring(first.length() + 1, s.length());","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"Zack-Tay"},"content":" String single1 \u003d list.size() \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Now you have \" + list.size() + \" \" + single1 + \" in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"Zack-Tay"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"Zack-Tay"},"content":" // TODO","lastModifiedDate":"2024-01-28"},{"lineNumber":209,"author":{"gitId":"Zack-Tay"},"content":" updateFile(list);","lastModifiedDate":"2024-01-28"},{"lineNumber":210,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"Zack-Tay"},"content":" in.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"Zack-Tay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Zack-Tay":213}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":" private String task, type;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":" public Task(String task, String type, boolean isDone) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":" public void setDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":" public void setUndone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Zack-Tay"},"content":" public boolean getDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Zack-Tay"},"content":" return this.isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Zack-Tay"},"content":" public String getType() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Zack-Tay"},"content":" return this.type;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Zack-Tay"},"content":" public String getTask() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Zack-Tay"},"content":" return this.task;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Zack-Tay"},"content":" public static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Zack-Tay"},"content":" for (int i \u003d 1; i \u003c\u003d list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Zack-Tay"},"content":" Task currtask \u003d list.get(i-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Zack-Tay"},"content":" String s \u003d i + \". \" + \"[\" + currtask.type + \"][\" + (currtask.isDone ? \"X\" : \"\") + \"]\" + \" \" + currtask.task;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + s);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Zack-Tay"},"content":" public String printTask(String type, boolean isDone, String task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Zack-Tay"},"content":" return \"[\" + type + \"][\" + (isDone ? \"X\" : \"\") + \"]\" + \" \" + task;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Zack-Tay"},"content":" public void deleteTask(int index, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Zack-Tay"},"content":" Task task \u003d list.get(index-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Zack-Tay"},"content":" list.remove(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Zack-Tay"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Zack-Tay":40}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"event Badminton /from Tues 8pm /to 9pm","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":"todo Laundry","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":"deadline Homework /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":"deadline Homework /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":"deadline Essay /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Zack-Tay":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":"Zack-Tay"},"content":"java -classpath ..\\bin Fredricksen \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"Zack-Tay":1,"-":20}}] +[{"path":"src/main/java/Fredricksen.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":"public class Fredricksen {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":" public static void greeting(String line) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Hello! I\u0027m Fredricksen\");","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Zack-Tay"},"content":" public static void updateFile(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Zack-Tay"},"content":" String filename \u003d \"./data/Fredricksen.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Zack-Tay"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Zack-Tay"},"content":" try (BufferedWriter bw \u003d new BufferedWriter(new FileWriter(filename))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Zack-Tay"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Zack-Tay"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Zack-Tay"},"content":" return;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Zack-Tay"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Zack-Tay"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Zack-Tay"},"content":" String type \u003d task.getType();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Zack-Tay"},"content":" String content \u003d task.getTask();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Zack-Tay"},"content":" boolean isDone \u003d task.getDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Zack-Tay"},"content":" bw.write(\"type: \" + type + \" isDone: \" + isDone + \" content: \" + content);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Zack-Tay"},"content":" bw.newLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Zack-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Zack-Tay"},"content":" public static ArrayList\u003cTask\u003e loadList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Zack-Tay"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Zack-Tay"},"content":" String filename \u003d \"./data/Fredricksen.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Zack-Tay"},"content":" File file \u003d new File(filename);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Zack-Tay"},"content":" try (BufferedReader br \u003d new BufferedReader(new FileReader(filename))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Zack-Tay"},"content":" String next;","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Zack-Tay"},"content":" while ((next \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Zack-Tay"},"content":" int type \u003d next.indexOf(\"type: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Zack-Tay"},"content":" int isDone \u003d next.indexOf(\"isDone: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Zack-Tay"},"content":" int content \u003d next.indexOf(\"content: \");","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Zack-Tay"},"content":" String done \u003d next.substring(isDone + 8, isDone + 9);","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Zack-Tay"},"content":" Task newTask \u003d new Task(next.substring(content + 9), next.substring(type + 6, type + 7), done.equals(\"t\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Zack-Tay"},"content":" list.add(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Zack-Tay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Zack-Tay"},"content":" // read file, if have content, add to list, else leave list as empty.","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Zack-Tay"},"content":" return list;","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Zack-Tay"},"content":" public static void listOfCommands() {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You might have entered an invalid command!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Below are the available commands and formats to follow!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"1. To view all your current task: list\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"2. To add new task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" a. todos: todo \u003ctask\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" b. deadlines: deadline \u003ctask\u003e /by \u003cdeadline\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" c. event: Event \u003cevent\u003e /from \u003cstartdate, starttiming\u003e /to \u003cenddate, endtiming\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"3. To delete a task: delete \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"4. To mark task as completed: mark \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"5. To unmark completed task: unmark \u003ctask number\u003e\");","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"6. To exit program: bye\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"Zack-Tay"},"content":" public enum commands {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Zack-Tay"},"content":" list, todo, deadline, event, mark, unmark, delete, bye","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"Zack-Tay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Zack-Tay"},"content":" ArrayList\u003cTask\u003e list \u003d loadList();","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Zack-Tay"},"content":" Scanner in \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"Zack-Tay"},"content":" // ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Zack-Tay"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"Zack-Tay"},"content":" greeting(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"Zack-Tay"},"content":" boolean loop \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Zack-Tay"},"content":" while (loop) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"Zack-Tay"},"content":" String s \u003d in.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Zack-Tay"},"content":" String[] split \u003d s.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"Zack-Tay"},"content":" String first \u003d split[0].toLowerCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"Zack-Tay"},"content":" switch (first) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Zack-Tay"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"Zack-Tay"},"content":" Task t1 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"Zack-Tay"},"content":" t1.setDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t1.printTask(t1.getType(), t1.getDone(), t1.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"Zack-Tay"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"Zack-Tay"},"content":" Task t2 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"Zack-Tay"},"content":" t2.setUndone();","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t2.printTask(t2.getType(), t2.getDone(), t2.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"Zack-Tay"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"Zack-Tay"},"content":" String single \u003d list.size() \u003c\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"Zack-Tay"},"content":" Task t2 \u003d list.get(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"Zack-Tay"},"content":" list.remove(Integer.parseInt(split[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t2.printTask(t2.getType(), t2.getDone(), t2.getTask()));","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"Zack-Tay"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"You only have \" + list.size() + \" \" + single + \" currently. Type \\\"list\\\" to view all your current \" + single);","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Now you have \" + list.size() + \" \" + single + \" in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"Zack-Tay"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"Zack-Tay"},"content":" loop \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"Zack-Tay"},"content":" case \"\":","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"Zack-Tay"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"Zack-Tay"},"content":" if (list.size() \u003e 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"Zack-Tay"},"content":" Task.printList(list);","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"Zack-Tay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"Zack-Tay"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"Zack-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"Zack-Tay"},"content":" if (split.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"Zack-Tay"},"content":" String res \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"Zack-Tay"},"content":" switch (first) {","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"Zack-Tay"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"T\";","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"Zack-Tay"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"E\";","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"Zack-Tay"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"Zack-Tay"},"content":" res \u003d \"D\";","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"Zack-Tay"},"content":" int startInd1 \u003d s.indexOf(\"/by\");","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"Zack-Tay"},"content":" int startInd2 \u003d s.indexOf(\"/from\");","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"Zack-Tay"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"Zack-Tay"},"content":" String ss \u003d s.substring(first.length() + 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"Zack-Tay"},"content":" if (startInd2 \u003d\u003d -1 \u0026\u0026 startInd1 \u003d\u003d -1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(ss, res, false);","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"Zack-Tay"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"Zack-Tay"},"content":" DateTimeFormatter[] formats \u003d new DateTimeFormatter[] {","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Zack-Tay"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"Zack-Tay"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"Zack-Tay"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"Zack-Tay"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"Zack-Tay"},"content":" if (startInd1 !\u003d -1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"Zack-Tay"},"content":" // dl \u003d deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"Zack-Tay"},"content":" String spl1 \u003d s.substring(startInd1 + 4);","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"Zack-Tay"},"content":" LocalDateTime deadline \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Zack-Tay"},"content":" for (DateTimeFormatter format : formats) {","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Zack-Tay"},"content":" deadline \u003d LocalDateTime.parse(spl1, format);","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Zack-Tay"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"Zack-Tay"},"content":" /** if (deadline !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, hh:mm a\")));","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"Zack-Tay"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Failed to parse date\");","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Zack-Tay"},"content":" } **/","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"Zack-Tay"},"content":" String dl \u003d s.substring(first.length() + 1, startInd1) + \"(\" + s.substring(startInd1 + 1, startInd1 + 3) + \": \" + deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, hh:mm a\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(dl, res, false, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"Zack-Tay"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"Zack-Tay"},"content":" // e \u003d event","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"Zack-Tay"},"content":" int startTo \u003d s.indexOf(\"/to\");","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"Zack-Tay"},"content":" String from \u003d s.substring(startInd2 + 6, startTo - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"Zack-Tay"},"content":" String to \u003d s.substring(startTo + 4);","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"Zack-Tay"},"content":" LocalDateTime duefrom \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"Zack-Tay"},"content":" LocalDateTime dueto \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Zack-Tay"},"content":" for (DateTimeFormatter format : formats) {","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"Zack-Tay"},"content":" duefrom \u003d LocalDateTime.parse(from, format);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"Zack-Tay"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Zack-Tay"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"Zack-Tay"},"content":" dueto \u003d LocalDateTime.parse(to, format);","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"Zack-Tay"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"Zack-Tay"},"content":" String e \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"Zack-Tay"},"content":" if (dueto !\u003d null \u0026\u0026 duefrom !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"Zack-Tay"},"content":" e \u003d s.substring(first.length() + 1, startInd2) +","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"Zack-Tay"},"content":" \"(\" + s.substring(startInd2 + 1, startInd2 + 5) + \": \" + duefrom.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, hh:mm a\")) + \" \" + s.substring(startTo + 1, startTo + 3) +","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"Zack-Tay"},"content":" \": \" + dueto.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, hh:mm a\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"Zack-Tay"},"content":" newTask \u003d new Task(e, res, false, duefrom, dueto);","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"Zack-Tay"},"content":" list.add(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"Zack-Tay"},"content":" String t \u003d newTask.printTask(res, false, newTask.getTask());","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"Zack-Tay"},"content":" // String task \u003d \" [\" + res + \"]\" + \"[] \" + s.substring(first.length() + 1, s.length());","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + t);","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"Zack-Tay"},"content":" String single1 \u003d list.size() \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\"Now you have \" + list.size() + \" \" + single1 + \" in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":250,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":251,"author":{"gitId":"Zack-Tay"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":252,"author":{"gitId":"Zack-Tay"},"content":" listOfCommands();","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"Zack-Tay"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"Zack-Tay"},"content":" // TODO","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"Zack-Tay"},"content":" updateFile(list);","lastModifiedDate":"2024-01-28"},{"lineNumber":257,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"Zack-Tay"},"content":" in.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"Zack-Tay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Zack-Tay":260}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":" private String task, type;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":" private LocalDateTime deadline, to;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":" private LocalDateTime deadline2;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":" public Task(String task, String type, boolean isDone) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Zack-Tay"},"content":" public Task(String task, String type, boolean isDone, LocalDateTime deadline, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Zack-Tay"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Zack-Tay"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Zack-Tay"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Zack-Tay"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Zack-Tay"},"content":" public Task(String task, String type, boolean isDone, LocalDateTime deadline2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Zack-Tay"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Zack-Tay"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Zack-Tay"},"content":" this.deadline2 \u003d deadline2;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Zack-Tay"},"content":" public void setDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Zack-Tay"},"content":" public void setUndone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Zack-Tay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Zack-Tay"},"content":" public boolean getDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Zack-Tay"},"content":" return this.isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Zack-Tay"},"content":" public String getType() {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Zack-Tay"},"content":" return this.type;","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Zack-Tay"},"content":" public String getTask() {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Zack-Tay"},"content":" return this.task;","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"Zack-Tay"},"content":" public static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Zack-Tay"},"content":" for (int i \u003d 1; i \u003c\u003d list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Zack-Tay"},"content":" Task currtask \u003d list.get(i-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Zack-Tay"},"content":" String s \u003d i + \". \" + \"[\" + currtask.type + \"][\" + (currtask.isDone ? \"X\" : \"\") + \"]\" + \" \" + currtask.task;","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"Zack-Tay"},"content":" System.out.println(\" \" + s);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"Zack-Tay"},"content":" public String printTask(String type, boolean isDone, String task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Zack-Tay"},"content":" return \"[\" + type + \"][\" + (isDone ? \"X\" : \"\") + \"]\" + \" \" + task;","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"Zack-Tay"},"content":" public void deleteTask(int index, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"Zack-Tay"},"content":" Task task \u003d list.get(index-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"Zack-Tay"},"content":" list.remove(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"Zack-Tay"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"Zack-Tay"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Zack-Tay":59}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Zack-Tay"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Zack-Tay"},"content":"event Badminton /from Tues 8pm /to 9pm","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Zack-Tay"},"content":"todo Laundry","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Zack-Tay"},"content":"deadline Homework /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Zack-Tay"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Zack-Tay"},"content":"deadline Homework /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Zack-Tay"},"content":"deadline Essay /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Zack-Tay"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Zack-Tay"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Zack-Tay"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Zack-Tay"},"content":"list","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Zack-Tay":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":"Zack-Tay"},"content":"java -classpath ..\\bin Fredricksen \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"Zack-Tay":1,"-":20}}] diff --git a/Zack-Tay_ip_master/commits.json b/Zack-Tay_ip_master/commits.json index 5d784ef0..75829c4a 100644 --- a/Zack-Tay_ip_master/commits.json +++ b/Zack-Tay_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Zack-Tay":[{"date":"2024-01-24","commitResults":[{"hash":"f2f92fb071d4a1086d55aa95ebb90c1b32d04313","isMergeCommit":false,"messageTitle":"Add Fredricksen.java and completed level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}}]},{"date":"2024-01-25","commitResults":[{"hash":"7606a0b556e10f587755aa4e510f5efb26d2a6e2","isMergeCommit":false,"messageTitle":"Add echo and bye commands to Fredricksen.java and completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"188ab8896ce04d0d41868302e08864aadd159c2f","isMergeCommit":false,"messageTitle":"add add task to list feature to Fredricksen.java","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}},{"hash":"c2ce2e7dea168475c6047854dfbac07c238a407f","isMergeCommit":false,"messageTitle":"add mark as done for task in Fredicksen.java Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"6b0252807ec955ea626c4d963bde1ecbae90b303","isMergeCommit":false,"messageTitle":"created new Task.java to encapsulate each Task and completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":33}}},{"hash":"242d024e9944ae85d553b171a9ac107b708f023b","isMergeCommit":false,"messageTitle":"add testcases for Fredricksen.java and completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"3cf667372c423356ebdb9f6ab9fbad48fcf48278","isMergeCommit":false,"messageTitle":"add error message for some invalid inputs to Fredricksen.java and completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":10}}},{"hash":"7043f833a694e1f095844248fa6396a84f94863a","isMergeCommit":false,"messageTitle":"add delete task feature to Fredricksen.java and completed Leve;-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":5}}},{"hash":"b44f793de433812b93cbbc35e3983fb4962f8c55","isMergeCommit":false,"messageTitle":"add enum for list of commands for Fredricksen.java and Completed A-enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"80c5eceba7a775584fe7958ff4ba176a10ec4674","isMergeCommit":false,"messageTitle":"Add loadlist and updateList and completed Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":2}}},{"hash":"6fdf442c10d3a478735f1e125a401e661e917390","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Zack-Tay":{"java":253,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":13}},"authorContributionVariance":{"Zack-Tay":10288.959},"authorDisplayNameMap":{"Zack-Tay":"CS2103T-T09-4 TAY .. KAI"}} +{"authorDailyContributionsMap":{"Zack-Tay":[{"date":"2024-01-24","commitResults":[{"hash":"f2f92fb071d4a1086d55aa95ebb90c1b32d04313","isMergeCommit":false,"messageTitle":"Add Fredricksen.java and completed level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}}]},{"date":"2024-01-25","commitResults":[{"hash":"7606a0b556e10f587755aa4e510f5efb26d2a6e2","isMergeCommit":false,"messageTitle":"Add echo and bye commands to Fredricksen.java and completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"188ab8896ce04d0d41868302e08864aadd159c2f","isMergeCommit":false,"messageTitle":"add add task to list feature to Fredricksen.java","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}},{"hash":"c2ce2e7dea168475c6047854dfbac07c238a407f","isMergeCommit":false,"messageTitle":"add mark as done for task in Fredicksen.java Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"6b0252807ec955ea626c4d963bde1ecbae90b303","isMergeCommit":false,"messageTitle":"created new Task.java to encapsulate each Task and completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":33}}},{"hash":"242d024e9944ae85d553b171a9ac107b708f023b","isMergeCommit":false,"messageTitle":"add testcases for Fredricksen.java and completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"3cf667372c423356ebdb9f6ab9fbad48fcf48278","isMergeCommit":false,"messageTitle":"add error message for some invalid inputs to Fredricksen.java and completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":10}}},{"hash":"7043f833a694e1f095844248fa6396a84f94863a","isMergeCommit":false,"messageTitle":"add delete task feature to Fredricksen.java and completed Leve;-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":5}}},{"hash":"b44f793de433812b93cbbc35e3983fb4962f8c55","isMergeCommit":false,"messageTitle":"add enum for list of commands for Fredricksen.java and Completed A-enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"80c5eceba7a775584fe7958ff4ba176a10ec4674","isMergeCommit":false,"messageTitle":"Add loadlist and updateList and completed Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":2}}},{"hash":"6fdf442c10d3a478735f1e125a401e661e917390","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"e109dd679c34e672dcd62620f3eb6dc44472edca","isMergeCommit":false,"messageTitle":"Add DateTime feature and Completed Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":73,"deletions":7}}},{"hash":"09100332d06b432f11f0a406c065c77364722439","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Zack-Tay":{"java":319,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":13}},"authorContributionVariance":{"Zack-Tay":8841.0},"authorDisplayNameMap":{"Zack-Tay":"CS2103T-T09-4 TAY .. KAI"}} diff --git a/appleraincoat_ip_master/authorship.json b/appleraincoat_ip_master/authorship.json index 0d1e80ad..56c5d85c 100644 --- a/appleraincoat_ip_master/authorship.json +++ b/appleraincoat_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/Ypxmm.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"T | 0 | eat","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"D | 0 | level 9 hmwk | 03-02-2024 2359","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"E | 0 | bros dinner | 29-01-2024 1900 to 29-01-2024 2000","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"appleraincoat":3}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public enum Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" LIST {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" ui.printList(tasklist.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" MARK {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" task.markTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" ui.markMessage(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to mark.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" UNMARK {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" task.unmarkTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" ui.unmarkMessage(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to unmark.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" TODO {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" DEADLINE {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(parsed.get(1).trim(), parsed.get(2).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" EVENT {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(parsed.get(1).trim(), parsed.get(2).trim(), parsed.get(3).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" GETCOMMANDS {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":" ui.getCommands();","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"appleraincoat"},"content":" DELETE {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"appleraincoat"},"content":" tasklist.deleteTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"appleraincoat"},"content":" ui.deleteTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to delete.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"appleraincoat"},"content":" BYE {","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"appleraincoat"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"appleraincoat"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"appleraincoat"},"content":" //should never reach here as all invalid inputs will be handled","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"appleraincoat"},"content":" //in parse method in Parser class","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":125}},{"path":"src/main/java/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class DateTimeParser {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeFormatter formatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public DateTimeParser() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" public LocalDateTime parseDateTime(String timeString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" return LocalDateTime.parse(timeString, this.formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":13}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime byWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeParser dateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public Deadline(String name, String byWhenString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" this.dateTimeParser \u003d new DateTimeParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" this.byWhen \u003d this.dateTimeParser.parseDateTime(byWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" return \"[D]\" + super.toString() + \" (by: \" + byWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" return \"D | \" + super.toWrite() + \" | \" + byWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":23}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime fromWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime toWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeParser dateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" public Event(String name, String fromWhenString, String toWhenString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" this.dateTimeParser \u003d new DateTimeParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.fromWhen \u003d this.dateTimeParser.parseDateTime(fromWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" this.toWhen \u003d this.dateTimeParser.parseDateTime(toWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" return \"[E]\" + super.toString() + \" (from: \" + fromWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" + \" to: \" + toWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" return \"E | \" + super.toWrite() + \" | \" + fromWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\")) +","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" \" to \" + toWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":27}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public static ArrayList\u003cString\u003e parse(String input) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cString\u003e parsedResult \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" String command \u003d splitInput[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" case \"bye\", \"list\", \"getcommands\":","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in mark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to mark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in unmark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to unmark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"todo \");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" if (info[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"deadline \")[1].isBlank() || info[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[0].substring(9).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Check that u got key in the deadline lehhh\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"event \")[1].isBlank() || info[1].isBlank() || info[2].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[0].substring(6).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[2].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh brother last warning ah. Check that u got key in the start and end time\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in delete \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to delete if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Sorry bro, idk what that means. You try type in \\\"getcommands\\\" then see if got what u want.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":93}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" public String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public void appendToFile(String textToAppend) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(file, true); // create a FileWriter in append mode","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" fw.write(textToAppend + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" public void reWrite(TaskList tasklist) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasklist.tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" fw.write(t.toWrite() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" public ArrayList\u003cTask\u003e load() throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" String[] line \u003d s.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" if (line[0].equals(\"T\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(line[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(line[2], line[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"E\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" String[] timing \u003d line[3].split(\" to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(line[2], timing[0], timing[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" file.delete();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Wah bro your file is corrupted leh...I help you delete first\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":79}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":" protected String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" protected boolean completed;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" //constructor","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public void markTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public void setCompleted() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"1\" : \"0\") + \" | \" + name;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + name;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":36}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" public ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public void addTask(ArrayList\u003cString\u003e input, Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" if (input.get(0).equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } else if (input.get(0).equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" String t \u003d tasks.get(index - 1).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" (tasks.isEmpty() ? \"no tasks to delete.\" : tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":54}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" return \"T | \" + super.toWrite();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":16}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" public void sayHello() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Hello, I\u0027m Ypxmm.\\nNeed me do what for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" public void showLine() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"-----------------------------------\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" \"---------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" public void getCommands() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Take note ah, enter all time based commands are in \u003cdd-mm-yyyy HHmm\u003e format\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" \" todo \u003ctask\u003e - adds todo\\n deadline \u003ctask\u003e/\u003cby when\u003e - adds deadline\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" \" event \u003ctask\u003e/\u003cfrom when\u003e/\u003cto when\u003e - adds event\\n list - lists out all tasks\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" \" mark \u003cx\u003e - marks task x as done\\n unmark \u003cx\u003e - unmarks task x as undone\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" \" bye - exit\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" public void printList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"No tasks yet la bro\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok wait ah, here are your tasks:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" System.out.println(count + \". \" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" public void addTaskMessage(Task task, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok I help you add this one liao:\\n\" + task.toString() +","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" \"\\nNow your list got \" + tasklist.tasks.size() + ((tasklist.tasks.size() \u003d\u003d 1) ? \" task.\" : \" tasks.\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" public void deleteTaskMessage(Task task, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok deleted liao:\\n\" + task.toString() + \"\\nNow your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks.\" : tasklist.tasks.size() + \" tasks left.\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" public void markMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Upz la, mark for you already!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" public void unmarkMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Eh wake up your idea, faster finish can or not?? Unmark for you already la!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" public void sayGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Oh you need zao alr? Okok see you next time!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":69}},{"path":"src/main/java/Ypxmm.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"public class Ypxmm {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" public Ypxmm(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" ui.sayHello();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cString\u003e parsed \u003d Parser.parse(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" Command command \u003d Command.valueOf(parsed.get(0).toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" command.execute(tasks, ui, storage, parsed);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" if (command.equals(Command.BYE)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" public static void main(String[] args) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" new Ypxmm(\"/data/Ypxmm.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":53}},{"path":"src/main/java/YpxmmException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"public class YpxmmException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":" public YpxmmException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"appleraincoat":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"mark t","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"unmark y","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"todo eat","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"deadline homework /","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"deadline homework /5pm","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /6pm","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"delete 4","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"delete y","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"zzz","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"getcommands","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":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":"appleraincoat"},"content":"java -classpath ..\\bin Ypxmm \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"appleraincoat":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":"appleraincoat"},"content":" mainClass.set(\"Main.Ypxmm\")","lastModifiedDate":"2024-01-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":{"-":41,"appleraincoat":1}},{"path":"data/Ypxmm.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"T | 0 | eat","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"D | 0 | level 9 hmwk | 03-02-2024 2359","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"E | 0 | bros dinner | 29-01-2024 1900 to 29-01-2024 2000","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"appleraincoat":3}},{"path":"src/main/java/Commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"import Utilities.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"import Exceptions.YpxmmException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"public enum Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" LIST {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" ui.printList(tasklist.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" MARK {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" task.markTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" ui.markMessage(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to mark.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" UNMARK {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" task.unmarkTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" ui.unmarkMessage(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to unmark.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" TODO {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" DEADLINE {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(parsed.get(1).trim(), parsed.get(2).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" EVENT {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(parsed.get(1).trim(), parsed.get(2).trim(), parsed.get(3).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" tasklist.addTask(parsed, task);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" storage.appendToFile(task.toWrite());","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":" ui.addTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"appleraincoat"},"content":" GETCOMMANDS {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"appleraincoat"},"content":" ui.getCommands();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"appleraincoat"},"content":" DELETE {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(parsed.get(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d tasklist.tasks.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"appleraincoat"},"content":" tasklist.deleteTask(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"appleraincoat"},"content":" storage.reWrite(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"appleraincoat"},"content":" ui.deleteTaskMessage(task, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks to delete.\" : tasklist.tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasklist.tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" },","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"appleraincoat"},"content":" BYE {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"appleraincoat"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"appleraincoat"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"appleraincoat"},"content":" public void execute(TaskList tasklist, Ui ui, Storage storage, ArrayList\u003cString\u003e parsed) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"appleraincoat"},"content":" //should never reach here as all invalid inputs will be handled","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"appleraincoat"},"content":" //in parse method in Parser class","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":136}},{"path":"src/main/java/Exceptions/YpxmmException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"public class YpxmmException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" public YpxmmException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"appleraincoat":7}},{"path":"src/main/java/Main/Ypxmm.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Main;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import Commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import Parsing.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import Utilities.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"import Utilities.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"import Utilities.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"import Exceptions.YpxmmException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"public class Ypxmm {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" public Ypxmm(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" ui.sayHello();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cString\u003e parsed \u003d Parser.parse(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" Command command \u003d Command.valueOf(parsed.get(0).toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" command.execute(tasks, ui, storage, parsed);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" if (command.equals(Command.BYE)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" public static void main(String[] args) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" new Ypxmm(\"/data/Ypxmm.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":53}},{"path":"src/main/java/Parsing/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Parsing;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"public class DateTimeParser {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeFormatter formatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" public DateTimeParser() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" public LocalDateTime parseDateTime(String timeString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" return LocalDateTime.parse(timeString, this.formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":15}},{"path":"src/main/java/Parsing/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Parsing;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Exceptions.YpxmmException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public static ArrayList\u003cString\u003e parse(String input) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cString\u003e parsedResult \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" String command \u003d splitInput[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" case \"bye\", \"list\", \"getcommands\":","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in mark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to mark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in unmark \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to unmark if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"todo \");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" if (info[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"deadline \")[1].isBlank() || info[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[0].substring(9).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You trying to test my patience ah? Check that u got key in the deadline lehhh\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" String[] info \u003d input.split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" if (info[0].split(\"event \")[1].isBlank() || info[1].isBlank() || info[2].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Help la, can just tell me what is the name of your task anot?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[0].substring(6).trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(info[2].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh brother last warning ah. Check that u got key in the start and end time\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" \"Type \\\"get commands\\\" if u blur and dunno how to use me properly.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" int index \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" parsedResult.add(splitInput[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" return parsedResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, key in delete \u003cspace\u003e then a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":" } catch (NumberFormatException n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"You tell me now what task am I supposed to delete if you don\u0027t provide me with a number?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Sorry bro, idk what that means. You try type in \\\"getcommands\\\" then see if got what u want.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":94}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Parsing.DateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime byWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeParser dateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" public Deadline(String name, String byWhenString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" this.dateTimeParser \u003d new DateTimeParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" this.byWhen \u003d this.dateTimeParser.parseDateTime(byWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" return \"[D]\" + super.toString() + \" (by: \" + byWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" return \"D | \" + super.toWrite() + \" | \" + byWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":27}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Parsing.DateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime fromWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" protected LocalDateTime toWhen;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" protected DateTimeParser dateTimeParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public Event(String name, String fromWhenString, String toWhenString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" this.dateTimeParser \u003d new DateTimeParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" this.fromWhen \u003d this.dateTimeParser.parseDateTime(fromWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" this.toWhen \u003d this.dateTimeParser.parseDateTime(toWhenString);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" return \"[E]\" + super.toString() + \" (from: \" + fromWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" + \" to: \" + toWhen.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" return \"E | \" + super.toWrite() + \" | \" + fromWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\")) +","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" \" to \" + toWhen.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":31}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":" protected String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" protected boolean completed;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" //constructor","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public void markTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public void setCompleted() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" return (completed ? \"1\" : \"0\") + \" | \" + name;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + name;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":38}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public String toWrite() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" return \"T | \" + super.toWrite();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":18}},{"path":"src/main/java/Utilities/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Exceptions.YpxmmException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" public void appendToFile(String textToAppend) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(file, true); // create a FileWriter in append mode","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" fw.write(textToAppend + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" public void reWrite(TaskList tasklist) throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasklist.tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" fw.write(t.toWrite() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" public ArrayList\u003cTask\u003e load() throws YpxmmException {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" String[] line \u003d s.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":" if (line[0].equals(\"T\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new ToDo(line[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Deadline(line[2], line[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" } else if (line[0].equals(\"E\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" String[] timing \u003d line[3].split(\" to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" Task task \u003d new Event(line[2], timing[0], timing[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" if (line[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" task.setCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"appleraincoat"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"IOException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"appleraincoat"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":" file.delete();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Wah bro your file is corrupted leh...I help you delete first\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":86}},{"path":"src/main/java/Utilities/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Exceptions.YpxmmException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" public ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" public void addTask(ArrayList\u003cString\u003e input, Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" if (input.get(0).equals(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" } else if (input.get(0).equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" try{","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Brother, follow format can or not? Enter dates in dd-mm-yyyy HHmm (24-08-2024 1800)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" String t \u003d tasks.get(index - 1).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" throw new YpxmmException(\"Eh u seh isit? Now your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" (tasks.isEmpty() ? \"no tasks to delete.\" : tasks.size() +","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" \" tasks, enter any number from 1 to \" + tasks.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" } catch (YpxmmException y) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" System.out.println(y.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":54}},{"path":"src/main/java/Utilities/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"package Utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" public void sayHello() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Hello, I\u0027m Ypxmm.\\nNeed me do what for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" public void showLine() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"-----------------------------------\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":" \"---------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" public void getCommands() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Take note ah, enter all time based commands are in \u003cdd-mm-yyyy HHmm\u003e format\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"appleraincoat"},"content":" \" todo \u003ctask\u003e - adds todo\\n deadline \u003ctask\u003e/\u003cby when\u003e - adds deadline\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" \" event \u003ctask\u003e/\u003cfrom when\u003e/\u003cto when\u003e - adds event\\n list - lists out all tasks\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" \" mark \u003cx\u003e - marks task x as done\\n unmark \u003cx\u003e - unmarks task x as undone\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" \" bye - exit\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" public void printList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"No tasks yet la bro\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok wait ah, here are your tasks:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" System.out.println(count + \". \" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" public void addTaskMessage(Task task, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok I help you add this one liao:\\n\" + task.toString() +","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" \"\\nNow your list got \" + tasklist.tasks.size() + ((tasklist.tasks.size() \u003d\u003d 1) ? \" task.\" : \" tasks.\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" public void deleteTaskMessage(Task task, TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Ok deleted liao:\\n\" + task.toString() + \"\\nNow your list got \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" (tasklist.tasks.isEmpty() ? \"no tasks.\" : tasklist.tasks.size() + \" tasks left.\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" public void markMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Upz la, mark for you already!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" public void unmarkMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Eh wake up your idea, faster finish can or not?? Unmark for you already la!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" public void sayGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" System.out.println(\"Oh you need zao alr? Okok see you next time!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"appleraincoat":71}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"appleraincoat"},"content":"mark t","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"appleraincoat"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"unmark y","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"appleraincoat"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":"todo eat","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"deadline homework /","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"deadline homework /5pm","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"event dinner /5pm /6pm","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"delete 4","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"delete y","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"zzz","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"getcommands","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"appleraincoat":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":"appleraincoat"},"content":"java -classpath ..\\bin Ypxmm \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"appleraincoat":1}}] diff --git a/appleraincoat_ip_master/commits.json b/appleraincoat_ip_master/commits.json index 619b6e03..5e58c77d 100644 --- a/appleraincoat_ip_master/commits.json +++ b/appleraincoat_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"appleraincoat":[{"date":"2024-01-24","commitResults":[{"hash":"7b7c9116e31eba52d9b99a5d02a58d814721c0c8","isMergeCommit":false,"messageTitle":"Added chatbot Ypxmm, with only simple greetings before exiting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"301514198e0c45709c3a0c0605cc68736cfe9a52","isMergeCommit":false,"messageTitle":"Added the ability to echo messages, exiting on input \"bye\".","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"853403d4e6436a88595bd004a0b59df5368745f3","isMergeCommit":false,"messageTitle":"Removed ability to echo, keeps a lsit of inputs now and prints it upon request.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"5dd07de207755da3675ca3431bdd21e5f3991562","isMergeCommit":false,"messageTitle":"Abstracted a Task class.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"c4997f86cf293bbd2785a509ac8307df94419def","isMergeCommit":false,"messageTitle":"Add and extend 3 types of Tasks, Deadline, Event and Todo. Add static methods into main class to abstract out further.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":14}}},{"hash":"436fb0c4dffc3ce39b71dee8293dfdaf30bb874a","isMergeCommit":false,"messageTitle":"Add some simple test cases for semi-automated testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":2},"bat":{"insertions":1,"deletions":1}}},{"hash":"6ad583d035115ea7ad5613caab675016719ad026","isMergeCommit":false,"messageTitle":"Add handling of invalid input for mark and unmark methods.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"7d8af053ce1e8b334bbc9bd36e92f117a7edc7e2","isMergeCommit":false,"messageTitle":"Add YpxmmException class. Able to handle invalid inputs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":51}}},{"hash":"239f76baef9cc0af555d8e14e659ec00ab6b0cc3","isMergeCommit":false,"messageTitle":"Add more exception handling features.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"1fd8acb5402a648f6f1849d1af0da08bdd54eaea","isMergeCommit":false,"messageTitle":"Add test cases for error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":5}}},{"hash":"70fc418c2ef05d445951aed3fa80864ceec8f362","isMergeCommit":false,"messageTitle":"Add delete function.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":2}}},{"hash":"157f0c497ff797f3677dcdcedcecc7ca486f634f","isMergeCommit":false,"messageTitle":"Add new test cases.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"6ce2e148e446a0e26ad3b1d270901785e93a8771","isMergeCommit":false,"messageTitle":"Add Enum class for commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"cba57607a4f94db49337525247091a41b9928bd0","isMergeCommit":false,"messageTitle":"Add enums, and change implementation to use them in a switch statement. Add 1 more catch for illegal argument exception. Add more test cases.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":6},"java":{"insertions":69,"deletions":66}}}]},{"date":"2024-01-28","commitResults":[{"hash":"596f5dbf5cc2ff9cfebd6f92bdafe43c8f4e8498","isMergeCommit":false,"messageTitle":"Change import statements in Ypxmm.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-29","commitResults":[{"hash":"a78bfed5020264c8c93afeeb140b0feaacbe091b","isMergeCommit":false,"messageTitle":"Add ability to save tasks to a file in hard disk, and load from it when initialise.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":123,"deletions":0}}},{"hash":"21b1149b18864ffaa994040823b99e181075d9cf","isMergeCommit":false,"messageTitle":"Add trimming when initialising tasks.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"825f1e9fdff8aa9339dcda229ec93abd8dd05941","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"cbc1fbc38e2bdd263da2e125d9edd292669ef698","isMergeCommit":false,"messageTitle":"Change byWhen variable in Deadline class to store in LocalDateTime format.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":10,"deletions":3}}},{"hash":"1e0213e96c828563208d7c718aaaf1aea725a9b7","isMergeCommit":false,"messageTitle":"Change Deadline and Event class to store timing with LocalDateTime type, adjust formatting to be consistent.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":23,"deletions":14}}},{"hash":"4c28cb3b0c0016d7ded86aa94edd82eee20db2b3","isMergeCommit":false,"messageTitle":"Modify getcommands command to suit the change in format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":5,"deletions":4}}},{"hash":"696d08e5824f83ae3967559379f4f0b2b65dd9fa","isMergeCommit":false,"messageTitle":"Add a catch for DateTimeParseException if the user inputs in the wrong format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"49255cd0b1928bd41d91a3a17b5d9b8268ddf06d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"7ea8744afe39a8887d405e7c2e3d17fe286c6781","isMergeCommit":false,"messageTitle":"Refactor code. Rename EnumCommands to Command, add Parser, Storage, Ui, TaskList classes.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":441,"deletions":289}}},{"hash":"4ee5530812003ce55649fa4d20019a6d651e7f7b","isMergeCommit":false,"messageTitle":"Small bug fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"854391b613101ec18d8e3f404a58deda59eb8c34","isMergeCommit":false,"messageTitle":"Add DateTImeParser class that parses format of time in Deadline and Event classes. Add other small modifications to UI output.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":15}}},{"hash":"4237fc396670b957ee9a2b206d9af9f1c6011ed4","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"appleraincoat":{"java":593,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":23}},"authorContributionVariance":{"appleraincoat":53907.5},"authorDisplayNameMap":{"appleraincoat":"CS2103T-W10-1 LAU ..AMES"}} +{"authorDailyContributionsMap":{"appleraincoat":[{"date":"2024-01-24","commitResults":[{"hash":"7b7c9116e31eba52d9b99a5d02a58d814721c0c8","isMergeCommit":false,"messageTitle":"Added chatbot Ypxmm, with only simple greetings before exiting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"301514198e0c45709c3a0c0605cc68736cfe9a52","isMergeCommit":false,"messageTitle":"Added the ability to echo messages, exiting on input \"bye\".","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"853403d4e6436a88595bd004a0b59df5368745f3","isMergeCommit":false,"messageTitle":"Removed ability to echo, keeps a lsit of inputs now and prints it upon request.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"5dd07de207755da3675ca3431bdd21e5f3991562","isMergeCommit":false,"messageTitle":"Abstracted a Task class.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"c4997f86cf293bbd2785a509ac8307df94419def","isMergeCommit":false,"messageTitle":"Add and extend 3 types of Tasks, Deadline, Event and Todo. Add static methods into main class to abstract out further.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":14}}},{"hash":"436fb0c4dffc3ce39b71dee8293dfdaf30bb874a","isMergeCommit":false,"messageTitle":"Add some simple test cases for semi-automated testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":1,"deletions":2},"bat":{"insertions":1,"deletions":1}}},{"hash":"6ad583d035115ea7ad5613caab675016719ad026","isMergeCommit":false,"messageTitle":"Add handling of invalid input for mark and unmark methods.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"7d8af053ce1e8b334bbc9bd36e92f117a7edc7e2","isMergeCommit":false,"messageTitle":"Add YpxmmException class. Able to handle invalid inputs.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":51}}},{"hash":"239f76baef9cc0af555d8e14e659ec00ab6b0cc3","isMergeCommit":false,"messageTitle":"Add more exception handling features.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"1fd8acb5402a648f6f1849d1af0da08bdd54eaea","isMergeCommit":false,"messageTitle":"Add test cases for error handling.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":5}}},{"hash":"70fc418c2ef05d445951aed3fa80864ceec8f362","isMergeCommit":false,"messageTitle":"Add delete function.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":2}}},{"hash":"157f0c497ff797f3677dcdcedcecc7ca486f634f","isMergeCommit":false,"messageTitle":"Add new test cases.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"6ce2e148e446a0e26ad3b1d270901785e93a8771","isMergeCommit":false,"messageTitle":"Add Enum class for commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"cba57607a4f94db49337525247091a41b9928bd0","isMergeCommit":false,"messageTitle":"Add enums, and change implementation to use them in a switch statement. Add 1 more catch for illegal argument exception. Add more test cases.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":6},"java":{"insertions":69,"deletions":66}}}]},{"date":"2024-01-28","commitResults":[{"hash":"596f5dbf5cc2ff9cfebd6f92bdafe43c8f4e8498","isMergeCommit":false,"messageTitle":"Change import statements in Ypxmm.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}}]},{"date":"2024-01-29","commitResults":[{"hash":"a78bfed5020264c8c93afeeb140b0feaacbe091b","isMergeCommit":false,"messageTitle":"Add ability to save tasks to a file in hard disk, and load from it when initialise.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":123,"deletions":0}}},{"hash":"21b1149b18864ffaa994040823b99e181075d9cf","isMergeCommit":false,"messageTitle":"Add trimming when initialising tasks.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"825f1e9fdff8aa9339dcda229ec93abd8dd05941","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"cbc1fbc38e2bdd263da2e125d9edd292669ef698","isMergeCommit":false,"messageTitle":"Change byWhen variable in Deadline class to store in LocalDateTime format.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":10,"deletions":3}}},{"hash":"1e0213e96c828563208d7c718aaaf1aea725a9b7","isMergeCommit":false,"messageTitle":"Change Deadline and Event class to store timing with LocalDateTime type, adjust formatting to be consistent.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":23,"deletions":14}}},{"hash":"4c28cb3b0c0016d7ded86aa94edd82eee20db2b3","isMergeCommit":false,"messageTitle":"Modify getcommands command to suit the change in format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":5,"deletions":4}}},{"hash":"696d08e5824f83ae3967559379f4f0b2b65dd9fa","isMergeCommit":false,"messageTitle":"Add a catch for DateTimeParseException if the user inputs in the wrong format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"49255cd0b1928bd41d91a3a17b5d9b8268ddf06d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"7ea8744afe39a8887d405e7c2e3d17fe286c6781","isMergeCommit":false,"messageTitle":"Refactor code. Rename EnumCommands to Command, add Parser, Storage, Ui, TaskList classes.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":441,"deletions":289}}},{"hash":"4ee5530812003ce55649fa4d20019a6d651e7f7b","isMergeCommit":false,"messageTitle":"Small bug fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"854391b613101ec18d8e3f404a58deda59eb8c34","isMergeCommit":false,"messageTitle":"Add DateTImeParser class that parses format of time in Deadline and Event classes. Add other small modifications to UI output.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":15}}},{"hash":"4237fc396670b957ee9a2b206d9af9f1c6011ed4","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"5eef11a0ddf3907d9fd70a7848f5feda44f43849","isMergeCommit":false,"messageTitle":"Package all classes into their respective packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":20}}},{"hash":"5d28dd8ed96ff6f2d05f85e6fdd14a0dfefb4d32","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"b3957d71dcb3ef355c731fc8409ff3273ac45b7b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"62ebd8dee67baca2fc798412801e6c1415b47d2d","isMergeCommit":false,"messageTitle":"Fix small error in build.gradle.","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":0,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"appleraincoat":{"java":630,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":23}},"authorContributionVariance":{"appleraincoat":63089.188},"authorDisplayNameMap":{"appleraincoat":"CS2103T-W10-1 LAU ..AMES"}} diff --git a/archive.zip b/archive.zip index 681cb3cf..3f89073b 100644 Binary files a/archive.zip and b/archive.zip differ diff --git a/aureliony_ip_master/authorship.json b/aureliony_ip_master/authorship.json index d37249ed..ac871aad 100644 --- a/aureliony_ip_master/authorship.json +++ b/aureliony_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":"aureliony"},"content":" mainClass.set(\"ConvoBot\")","lastModifiedDate":"2024-01-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":{"aureliony":1,"-":41}},{"path":"src/main/java/ConvoBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"import commands.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import utils.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"public class ConvoBot {","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" private final UI ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" public ConvoBot(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" tasks \u003d new TaskList(new Storage(filePath));","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" ui \u003d new UI();","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" ui.showWelcomeMsg();","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" while (true) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" String userInput \u003d ui.readUserInput();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" Command c;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" c \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" if (c.isExit()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" ui.showHorizontalLine(false);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" ui.showHorizontalLine(false);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" ui.showHorizontalLine(true);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" continue;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" c.execute(tasks, ui);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" } finally {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" ui.showHorizontalLine(true);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" ui.showExitMsg();","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" new ConvoBot(\"./data/tasks.txt\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"aureliony":45}},{"path":"src/main/java/commands/Add.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Add implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private final Task task;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" public Add(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" ui.showAdded(task.toString(), taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":22}},{"path":"src/main/java/commands/Bye.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"public class Bye implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" return;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":14}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public interface Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) throws ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" public boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":10}},{"path":"src/main/java/commands/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"public enum CommandType {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" BYE,","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" LIST,","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" MARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" UNMARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" DELETE,","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" TODO,","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" DEADLINE,","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" EVENT","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":12}},{"path":"src/main/java/commands/Delete.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Delete implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" public Delete(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" taskList.delete(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" ui.showRemoved(taskList.getTaskString(i), taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":22}},{"path":"src/main/java/commands/List.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"public class List implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" ui.showTaskList(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":14}},{"path":"src/main/java/commands/Mark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Mark implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" public Mark(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" taskList.mark(i, true);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" ui.showMarked(taskList.getTaskString(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":22}},{"path":"src/main/java/commands/Unmark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Unmark implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" public Unmark(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" taskList.mark(i, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" ui.showUnmarked(taskList.getTaskString(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":22}},{"path":"src/main/java/exceptions/ConvoBotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"public class ConvoBotException extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" public ConvoBotException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" super();","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" public ConvoBotException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" public ConvoBotException(String message, Throwable cause) {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" super(message, cause);","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":15}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.DateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" this(description, false, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public Deadline(String description, boolean isDone, LocalDate by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" return \"D | \" + super.toFile() + \" | \" + DateTime.dateToFile(this.by);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateTime.dateToString(this.by) + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":28}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.DateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private LocalDate from;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" private LocalDate to;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" this(description, false, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" public Event(String description, boolean isDone, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" return \"E | \" + super.toFile() + \" | \" + DateTime.dateToFile(this.from) + \" | \" + DateTime.dateToFile(this.to);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" return \"[E]\" + super.toString() + \" (from: \" + DateTime.dateToString(this.from) + \" to: \" + DateTime.dateToString(this.to) + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":30}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" private String description;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" this(description, false);","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" return (this.isDone ? \"1\" : \"0\") + \" | \" + this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":40}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" this(description, false);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" return \"T | \" + super.toFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":21}},{"path":"src/main/java/utils/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"public class DateTime {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" private static final DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" private static final DateTimeFormatter displayFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" public static String dateToString(LocalDate d) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" return d.format(displayFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" public static String dateToFile(LocalDate d) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" return d.format(inputFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" public static LocalDate stringToDate(String s) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" LocalDate d;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" d \u003d LocalDate.parse(s, inputFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong date format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" return d;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":30}},{"path":"src/main/java/utils/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import commands.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import tasks.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public static Command parseUserInput(String userInput) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" ArrayList\u003cString\u003e inputList \u003d new ArrayList\u003c\u003e(Arrays.asList(userInput.split(\" \")));","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" if (inputList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Input must not be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" CommandType commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" commandType \u003d CommandType.valueOf(inputList.get(0).toUpperCase());","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Input must be one of: bye, list, mark, unmark, delete, todo, deadline, event.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" Command command \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" int i \u003d -1, j \u003d -1, k \u003d -1;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" case BYE:","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" command \u003d new Bye();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" case LIST:","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" command \u003d new List();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" case MARK:","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" command \u003d new Mark(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" case UNMARK:","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" command \u003d new Unmark(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" case DELETE:","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" command \u003d new Delete(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" case TODO:","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" if (userInput.length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new ToDo(userInput.substring(5)));","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" j \u003d inputList.indexOf(\"/by\");","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d -1 || j \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Start date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" description \u003d String.join(\" \", inputList.subList(1, j));","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" String by \u003d String.join(\" \", inputList.subList(j+1, inputList.size()));","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new Deadline(description, DateTime.stringToDate(by)));","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":" case EVENT:","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":" j \u003d inputList.indexOf(\"/from\");","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" k \u003d inputList.indexOf(\"/to\");","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d 1 || k \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d -1 || j \u003d\u003d inputList.size() - 1 || inputList.get(j+1).equals(\"/to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Start date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" if (k \u003d\u003d -1 || k \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. End date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" description \u003d String.join(\" \", inputList.subList(1, j));","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" String from \u003d String.join(\" \", inputList.subList(j+1, k));","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" String to \u003d String.join(\" \", inputList.subList(k+1, inputList.size()));","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new Event(description, DateTime.stringToDate(from), DateTime.stringToDate(to)));","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":" // impossible to reach","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" return command;","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":" public static Task parseTaskFromLine(String line) throws IllegalArgumentException {","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"aureliony"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"aureliony"},"content":" if (parts.length \u003c 3 || parts.length \u003e 5) {","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"aureliony"},"content":" boolean isDone \u003d (parts[1] \u003d\u003d \"1\" ? true : false);","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"aureliony"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"aureliony"},"content":" Task task;","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"aureliony"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"aureliony"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"aureliony"},"content":" task \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"aureliony"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"aureliony"},"content":" task \u003d new Deadline(description, isDone, DateTime.stringToDate(parts[3]));","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"aureliony"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"aureliony"},"content":" task \u003d new Event(description, isDone, DateTime.stringToDate(parts[3]), DateTime.stringToDate(parts[4]));","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"aureliony"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"aureliony"},"content":" return task;","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":143}},{"path":"src/main/java/utils/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.nio.file.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" private final String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" public ArrayList\u003cTask\u003e read() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" Files.createDirectories(Paths.get(filePath).getParent());","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" String line;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" reader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" return taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" public void write(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath));","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" writer.write(task.toFile());","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" writer.newLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" writer.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":47}},{"path":"src/main/java/utils/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" private Storage db;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" public TaskList(Storage db) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" this.db \u003d db;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" taskList \u003d db.read();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" db.write(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" public void mark(int i, boolean isDone) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" Task task \u003d taskList.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" public String getTaskString(int i) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" return taskList.get(i).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" public void delete(int i) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" taskList.remove(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" db.write(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" return taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":56}},{"path":"src/main/java/utils/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"public class UI {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" private final String LEFT_PADDING \u003d \" \";","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" public UI() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" public String readUserInput() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" public void showHorizontalLine(boolean newline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" if (newline) System.out.println();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" public void showWelcomeMsg() {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" showHorizontalLine(false);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" Hello! I\u0027m ConvoBot\");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" What can I do for you?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" showHorizontalLine(true);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public void showExitMsg() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" showHorizontalLine(false);","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" showHorizontalLine(true);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + \"Here are the tasks in your list:\"); ","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" int index \u003d i+1;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + Integer.toString(index)","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" + \".\" + tasks.getTaskString(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" public void showAdded(String taskString, int dbSize) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + taskString);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" Now you have \" + Integer.toString(dbSize) + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" public void showRemoved(String taskString, int dbSize) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + taskString);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" Now you have \" + Integer.toString(dbSize) + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" public void showMarked(String taskString) {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + taskString);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" public void showUnmarked(String taskString) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + taskString);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" public void showError(String errorMsg) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + errorMsg);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":75}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"todo read book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"deadline return book /by 2023-12-01","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"event project meeting /from 2023-12-15 /to 2023-12-20","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"todo join sports club","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"mark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"deadline return book /by 2024-01-10","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"event project meeting /from 2024-01-15 /to 2024-01-20","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":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":"aureliony"},"content":"java -classpath ..\\bin ConvoBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"aureliony":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":"aureliony"},"content":"java -classpath ../bin ConvoBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"aureliony":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":"aureliony"},"content":" testImplementation group: \u0027org.mockito\u0027, name: \u0027mockito-core\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-01-30"},{"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":"aureliony"},"content":" mainClass.set(\"ConvoBot\")","lastModifiedDate":"2024-01-28"},{"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":"aureliony"},"content":" archiveBaseName \u003d \"convobot\"","lastModifiedDate":"2024-01-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":{"aureliony":3,"-":40}},{"path":"src/main/java/ConvoBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"import commands.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import utils.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"public class ConvoBot {","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" private final UI ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" public ConvoBot(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" tasks \u003d new TaskList(new Storage(filePath));","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" ui \u003d new UI();","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" ui.showWelcomeMsg();","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" while (true) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" String userInput \u003d ui.readUserInput();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" Command c;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" c \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" if (c.isExit()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" ui.showHorizontalLine(false);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" ui.showHorizontalLine(false);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" ui.showHorizontalLine(true);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" continue;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" c.execute(tasks, ui);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" } finally {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" ui.showHorizontalLine(true);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" ui.showExitMsg();","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" new ConvoBot(\"./data/tasks.txt\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"aureliony":45}},{"path":"src/main/java/commands/Add.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Add implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private final Task task;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" public Add(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" ui.showAdded(task.toString(), taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":22}},{"path":"src/main/java/commands/Bye.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"public class Bye implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" return;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":14}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public interface Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) throws ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" public boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":10}},{"path":"src/main/java/commands/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"public enum CommandType {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" BYE,","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" LIST,","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" MARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" UNMARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" DELETE,","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" TODO,","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" DEADLINE,","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" EVENT","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":12}},{"path":"src/main/java/commands/Delete.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Delete implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" public Delete(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" taskList.delete(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" ui.showRemoved(taskList.getTaskString(i), taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":22}},{"path":"src/main/java/commands/List.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"public class List implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" ui.showTaskList(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":14}},{"path":"src/main/java/commands/Mark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Mark implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" public Mark(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" taskList.mark(i, true);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" ui.showMarked(taskList.getTaskString(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":22}},{"path":"src/main/java/commands/Unmark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.UI;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Unmark implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" public Unmark(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, UI ui) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" taskList.mark(i, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" ui.showUnmarked(taskList.getTaskString(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":22}},{"path":"src/main/java/exceptions/ConvoBotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"public class ConvoBotException extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" public ConvoBotException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" super();","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" public ConvoBotException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" public ConvoBotException(String message, Throwable cause) {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" super(message, cause);","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":15}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.DateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" this(description, false, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public Deadline(String description, boolean isDone, LocalDate by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" return \"D | \" + super.toFile() + \" | \" + DateTime.dateToFile(this.by);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateTime.dateToString(this.by) + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":28}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.DateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" private LocalDate from;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" private LocalDate to;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" this(description, false, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" public Event(String description, boolean isDone, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" return \"E | \" + super.toFile() + \" | \" + DateTime.dateToFile(this.from) + \" | \" + DateTime.dateToFile(this.to);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" return \"[E]\" + super.toString() + \" (from: \" + DateTime.dateToString(this.from) + \" to: \" + DateTime.dateToString(this.to) + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":30}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" private String description;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" this(description, false);","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" public boolean getIsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" return isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" return (this.isDone ? \"1\" : \"0\") + \" | \" + this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":44}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" this(description, false);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" return \"T | \" + super.toFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":21}},{"path":"src/main/java/utils/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"public class DateTime {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" private static final DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" private static final DateTimeFormatter displayFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" public static String dateToString(LocalDate d) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" return d.format(displayFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" public static String dateToFile(LocalDate d) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" return d.format(inputFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" public static LocalDate stringToDate(String s) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" LocalDate d;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" d \u003d LocalDate.parse(s, inputFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong date format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" return d;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":30}},{"path":"src/main/java/utils/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import commands.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import tasks.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public static Command parseUserInput(String userInput) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" ArrayList\u003cString\u003e inputList \u003d new ArrayList\u003c\u003e(Arrays.asList(userInput.split(\" \")));","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" if (inputList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Input must not be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" CommandType commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" commandType \u003d CommandType.valueOf(inputList.get(0).toUpperCase());","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Input must be one of: bye, list, mark, unmark, delete, todo, deadline, event.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" Command command \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" int i \u003d -1, j \u003d -1, k \u003d -1;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" case BYE:","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" command \u003d new Bye();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" case LIST:","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" command \u003d new List();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" case MARK:","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" command \u003d new Mark(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" case UNMARK:","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" command \u003d new Unmark(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" case DELETE:","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" command \u003d new Delete(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" case TODO:","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" if (userInput.length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new ToDo(userInput.substring(5)));","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" j \u003d inputList.indexOf(\"/by\");","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d -1 || j \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Start date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" description \u003d String.join(\" \", inputList.subList(1, j));","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" String by \u003d String.join(\" \", inputList.subList(j+1, inputList.size()));","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new Deadline(description, DateTime.stringToDate(by)));","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":" case EVENT:","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":" j \u003d inputList.indexOf(\"/from\");","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" k \u003d inputList.indexOf(\"/to\");","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d 1 || k \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d -1 || j \u003d\u003d inputList.size() - 1 || inputList.get(j+1).equals(\"/to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Start date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" if (k \u003d\u003d -1 || k \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. End date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" description \u003d String.join(\" \", inputList.subList(1, j));","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" String from \u003d String.join(\" \", inputList.subList(j+1, k));","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" String to \u003d String.join(\" \", inputList.subList(k+1, inputList.size()));","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new Event(description, DateTime.stringToDate(from), DateTime.stringToDate(to)));","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":" // impossible to reach","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" return command;","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":" public static Task parseTaskFromLine(String line) throws IllegalArgumentException {","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"aureliony"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"aureliony"},"content":" if (parts.length \u003c 3 || parts.length \u003e 5) {","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"aureliony"},"content":" boolean isDone \u003d (parts[1].equals(\"1\") ? true : false);","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"aureliony"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"aureliony"},"content":" Task task;","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"aureliony"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"aureliony"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"aureliony"},"content":" task \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"aureliony"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"aureliony"},"content":" task \u003d new Deadline(description, isDone, DateTime.stringToDate(parts[3]));","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"aureliony"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"aureliony"},"content":" task \u003d new Event(description, isDone, DateTime.stringToDate(parts[3]), DateTime.stringToDate(parts[4]));","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"aureliony"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"aureliony"},"content":" return task;","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":143}},{"path":"src/main/java/utils/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.io.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.nio.file.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" private final String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" public ArrayList\u003cTask\u003e read() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" Files.createDirectories(Paths.get(filePath).getParent());","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" String line;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" reader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" return taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" public void write(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath));","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" writer.write(task.toFile());","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" writer.newLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" writer.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":47}},{"path":"src/main/java/utils/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" private Storage db;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" public TaskList(Storage db) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" this.db \u003d db;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" taskList \u003d db.read();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" db.write(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" public void mark(int i, boolean isDone) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" Task task \u003d taskList.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" public String getTaskString(int i) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" return taskList.get(i).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" public void delete(int i) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" taskList.remove(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" db.write(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" return taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":56}},{"path":"src/main/java/utils/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"public class UI {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" private final String LEFT_PADDING \u003d \" \";","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" public UI() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" public String readUserInput() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" public void showHorizontalLine(boolean newline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" if (newline) System.out.println();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" public void showWelcomeMsg() {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" showHorizontalLine(false);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" Hello! I\u0027m ConvoBot\");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" What can I do for you?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" showHorizontalLine(true);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public void showExitMsg() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" showHorizontalLine(false);","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" showHorizontalLine(true);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + \"Here are the tasks in your list:\"); ","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" int index \u003d i+1;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + Integer.toString(index)","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" + \".\" + tasks.getTaskString(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" public void showAdded(String taskString, int dbSize) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + taskString);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" Now you have \" + Integer.toString(dbSize) + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" public void showRemoved(String taskString, int dbSize) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + \"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + taskString);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" Now you have \" + Integer.toString(dbSize) + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" public void showMarked(String taskString) {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + taskString);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" public void showUnmarked(String taskString) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + taskString);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" public void showError(String errorMsg) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" System.out.println(LEFT_PADDING + \" \" + errorMsg);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":75}},{"path":"src/test/java/ConvoBotTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"public class ConvoBotTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" private ConvoBot convoBot;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" @BeforeEach","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" public void setUp() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" convoBot \u003d new ConvoBot(\"./data/test_tasks.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" // TODO: Add JUnit tests","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":14}},{"path":"src/test/java/utils/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import commands.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import tasks.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import utils.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" void parseUserInputByeCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"bye\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Bye);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" void parseUserInputListCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"list\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof List);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" void parseUserInputMarkCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"mark 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Mark);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" void parseUserInputUnmarkCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"unmark 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Unmark);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" void parseUserInputDeleteCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"delete 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Delete);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" void parseUserInputTodoCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"todo Read a book\";","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Add);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" void parseUserInputDeadlineCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"deadline Finish project /by 2024-02-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Add);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" void parseUserInputEventCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"event Team meeting /from 2024-02-01 /to 2024-02-02\";","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Add);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" void parseUserInputInvalidCommand_invalidCommand_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"invalidCommand\";","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e Parser.parseUserInput(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" void parseUserInputInvalidArguments_invalidArguments_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"mark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e Parser.parseUserInput(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" void parseUserInputEmptyInput_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e Parser.parseUserInput(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineTodo_validInput_taskParsedSuccessfully() throws IllegalArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" String line \u003d \"T | 0 | Read a book\";","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" assertTrue(task instanceof ToDo);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" assertFalse(task.getIsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" assertEquals(\"Read a book\", task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineDeadline_validInput_taskParsedSuccessfully() throws IllegalArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" String line \u003d \"D | 1 | Finish project | 2024-02-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":" assertTrue(task instanceof Deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" assertTrue(task.getIsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" assertEquals(\"Finish project\", task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineEvent_validInput_taskParsedSuccessfully() throws IllegalArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" String line \u003d \"E | 0 | Team meeting | 2024-02-01 | 2024-02-02\";","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":" assertTrue(task instanceof Event);","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" assertFalse(task.getIsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":" assertEquals(\"Team meeting\", task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineInvalidFormat_invalidFormat_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" String line \u003d \"Invalid Format\";","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Parser.parseTaskFromLine(line));","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":116}},{"path":"src/test/java/utils/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import org.mockito.Mockito;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" @BeforeEach","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" void setUp() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" storage \u003d Mockito.mock(Storage.class);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" void unitBeingTested_addTask_singleTaskAdded() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" void unitBeingTested_markTaskAsDone_taskMarkedAsDone() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" taskList.mark(0, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" assertTrue(task.getIsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" void unitBeingTested_getTaskString_validTaskIndex_taskStringReturned() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" String taskString \u003d taskList.getTaskString(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" assertEquals(\"[ ] Sample Task\", taskString);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" void unitBeingTested_deleteTask_validTaskIndex_taskDeleted() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" taskList.delete(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" assertEquals(0, taskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" void unitBeingTested_markTaskAsDone_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.mark(-1, true));","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.mark(10, true));","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" void unitBeingTested_getTaskString_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.getTaskString(-1));","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.getTaskString(10));","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" void unitBeingTested_deleteTask_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.delete(-1));","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.delete(10));","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":73}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"todo read book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"deadline return book /by 2023-12-01","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"event project meeting /from 2023-12-15 /to 2023-12-20","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"todo join sports club","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"mark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"deadline return book /by 2024-01-10","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"event project meeting /from 2024-01-15 /to 2024-01-20","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":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":"aureliony"},"content":"java -classpath ..\\bin ConvoBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"aureliony":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":"aureliony"},"content":"java -classpath ../bin ConvoBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"aureliony":1,"-":37}}] diff --git a/aureliony_ip_master/commits.json b/aureliony_ip_master/commits.json index cdd882e9..2a158ce6 100644 --- a/aureliony_ip_master/commits.json +++ b/aureliony_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"aureliony":[{"date":"2024-01-22","commitResults":[{"hash":"36cc380517d018a197c70952c4fdcc84a95d00b0","isMergeCommit":false,"messageTitle":"Implement Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":10}}},{"hash":"a5e288e72e1684b67691d1d979cfa69fdd67b7c4","isMergeCommit":false,"messageTitle":"Refactor welcome and exit strings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"b6abddde7d9ecff810445e66e64623246f779968","isMergeCommit":false,"messageTitle":"Refactor welcome and exit strings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"a0151dc301c637d96a83f77945b72605f9584d67","isMergeCommit":false,"messageTitle":"Refactor welcome and exit strings into functions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":9}}},{"hash":"ae7d644e144f44db2ab0f94f9b58e6378a873133","isMergeCommit":false,"messageTitle":"Implement Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":7}}},{"hash":"c4d40bf5a328a20d640abb6db32beba6987beec1","isMergeCommit":false,"messageTitle":"Implement Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"ddd1a6d86ec782d49093adb12056909c20169a3e","isMergeCommit":false,"messageTitle":"Implement Level-3 and A-Classes","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":5}}},{"hash":"f6512d4cf1ffcc66052c463bbc0ce4779d1499a6","isMergeCommit":false,"messageTitle":"Implement Level-4 and A-Inheritance","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":13}}},{"hash":"e7e7915c684169dd5aaf1d6eab9627bc4ec85ba2","isMergeCommit":false,"messageTitle":"Implement A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"7025cede5668b20113ff069657feb4b6d524b2fa","isMergeCommit":false,"messageTitle":"Implement Level-5 and A-Exceptions","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":42}}},{"hash":"b2f51595d1f33d35c6b71ffb05c80de8ba6807af","isMergeCommit":false,"messageTitle":"Implement Level-6 and A-Collections","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":13}}},{"hash":"fc8fe9040807636347d37bca69593578c9c75980","isMergeCommit":false,"messageTitle":"Refactor delete operation","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":21}}}]},{"date":"2024-01-27","commitResults":[{"hash":"a33de4ae1ddb44f48f9efc70b2c8ccace2822871","isMergeCommit":false,"messageTitle":"Update runtest.bat to match new chatbot name","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":1}}},{"hash":"69210d2da6ece34758af5373786bb8ea6b1b545e","isMergeCommit":false,"messageTitle":"Change constant variable name to match conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":18}}},{"hash":"37bebe929760c5f3a4b59bf6dc1bb868e7b51ece","isMergeCommit":false,"messageTitle":"Implement Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":28}}},{"hash":"8f929209a9f2614854d374297c4688caa6f03721","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"ecef04621f05323e54dd950ae3873c1240fbd2cb","isMergeCommit":false,"messageTitle":"Implement Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":55,"deletions":25}}},{"hash":"2cc350fe9ce5ba22922518f8b047678c1ea3c1cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"6c4ac952ea6846b146c99e57105f943dfd4d3703","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP and A-Packages","messageBody":"","tags":["A-Packages","A-MoreOOP","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":537,"deletions":257},"bat":{"insertions":1,"deletions":1}}},{"hash":"317e30d979f99532126cddcfd823e3b1954fee40","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4732f1fc63caa39091ab9dc4a28a92ba96fa7a3a","isMergeCommit":false,"messageTitle":"Implement A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"64da7e947ecf3c1b7f839ee7374b6ccf574da650","isMergeCommit":false,"messageTitle":"Make several variables private","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"aureliony":{"java":668,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":11}},"authorContributionVariance":{"aureliony":72836.81},"authorDisplayNameMap":{"aureliony":"CS2103T-W12-3 LEON.. YEW"}} +{"authorDailyContributionsMap":{"aureliony":[{"date":"2024-01-22","commitResults":[{"hash":"36cc380517d018a197c70952c4fdcc84a95d00b0","isMergeCommit":false,"messageTitle":"Implement Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":10}}},{"hash":"a5e288e72e1684b67691d1d979cfa69fdd67b7c4","isMergeCommit":false,"messageTitle":"Refactor welcome and exit strings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"b6abddde7d9ecff810445e66e64623246f779968","isMergeCommit":false,"messageTitle":"Refactor welcome and exit strings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"a0151dc301c637d96a83f77945b72605f9584d67","isMergeCommit":false,"messageTitle":"Refactor welcome and exit strings into functions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":9}}},{"hash":"ae7d644e144f44db2ab0f94f9b58e6378a873133","isMergeCommit":false,"messageTitle":"Implement Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":7}}},{"hash":"c4d40bf5a328a20d640abb6db32beba6987beec1","isMergeCommit":false,"messageTitle":"Implement Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"ddd1a6d86ec782d49093adb12056909c20169a3e","isMergeCommit":false,"messageTitle":"Implement Level-3 and A-Classes","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":5}}},{"hash":"f6512d4cf1ffcc66052c463bbc0ce4779d1499a6","isMergeCommit":false,"messageTitle":"Implement Level-4 and A-Inheritance","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":13}}},{"hash":"e7e7915c684169dd5aaf1d6eab9627bc4ec85ba2","isMergeCommit":false,"messageTitle":"Implement A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"7025cede5668b20113ff069657feb4b6d524b2fa","isMergeCommit":false,"messageTitle":"Implement Level-5 and A-Exceptions","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":42}}},{"hash":"b2f51595d1f33d35c6b71ffb05c80de8ba6807af","isMergeCommit":false,"messageTitle":"Implement Level-6 and A-Collections","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":13}}},{"hash":"fc8fe9040807636347d37bca69593578c9c75980","isMergeCommit":false,"messageTitle":"Refactor delete operation","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":21}}}]},{"date":"2024-01-27","commitResults":[{"hash":"a33de4ae1ddb44f48f9efc70b2c8ccace2822871","isMergeCommit":false,"messageTitle":"Update runtest.bat to match new chatbot name","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":1}}},{"hash":"69210d2da6ece34758af5373786bb8ea6b1b545e","isMergeCommit":false,"messageTitle":"Change constant variable name to match conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":18}}},{"hash":"37bebe929760c5f3a4b59bf6dc1bb868e7b51ece","isMergeCommit":false,"messageTitle":"Implement Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":28}}},{"hash":"8f929209a9f2614854d374297c4688caa6f03721","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"ecef04621f05323e54dd950ae3873c1240fbd2cb","isMergeCommit":false,"messageTitle":"Implement Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":55,"deletions":25}}},{"hash":"2cc350fe9ce5ba22922518f8b047678c1ea3c1cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"6c4ac952ea6846b146c99e57105f943dfd4d3703","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP and A-Packages","messageBody":"","tags":["A-Packages","A-MoreOOP","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":537,"deletions":257},"bat":{"insertions":1,"deletions":1}}},{"hash":"317e30d979f99532126cddcfd823e3b1954fee40","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4732f1fc63caa39091ab9dc4a28a92ba96fa7a3a","isMergeCommit":false,"messageTitle":"Implement A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"64da7e947ecf3c1b7f839ee7374b6ccf574da650","isMergeCommit":false,"messageTitle":"Make several variables private","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}}]},{"date":"2024-01-30","commitResults":[{"hash":"9e28028acc9f795d62e8b72632b0931ec652cd6d","isMergeCommit":false,"messageTitle":"Implement A-JUnit and A-Libraries","messageBody":"","tags":["A-Libraries","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":208,"deletions":1}}},{"hash":"df495ac247b10441b04b5d40539c85193e38c78e","isMergeCommit":false,"messageTitle":"Implement A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"aureliony":{"java":875,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":3,"txt":11}},"authorContributionVariance":{"aureliony":63015.02},"authorDisplayNameMap":{"aureliony":"CS2103T-W12-3 LEON.. YEW"}} diff --git a/bachletuankhai_ip_master/authorship.json b/bachletuankhai_ip_master/authorship.json index c249167a..eb881b60 100644 --- a/bachletuankhai_ip_master/authorship.json +++ b/bachletuankhai_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"import task.Command;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":"import task.DukeException;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":"import task.InvalidDataFormatException;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":"import task.TaskListParser;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":"import task.UnknownCommandException;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" private static final String chatbotName \u003d \"Sylvia\";","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" private static final String dataFilePath \u003d \"data/duke.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" private static final Path dataPath \u003d Path.of(dataFilePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" private static final String curDir \u003d System.getProperty(\"user.dir\") + System.getProperty(\"file.separator\");","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" public Duke() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" private TaskList list;","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" public void greet() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Hello! I\u0027m \" + chatbotName + \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":" private boolean runCommand(String commandString) {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"bachletuankhai"},"content":" // get the first word of the input","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"bachletuankhai"},"content":" String[] words \u003d commandString.split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"bachletuankhai"},"content":" Command command;","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"bachletuankhai"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"bachletuankhai"},"content":" command \u003d Command.newCommand(words[0], words.length \u003e 1 ? words[1] : \"\");","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"bachletuankhai"},"content":" boolean loopSignal \u003d command.execute(list);","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"bachletuankhai"},"content":" return loopSignal;","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"bachletuankhai"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(e.getBotMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"bachletuankhai"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(e.getBotMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"bachletuankhai"},"content":" return true; // bot should continue running after invalid user input","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"bachletuankhai"},"content":" private TaskList readData() {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Loading data from file \" + curDir + dataPath + \"...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"bachletuankhai"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"bachletuankhai"},"content":" File file \u003d new File(dataFilePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"bachletuankhai"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"bachletuankhai"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"bachletuankhai"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Data loaded successfully!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"bachletuankhai"},"content":" return TaskListParser.parse(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"bachletuankhai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"bachletuankhai"},"content":" \"An error occurred while reading data from file \" + curDir + dataPath + \": \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Sylvia will start with an empty task list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"bachletuankhai"},"content":" return new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"bachletuankhai"},"content":" } catch (InvalidDataFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(e.getBotMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Sylvia will start with an empty task list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"bachletuankhai"},"content":" return new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"bachletuankhai"},"content":" public void run() {","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"bachletuankhai"},"content":" this.list \u003d readData();","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"bachletuankhai"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"bachletuankhai"},"content":" BufferedReader reader \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"bachletuankhai"},"content":" boolean loopSignal \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"bachletuankhai"},"content":" while (loopSignal) {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"bachletuankhai"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"bachletuankhai"},"content":" input \u003d reader.readLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"bachletuankhai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Sorry, something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"bachletuankhai"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"bachletuankhai"},"content":" loopSignal \u003d runCommand(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"bachletuankhai"},"content":" // only write data to file when the bot is about to exit","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"bachletuankhai"},"content":" writeData();","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"bachletuankhai"},"content":" private void writeData() {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"bachletuankhai"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"bachletuankhai"},"content":" TaskListParser.writeToFile(list, new File(dataFilePath));","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"bachletuankhai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"An error occurred while writing data to file \" + System.getProperty(\"user.dir\")","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"bachletuankhai"},"content":" + dataFilePath + \": \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":110,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"bachletuankhai"},"content":" Duke chatbot \u003d new Duke();","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"bachletuankhai"},"content":" chatbot.greet();","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"bachletuankhai"},"content":" chatbot.run();","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"bachletuankhai":111,"-":5}},{"path":"src/main/java/Task/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String body;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" protected Command(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" this.body \u003d body;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" protected String getBody() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" return body;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" public static Command newCommand(String name, String body) throws UnknownCommandException {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" switch (name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" return new MarkCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" return new UnmarkCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" return new TodoCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" return new DeadlineCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":" return new EventCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" return new DeleteCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"bachletuankhai"},"content":" throw new UnknownCommandException(\"Unknown command: \" + name + \" \" + body,","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"bachletuankhai"},"content":" \"I\u0027m sorry, but I don\u0027t know what that means :\u003c\");","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"bachletuankhai"},"content":" abstract public boolean execute(TaskList list) throws DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":39}},{"path":"src/main/java/Task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String dueTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" public Deadline(String description, String due) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" this.dueTime \u003d due;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" public Deadline(String description, String due, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" this.dueTime \u003d due;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" return \"[D]\" + super.toString() + \" (due: \" + dueTime + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" public String serialize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" return \"D | \" + super.serialize() + \" | \" + dueTime; // assuming that the dueTime does not contain \"|\"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":25}},{"path":"src/main/java/Task/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String taskDescription;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" private String dueTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" public DeadlineCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" String[] parts \u003d body.split(\"/by\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" this.taskDescription \u003d parts[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" this.dueTime \u003d parts[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyTaskDescriptionException(\"The description of a deadline cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" \"The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" } else if (dueTime.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyDateTimeException(\"The due time of a deadline cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" \"The due time of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" Task task \u003d new Deadline(taskDescription, dueTime);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" list.addTask(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Added: \" + task + \"\\nYou now have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":27}},{"path":"src/main/java/Task/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public DeleteCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" String body \u003d getBody();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" if (body.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyTaskDescriptionException(\"The description of a delete cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, you need to tell me what you want to delete. I can\u0027t delete nothing.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" int index \u003d Integer.parseInt(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" if (index \u003c 1 || index \u003e list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidTaskIndexException(","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" \"The index of a task cannot be less than 1 or greater than the number of tasks.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, but task number \" + index + \" does not exist. You only have \" + list.size() + \" tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" Task task \u003d list.deleteTask(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Deleted: \" + task + \"\\nYou now have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":24}},{"path":"src/main/java/Task/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String botMessage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" public DukeException(String message, String botMessage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" this.botMessage \u003d botMessage;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" public String getBotMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" return botMessage;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":14}},{"path":"src/main/java/Task/EmptyDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class EmptyDateTimeException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public EmptyDateTimeException(String message, String botMessage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, botMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/EmptyTaskDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class EmptyTaskDescriptionException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public EmptyTaskDescriptionException(String message, String botMessage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, botMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String startTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" private String endTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" public Event(String description, String startTime, String endTime, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" return \"[E]\" + super.toString() + \" (at: \" + startTime + \" - \" + endTime + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" public String serialize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" return \"E | \" + super.serialize() + \" | \" + startTime + \" | \" + endTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":28}},{"path":"src/main/java/Task/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String taskDescription;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" private String startTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" private String endTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public EventCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" String[] parts \u003d body.split(\"/from|/to\", 3);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" this.taskDescription \u003d parts[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" this.startTime \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" this.endTime \u003d parts[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyTaskDescriptionException(\"The description of an event cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" \"The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" } else if (startTime.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyDateTimeException(\"The start time of an event cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" \"The start time of an event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" } else if (endTime.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyDateTimeException(\"The end time of an event cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" \"The end time of an event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" Task task \u003d new Event(taskDescription, startTime, endTime);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" list.addTask(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Added: \" + task + \"\\nYou now have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":32}},{"path":"src/main/java/Task/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public ExitCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Cya!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":12}},{"path":"src/main/java/Task/InvalidDataFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class InvalidDataFormatException extends DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public InvalidDataFormatException(String message, String botMessage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, botMessage);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class InvalidTaskIndexException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public InvalidTaskIndexException(String message, String botMessage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, botMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public ListCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(list.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":12}},{"path":"src/main/java/Task/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public MarkCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" String body \u003d getBody();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" if (body.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidTaskIndexException(\"The index of a task cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, but I don\u0027t know which task you want to mark as done.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" int index \u003d Integer.parseInt(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" if (index \u003c 1 || index \u003e list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidTaskIndexException(","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" \"The index of a task cannot be less than 1 or greater than the number of tasks.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, but task number \" + index + \" does not exist. You only have \" + list.size() + \" tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" list.markTaskAsDone(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Done: \" + list.get(index - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":24}},{"path":"src/main/java/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" private String escapedDescription;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" this.escapedDescription \u003d escapeDescription(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" this.escapedDescription \u003d escapeDescription(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" protected static String escapeDescription(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" return description.replace(\"|\", \"\\\\|\");","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"bachletuankhai"},"content":" String status \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"bachletuankhai"},"content":" return \"[\" + status + \"] \" + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"bachletuankhai"},"content":" public String serialize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"bachletuankhai"},"content":" return (isDone ? \"1\" : \"0\") + \" | \" + escapedDescription;","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":42}},{"path":"src/main/java/Task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"public class TaskList {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" private List\u003cTask\u003e list;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" public TaskList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" public boolean addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" return list.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" return list.remove(index - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" sb.append(i + 1 + \". \" + list.get(i) + \"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" return sb.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" public void markTaskAsDone(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" list.get(index - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"bachletuankhai"},"content":" public void unmarkTaskAsDone(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"bachletuankhai"},"content":" list.get(index - 1).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"bachletuankhai"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"bachletuankhai"},"content":" return list.get(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"bachletuankhai"},"content":" public int size() {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"bachletuankhai"},"content":" return list.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":45}},{"path":"src/main/java/Task/TaskListParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":"public class TaskListParser {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" public static TaskList parse(File file) throws IOException, InvalidDataFormatException {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" String line;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" list.addTask(parseTask(line));","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" reader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" return list;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" private static Task parseTask(String line) throws InvalidDataFormatException {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" String[] words \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" if (words.length \u003c 3)","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidDataFormatException(\"Invalid task format: \" + line, \"Invalid task format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" boolean isDone \u003d words[1].equals(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" return new Todo(words[2], isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" if (words.length \u003c 4)","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidDataFormatException(\"Invalid task format: \" + line, \"Invalid task format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":" return new Deadline(words[2], words[3], isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"bachletuankhai"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"bachletuankhai"},"content":" if (words.length \u003c 5)","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidDataFormatException(\"Invalid task format: \" + line, \"Invalid task format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"bachletuankhai"},"content":" return new Event(words[2], words[3], words[4], isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"bachletuankhai"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidDataFormatException(\"Unknown task type: \" + words[0], \"Unknown task type: \" + words[0]);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"bachletuankhai"},"content":" public static String serialize(TaskList list) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"bachletuankhai"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"bachletuankhai"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"bachletuankhai"},"content":" sb.append(serializeTask(list.get(i)) + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"bachletuankhai"},"content":" return sb.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"bachletuankhai"},"content":" private static String serializeTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"bachletuankhai"},"content":" return task.serialize();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"bachletuankhai"},"content":" // TODO: change to a more efficient method","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"bachletuankhai"},"content":" public static void writeToFile(TaskList list, File file) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"bachletuankhai"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"bachletuankhai"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"bachletuankhai"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"bachletuankhai"},"content":" FileWriter writer \u003d new FileWriter(file, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"bachletuankhai"},"content":" writer.write(serialize(list));","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"bachletuankhai"},"content":" writer.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"bachletuankhai":64}},{"path":"src/main/java/Task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" public String serialize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" return \"T | \" + super.serialize();","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":21}},{"path":"src/main/java/Task/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public TodoCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" String body \u003d getBody();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" if (body.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, you need to tell me what you want to add. I can\u0027t add empty tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" Task task \u003d new Todo(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" list.addTask(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Added: \" + task + \"\\nYou now have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":19}},{"path":"src/main/java/Task/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class UnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public UnknownCommandException(String message, String botMessage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, botMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public UnmarkCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" String body \u003d getBody();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" if (body.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidTaskIndexException(\"The index of a task cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, but I don\u0027t know which task you want to mark as undone.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" int index \u003d Integer.parseInt(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" if (index \u003c 1 || index \u003e list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidTaskIndexException(","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" \"The index of a task cannot be less than 1 or greater than the number of tasks.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, but task number \" + index + \" does not exist. You only have \" + list.size() + \" tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" list.unmarkTaskAsDone(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Undone: \" + list.get(index - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":24}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"todo sleep","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"deadline cs2103 /by 23:59","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"event cs2101 meeting /from 2pm /to 3pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"hi","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"bruh","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"delete 1","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":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":"bachletuankhai"},"content":"# Change the current directory to the directory of this script","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"pushd \"$(dirname \"$0\")\" \u003e/dev/null","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":"if ! F:/Misc/jdk-11.0.17/bin/javac.exe -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"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":25,"author":{"gitId":"bachletuankhai"},"content":"F:/Misc/jdk-11.0.17/bin/java.exe -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"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":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"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"},{"lineNumber":41,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"bachletuankhai"},"content":"# Change back to the original directory","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"bachletuankhai"},"content":"popd \u003e /dev/null","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"bachletuankhai":7,"-":36}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"import task.Command;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":"import task.DukeException;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":"import task.TaskListParser;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":"import task.UnknownCommandException;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" private static final String chatbotName \u003d \"Sylvia\";","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" private static final String dataFilePath \u003d \"data/duke.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" private static final Path dataPath \u003d Path.of(dataFilePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" private static final String curDir \u003d System.getProperty(\"user.dir\") + System.getProperty(\"file.separator\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" public Duke() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" private TaskList list;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" public void greet() {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Hello! I\u0027m \" + chatbotName + \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" private boolean runCommand(String commandString) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":" // get the first word of the input","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"bachletuankhai"},"content":" String[] words \u003d commandString.split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"bachletuankhai"},"content":" Command command;","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"bachletuankhai"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"bachletuankhai"},"content":" command \u003d Command.newCommand(words[0], words.length \u003e 1 ? words[1] : \"\");","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"bachletuankhai"},"content":" boolean loopSignal \u003d command.execute(list);","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"bachletuankhai"},"content":" return loopSignal;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"bachletuankhai"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(e.getBotMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"bachletuankhai"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(e.getBotMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"bachletuankhai"},"content":" return true; // bot should continue running after invalid user input","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"bachletuankhai"},"content":" private TaskList readData() {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Loading data from file \" + curDir + dataPath + \"...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"bachletuankhai"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"bachletuankhai"},"content":" File file \u003d new File(dataFilePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"bachletuankhai"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"bachletuankhai"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"bachletuankhai"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Data loaded successfully!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"bachletuankhai"},"content":" return TaskListParser.parse(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"bachletuankhai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"bachletuankhai"},"content":" \"An error occurred while reading data from file \" + curDir + dataPath + \": \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Sylvia will start with an empty task list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"bachletuankhai"},"content":" return new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"bachletuankhai"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(e.getBotMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Sylvia will start with an empty task list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"bachletuankhai"},"content":" return new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"bachletuankhai"},"content":" public void run() {","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"bachletuankhai"},"content":" this.list \u003d readData();","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"bachletuankhai"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"bachletuankhai"},"content":" BufferedReader reader \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"bachletuankhai"},"content":" boolean loopSignal \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"bachletuankhai"},"content":" while (loopSignal) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"bachletuankhai"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"bachletuankhai"},"content":" input \u003d reader.readLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"bachletuankhai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Sorry, something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"bachletuankhai"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"bachletuankhai"},"content":" loopSignal \u003d runCommand(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"bachletuankhai"},"content":" // only write data to file when the bot is about to exit","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"bachletuankhai"},"content":" writeData();","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"bachletuankhai"},"content":" private void writeData() {","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"bachletuankhai"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"bachletuankhai"},"content":" TaskListParser.writeToFile(list, new File(dataFilePath));","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"bachletuankhai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"An error occurred while writing data to file \" + System.getProperty(\"user.dir\")","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"bachletuankhai"},"content":" + dataFilePath + \": \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":109,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"bachletuankhai"},"content":" Duke chatbot \u003d new Duke();","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"bachletuankhai"},"content":" chatbot.greet();","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"bachletuankhai"},"content":" chatbot.run();","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"bachletuankhai":110,"-":5}},{"path":"src/main/java/Task/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String body;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" protected Command(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" this.body \u003d body;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" protected String getBody() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" return body;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" public static Command newCommand(String name, String body) throws UnknownCommandException {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" switch (name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" return new MarkCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" return new UnmarkCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" return new TodoCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" return new DeadlineCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":" return new EventCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" return new DeleteCommand(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"bachletuankhai"},"content":" throw new UnknownCommandException(\"Unknown command: \" + name + \" \" + body,","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"bachletuankhai"},"content":" \"I\u0027m sorry, but I don\u0027t know what that means :\u003c\");","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"bachletuankhai"},"content":" abstract public boolean execute(TaskList list) throws DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":39}},{"path":"src/main/java/Task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private TaskDateTime dueTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" public Deadline(String description, String due) throws DukeDateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" this.dueTime \u003d new TaskDateTime(due);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" public Deadline(String description, String due, boolean isDone) throws DukeDateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" this.dueTime \u003d new TaskDateTime(due);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" return \"[D]\" + super.toString() + \" (due: \" + dueTime + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" public String serialize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" return \"D | \" + super.serialize() + \" | \" + dueTime.serialize(); // assuming that the dueTime does not contain","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" // \"|\"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":26}},{"path":"src/main/java/Task/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String taskDescription;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" private String dueTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" public DeadlineCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" String[] parts \u003d body.split(\"/by\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" this.taskDescription \u003d parts[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" this.dueTime \u003d parts[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyTaskDescriptionException(\"The description of a deadline cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" \"The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" } else if (dueTime.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyDateTimeException(\"The due time of a deadline cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" \"The due time of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" Task task \u003d new Deadline(taskDescription, dueTime);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" list.addTask(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Added: \" + task + \"\\nYou now have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":27}},{"path":"src/main/java/Task/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public DeleteCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" String body \u003d getBody();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" if (body.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyTaskDescriptionException(\"The description of a delete cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, you need to tell me what you want to delete. I can\u0027t delete nothing.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" int index \u003d Integer.parseInt(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" if (index \u003c 1 || index \u003e list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidTaskIndexException(","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" \"The index of a task cannot be less than 1 or greater than the number of tasks.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, but task number \" + index + \" does not exist. You only have \" + list.size() + \" tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" Task task \u003d list.deleteTask(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Deleted: \" + task + \"\\nYou now have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":24}},{"path":"src/main/java/Task/DukeDateTimeParseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class DukeDateTimeParseException extends DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public DukeDateTimeParseException(String message, String response) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, response);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String botMessage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" public DukeException(String message, String botMessage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" this.botMessage \u003d botMessage;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" public String getBotMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" return botMessage;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":14}},{"path":"src/main/java/Task/EmptyDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class EmptyDateTimeException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public EmptyDateTimeException(String message, String botMessage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, botMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/EmptyTaskDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class EmptyTaskDescriptionException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public EmptyTaskDescriptionException(String message, String botMessage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, botMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private TaskDateTime startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" private TaskDateTime endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" public Event(String description, String startTime, String endTime) throws DukeDateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" this.startTime \u003d new TaskDateTime(startTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" this.endTime \u003d new TaskDateTime(endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" public Event(String description, String startTime, String endTime, boolean isDone)","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" throws DukeDateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" this.startTime \u003d new TaskDateTime(startTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" this.endTime \u003d new TaskDateTime(endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" return \"[E]\" + super.toString() + \" (at: \" + startTime + \" - \" + endTime + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" public String serialize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" return \"E | \" + super.serialize() + \" | \" + startTime.serialize() + \" | \" + endTime.serialize();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":29}},{"path":"src/main/java/Task/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String taskDescription;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" private String startTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" private String endTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public EventCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" String[] parts \u003d body.split(\"/from|/to\", 3);","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" this.taskDescription \u003d parts[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" this.startTime \u003d parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" this.endTime \u003d parts[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyTaskDescriptionException(\"The description of an event cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" \"The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" } else if (startTime.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyDateTimeException(\"The start time of an event cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" \"The start time of an event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" } else if (endTime.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" throw new EmptyDateTimeException(\"The end time of an event cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" \"The end time of an event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" Task task \u003d new Event(taskDescription, startTime, endTime);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" list.addTask(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Added: \" + task + \"\\nYou now have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":32}},{"path":"src/main/java/Task/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public ExitCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Cya!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":12}},{"path":"src/main/java/Task/InvalidDataFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class InvalidDataFormatException extends DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public InvalidDataFormatException(String message, String botMessage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, botMessage);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class InvalidTaskIndexException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public InvalidTaskIndexException(String message, String botMessage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, botMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public ListCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(list.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":12}},{"path":"src/main/java/Task/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public MarkCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" String body \u003d getBody();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" if (body.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidTaskIndexException(\"The index of a task cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, but I don\u0027t know which task you want to mark as done.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" int index \u003d Integer.parseInt(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" if (index \u003c 1 || index \u003e list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidTaskIndexException(","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" \"The index of a task cannot be less than 1 or greater than the number of tasks.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, but task number \" + index + \" does not exist. You only have \" + list.size() + \" tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" list.markTaskAsDone(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Done: \" + list.get(index - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":24}},{"path":"src/main/java/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" private String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" private String escapedDescription;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" this.escapedDescription \u003d escapeDescription(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" this.escapedDescription \u003d escapeDescription(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" protected static String escapeDescription(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" return description.replace(\"|\", \"\\\\|\");","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"bachletuankhai"},"content":" String status \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"bachletuankhai"},"content":" return \"[\" + status + \"] \" + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"bachletuankhai"},"content":" public String serialize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"bachletuankhai"},"content":" return (isDone ? \"1\" : \"0\") + \" | \" + escapedDescription;","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":42}},{"path":"src/main/java/Task/TaskDateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"public class TaskDateTime {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" private static final String INPUT_FORMAT \u003d \"yyyy-MM-dd HH:mm\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" private static final DateTimeFormatter INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" private static final DateTimeFormatter OUTPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"EEE, MMM d yyyy HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" public TaskDateTime(String dateTime) throws DukeDateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" this.dateTime \u003d LocalDateTime.parse(dateTime, INPUT_FORMATTER);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" throw new DukeDateTimeParseException(\"Wrong date and time format: \" + dateTime,","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" \"Please enter the date and time in the format: \" + INPUT_FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" return OUTPUT_FORMATTER.format(dateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" public String serialize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" return INPUT_FORMATTER.format(dateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"bachletuankhai":29}},{"path":"src/main/java/Task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"public class TaskList {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":" private List\u003cTask\u003e list;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" public TaskList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" public boolean addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" return list.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" return list.remove(index - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" sb.append(i + 1 + \". \" + list.get(i) + \"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" return sb.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" public void markTaskAsDone(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" list.get(index - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"bachletuankhai"},"content":" public void unmarkTaskAsDone(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"bachletuankhai"},"content":" list.get(index - 1).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"bachletuankhai"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"bachletuankhai"},"content":" return list.get(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"bachletuankhai"},"content":" public int size() {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"bachletuankhai"},"content":" return list.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":45}},{"path":"src/main/java/Task/TaskListParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":"public class TaskListParser {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" public static TaskList parse(File file) throws IOException, InvalidDataFormatException, DukeDateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" String line;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" list.addTask(parseTask(line));","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" reader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" return list;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" private static Task parseTask(String line) throws InvalidDataFormatException, DukeDateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" String[] words \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" if (words.length \u003c 3)","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidDataFormatException(\"Invalid task format: \" + line, \"Invalid task format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"bachletuankhai"},"content":" boolean isDone \u003d words[1].equals(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"bachletuankhai"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":" return new Todo(words[2], isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"bachletuankhai"},"content":" if (words.length \u003c 4)","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidDataFormatException(\"Invalid task format: \" + line, \"Invalid task format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"bachletuankhai"},"content":" return new Deadline(words[2], words[3], isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"bachletuankhai"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"bachletuankhai"},"content":" if (words.length \u003c 5)","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidDataFormatException(\"Invalid task format: \" + line, \"Invalid task format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"bachletuankhai"},"content":" return new Event(words[2], words[3], words[4], isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"bachletuankhai"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidDataFormatException(\"Unknown task type: \" + words[0], \"Unknown task type: \" + words[0]);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"bachletuankhai"},"content":" public static String serialize(TaskList list) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"bachletuankhai"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"bachletuankhai"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"bachletuankhai"},"content":" sb.append(serializeTask(list.get(i)) + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"bachletuankhai"},"content":" return sb.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"bachletuankhai"},"content":" private static String serializeTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"bachletuankhai"},"content":" return task.serialize();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"bachletuankhai"},"content":" public static void writeToFile(TaskList list, File file) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"bachletuankhai"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"bachletuankhai"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"bachletuankhai"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"bachletuankhai"},"content":" FileWriter writer \u003d new FileWriter(file, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"bachletuankhai"},"content":" writer.write(serialize(list));","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"bachletuankhai"},"content":" writer.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"bachletuankhai":63}},{"path":"src/main/java/Task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" public String serialize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" return \"T | \" + super.serialize();","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":21}},{"path":"src/main/java/Task/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public TodoCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" String body \u003d getBody();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" if (body.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, you need to tell me what you want to add. I can\u0027t add empty tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" Task task \u003d new Todo(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" list.addTask(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Added: \" + task + \"\\nYou now have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":19}},{"path":"src/main/java/Task/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class UnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public UnknownCommandException(String message, String botMessage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(message, botMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":7}},{"path":"src/main/java/Task/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"package task;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":" public UnmarkCommand(String body) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":" super(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":" public boolean execute(TaskList list) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":" String body \u003d getBody();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"bachletuankhai"},"content":" if (body.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidTaskIndexException(\"The index of a task cannot be empty.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, but I don\u0027t know which task you want to mark as undone.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"bachletuankhai"},"content":" int index \u003d Integer.parseInt(body);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"bachletuankhai"},"content":" if (index \u003c 1 || index \u003e list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"bachletuankhai"},"content":" throw new InvalidTaskIndexException(","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"bachletuankhai"},"content":" \"The index of a task cannot be less than 1 or greater than the number of tasks.\",","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":" \"Sorry, but task number \" + index + \" does not exist. You only have \" + list.size() + \" tasks.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"bachletuankhai"},"content":" list.unmarkTaskAsDone(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"bachletuankhai"},"content":" System.out.println(\"Undone: \" + list.get(index - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"bachletuankhai"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"bachletuankhai"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"bachletuankhai"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":24}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"bachletuankhai"},"content":"todo sleep","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"bachletuankhai"},"content":"deadline cs2103 /by 2023-09-01 23:59","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"event cs2101 meeting /from 2024-09-12 14:00 /to 2024-09-12 15:00","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"bachletuankhai"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"bachletuankhai"},"content":"hi","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"bachletuankhai"},"content":"bruh","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"bachletuankhai"},"content":"delete 1","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"bachletuankhai"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"bachletuankhai"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"bachletuankhai":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":"bachletuankhai"},"content":"# Change the current directory to the directory of this script","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"bachletuankhai"},"content":"pushd \"$(dirname \"$0\")\" \u003e/dev/null","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"bachletuankhai"},"content":"if ! F:/Misc/jdk-11.0.17/bin/javac.exe -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"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":25,"author":{"gitId":"bachletuankhai"},"content":"F:/Misc/jdk-11.0.17/bin/java.exe -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"bachletuankhai"},"content":"# copy generated data and delete the generated data folder","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"bachletuankhai"},"content":"mv ./data/duke.txt ./OUT-DATA.txt","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"bachletuankhai"},"content":"rm -r ./data","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"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":"bachletuankhai"},"content":" # Change back to the original directory","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"bachletuankhai"},"content":" popd \u003e /dev/null","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"bachletuankhai"},"content":" # Change back to the original directory","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"bachletuankhai"},"content":" popd \u003e /dev/null","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"bachletuankhai"},"content":"","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"bachletuankhai":12,"-":37}}] diff --git a/bachletuankhai_ip_master/commits.json b/bachletuankhai_ip_master/commits.json index e9c3bfaf..d48a0a09 100644 --- a/bachletuankhai_ip_master/commits.json +++ b/bachletuankhai_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"bachletuankhai":[{"date":"2024-01-24","commitResults":[{"hash":"98f0cceae3a7d6f02640996dd90667088ad99a13","isMergeCommit":false,"messageTitle":"Change name to Sylvia, add greetings and exit lines","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}}]},{"date":"2024-01-25","commitResults":[{"hash":"2f1d4f776095410bac1e833242bbc0724ad7cee8","isMergeCommit":false,"messageTitle":"Add greet() and exit() methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"44bd28e5ed6eee78861a0890150ad9de9ea23cf6","isMergeCommit":false,"messageTitle":"Add quit functionality and echo user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":1}}},{"hash":"daf9131d2303c42e6ccbf6a6bcbe2d43944d2fe1","isMergeCommit":false,"messageTitle":"Replace static methods with non-static; add adding and listing items feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":42}}},{"hash":"631b47e314f9f702fa83accf6ecd7595ed8631c2","isMergeCommit":false,"messageTitle":"Add Task and TaskList classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":0}}},{"hash":"4beaa27623b9fef8fe5a709c14e997be36c41e39","isMergeCommit":false,"messageTitle":"Add adding and mark/unmarking tasks function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":11}}},{"hash":"aad60ace74f9f95af41bcc1ab2cde93f47bb2fdc","isMergeCommit":false,"messageTitle":"Add Deadline class for task with due date","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"2ab222bb77c62ab07d8038f81e40ed0c3a994399","isMergeCommit":false,"messageTitle":"Add Event class for tasks with start time and end time","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"aaee36feda7433213902e7f1c5e9288bd7963c96","isMergeCommit":false,"messageTitle":"Add Todo class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"5a8a288d1a8528ee3c61d552d6a15db25ee74416","isMergeCommit":false,"messageTitle":"Group task-related classes into Task package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"a7b9a635aeb305d4e06f4b133a66e3f4ae6345f1","isMergeCommit":false,"messageTitle":"Add size() method to TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"bf65d26acd3e490ca42bc7e577f5a0705524d628","isMergeCommit":false,"messageTitle":"Add AddCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"cec125251e8dd39e6e9c5624208698610f033266","isMergeCommit":false,"messageTitle":"Add new command classes for Deadline, Event, Exit, List, Mark, Todo, and Unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":0}}},{"hash":"a358b098b24fb9c89a2d4be9361df24f95fd8110","isMergeCommit":false,"messageTitle":"Add Command class and implement abstract methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}},{"hash":"d4602ee43f64db6617738c8061d060aad5b94cac","isMergeCommit":false,"messageTitle":"Refactor execute method to return loop signal and print messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":17}}},{"hash":"d1036c71c9e8d299f7ddf30390f7daed820e7565","isMergeCommit":false,"messageTitle":"Add Command class for handling user input; add task types handling feature","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":17}}},{"hash":"b6ec149a2c9c7c1ecb8b98282dc1e49a10af98d0","isMergeCommit":false,"messageTitle":"Refactor Duke class by removing unused methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":59}}},{"hash":"4e707ae62e9eaaabf288d5ffce8d775b9497e6ce","isMergeCommit":false,"messageTitle":"Update Java compiler and runtime paths","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":2,"deletions":2}}},{"hash":"fa3d8c3e8f9f0efd40e02b9091358d56ea58fed9","isMergeCommit":false,"messageTitle":"Add new test case","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"f29e413fce9942406acdd9773646f23bb160616d","isMergeCommit":false,"messageTitle":"Add DukeException class to handle custom exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"7fb039449c6be2a7377ee4e21a199feef6b531bf","isMergeCommit":false,"messageTitle":"Add error handling for chatbot-specific errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"971dc283eee27c777040bb1e367cf26183f23fd3","isMergeCommit":false,"messageTitle":"Add DukeException to handle unknown command, replacing default adding function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"189205d0c574d75b73989c03b61966ce414d9dd7","isMergeCommit":false,"messageTitle":"Add exception handling for empty todo description","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"04f1336508dac3545a24868f32a27ac53b4af0b1","isMergeCommit":false,"messageTitle":"Add exception handling for empty task descriptions and due times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"8f4c75bb521f390031eb592e64a20ada66f8d5c4","isMergeCommit":false,"messageTitle":"Add exception handling for empty and invalid task indices","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"bfd8ad21de7643fd3af84f35eaefc678fe5ac271","isMergeCommit":false,"messageTitle":"Add deleting tasks function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":29,"deletions":0}}},{"hash":"ea80e9fdb95324cbdb12dc9e85e8e8eed7e5c5f0","isMergeCommit":false,"messageTitle":"Add custom exception classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":0}}},{"hash":"7e7900fd812c0558f636d72c9615759c531bfe8a","isMergeCommit":false,"messageTitle":"Fix exception names in Command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":12}}}]},{"date":"2024-01-26","commitResults":[{"hash":"416c646ca33311ffaf580fd108b4e2e06ccf1c4e","isMergeCommit":false,"messageTitle":"Refactor code formatting and package naming","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":322,"deletions":322}}},{"hash":"d5c4129fbff4ac67629ae9d1fa4d74d8f92db919","isMergeCommit":false,"messageTitle":"Add run() method to simulate chatbot behaviour and refactor main method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":17}}},{"hash":"4c374dae4445ad173c2c10a5272c4dee9d7673a4","isMergeCommit":false,"messageTitle":"Fix infinite loop bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":3}}},{"hash":"c6969d848a1408ddc4cbfb5edfd91d2f693ea777","isMergeCommit":false,"messageTitle":"Add directory change in runtest.sh script","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":6,"deletions":1}}},{"hash":"3e2c7e3a0fcf3b752657cfd533e1a2df01cb550f","isMergeCommit":false,"messageTitle":"Remove unused class AddCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":15}}}]},{"date":"2024-01-27","commitResults":[{"hash":"7b5ed0071863fa2921302a7e6c1f96532afcb6ab","isMergeCommit":false,"messageTitle":"Add InvalidDataFormatException class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"4b7b04ae4c738df8c5bbbf12904691f046e7cb54","isMergeCommit":false,"messageTitle":"Add serialize() method to Task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"656b82de46b8e9a083d2233fbc2aeaaef72758d0","isMergeCommit":false,"messageTitle":"Add constructors with isDone to Deadline, Event, and Todo classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"e72006890ceeba6f19d0b4367d9011237d5ec10e","isMergeCommit":false,"messageTitle":"Add reading and writing data to text file functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":1}}},{"hash":"6e1b335cb0f2e22897199ac0e8c91027ca2da154","isMergeCommit":false,"messageTitle":"Simplify parsing regex string","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"d9e30c9b10ef7e523bb0274545c9e02af4e28c08","isMergeCommit":false,"messageTitle":"Add dataPath and curDir variables for error message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":4}}},{"hash":"f922167b5e709b3afb8017571759d29db72c87ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"bachletuankhai":{"java":598,"md":0,"fxml":0,"sh":7,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"bachletuankhai":87182.3},"authorDisplayNameMap":{"bachletuankhai":"CS2103T-F12-4 BACH..KHAI"}} +{"authorDailyContributionsMap":{"bachletuankhai":[{"date":"2024-01-24","commitResults":[{"hash":"98f0cceae3a7d6f02640996dd90667088ad99a13","isMergeCommit":false,"messageTitle":"Change name to Sylvia, add greetings and exit lines","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}}]},{"date":"2024-01-25","commitResults":[{"hash":"2f1d4f776095410bac1e833242bbc0724ad7cee8","isMergeCommit":false,"messageTitle":"Add greet() and exit() methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"44bd28e5ed6eee78861a0890150ad9de9ea23cf6","isMergeCommit":false,"messageTitle":"Add quit functionality and echo user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":1}}},{"hash":"daf9131d2303c42e6ccbf6a6bcbe2d43944d2fe1","isMergeCommit":false,"messageTitle":"Replace static methods with non-static; add adding and listing items feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":42}}},{"hash":"631b47e314f9f702fa83accf6ecd7595ed8631c2","isMergeCommit":false,"messageTitle":"Add Task and TaskList classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":0}}},{"hash":"4beaa27623b9fef8fe5a709c14e997be36c41e39","isMergeCommit":false,"messageTitle":"Add adding and mark/unmarking tasks function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":11}}},{"hash":"aad60ace74f9f95af41bcc1ab2cde93f47bb2fdc","isMergeCommit":false,"messageTitle":"Add Deadline class for task with due date","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"2ab222bb77c62ab07d8038f81e40ed0c3a994399","isMergeCommit":false,"messageTitle":"Add Event class for tasks with start time and end time","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"aaee36feda7433213902e7f1c5e9288bd7963c96","isMergeCommit":false,"messageTitle":"Add Todo class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"5a8a288d1a8528ee3c61d552d6a15db25ee74416","isMergeCommit":false,"messageTitle":"Group task-related classes into Task package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"a7b9a635aeb305d4e06f4b133a66e3f4ae6345f1","isMergeCommit":false,"messageTitle":"Add size() method to TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"bf65d26acd3e490ca42bc7e577f5a0705524d628","isMergeCommit":false,"messageTitle":"Add AddCommand class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"cec125251e8dd39e6e9c5624208698610f033266","isMergeCommit":false,"messageTitle":"Add new command classes for Deadline, Event, Exit, List, Mark, Todo, and Unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":0}}},{"hash":"a358b098b24fb9c89a2d4be9361df24f95fd8110","isMergeCommit":false,"messageTitle":"Add Command class and implement abstract methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}},{"hash":"d4602ee43f64db6617738c8061d060aad5b94cac","isMergeCommit":false,"messageTitle":"Refactor execute method to return loop signal and print messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":17}}},{"hash":"d1036c71c9e8d299f7ddf30390f7daed820e7565","isMergeCommit":false,"messageTitle":"Add Command class for handling user input; add task types handling feature","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":17}}},{"hash":"b6ec149a2c9c7c1ecb8b98282dc1e49a10af98d0","isMergeCommit":false,"messageTitle":"Refactor Duke class by removing unused methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":59}}},{"hash":"4e707ae62e9eaaabf288d5ffce8d775b9497e6ce","isMergeCommit":false,"messageTitle":"Update Java compiler and runtime paths","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":2,"deletions":2}}},{"hash":"fa3d8c3e8f9f0efd40e02b9091358d56ea58fed9","isMergeCommit":false,"messageTitle":"Add new test case","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"f29e413fce9942406acdd9773646f23bb160616d","isMergeCommit":false,"messageTitle":"Add DukeException class to handle custom exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"7fb039449c6be2a7377ee4e21a199feef6b531bf","isMergeCommit":false,"messageTitle":"Add error handling for chatbot-specific errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"971dc283eee27c777040bb1e367cf26183f23fd3","isMergeCommit":false,"messageTitle":"Add DukeException to handle unknown command, replacing default adding function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"189205d0c574d75b73989c03b61966ce414d9dd7","isMergeCommit":false,"messageTitle":"Add exception handling for empty todo description","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"04f1336508dac3545a24868f32a27ac53b4af0b1","isMergeCommit":false,"messageTitle":"Add exception handling for empty task descriptions and due times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"8f4c75bb521f390031eb592e64a20ada66f8d5c4","isMergeCommit":false,"messageTitle":"Add exception handling for empty and invalid task indices","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"bfd8ad21de7643fd3af84f35eaefc678fe5ac271","isMergeCommit":false,"messageTitle":"Add deleting tasks function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":29,"deletions":0}}},{"hash":"ea80e9fdb95324cbdb12dc9e85e8e8eed7e5c5f0","isMergeCommit":false,"messageTitle":"Add custom exception classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":0}}},{"hash":"7e7900fd812c0558f636d72c9615759c531bfe8a","isMergeCommit":false,"messageTitle":"Fix exception names in Command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":12}}}]},{"date":"2024-01-26","commitResults":[{"hash":"416c646ca33311ffaf580fd108b4e2e06ccf1c4e","isMergeCommit":false,"messageTitle":"Refactor code formatting and package naming","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":322,"deletions":322}}},{"hash":"d5c4129fbff4ac67629ae9d1fa4d74d8f92db919","isMergeCommit":false,"messageTitle":"Add run() method to simulate chatbot behaviour and refactor main method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":17}}},{"hash":"4c374dae4445ad173c2c10a5272c4dee9d7673a4","isMergeCommit":false,"messageTitle":"Fix infinite loop bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":3}}},{"hash":"c6969d848a1408ddc4cbfb5edfd91d2f693ea777","isMergeCommit":false,"messageTitle":"Add directory change in runtest.sh script","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":6,"deletions":1}}},{"hash":"3e2c7e3a0fcf3b752657cfd533e1a2df01cb550f","isMergeCommit":false,"messageTitle":"Remove unused class AddCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":15}}}]},{"date":"2024-01-27","commitResults":[{"hash":"7b5ed0071863fa2921302a7e6c1f96532afcb6ab","isMergeCommit":false,"messageTitle":"Add InvalidDataFormatException class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"4b7b04ae4c738df8c5bbbf12904691f046e7cb54","isMergeCommit":false,"messageTitle":"Add serialize() method to Task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}}]},{"date":"2024-01-28","commitResults":[{"hash":"656b82de46b8e9a083d2233fbc2aeaaef72758d0","isMergeCommit":false,"messageTitle":"Add constructors with isDone to Deadline, Event, and Todo classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"e72006890ceeba6f19d0b4367d9011237d5ec10e","isMergeCommit":false,"messageTitle":"Add reading and writing data to text file functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":1}}},{"hash":"6e1b335cb0f2e22897199ac0e8c91027ca2da154","isMergeCommit":false,"messageTitle":"Simplify parsing regex string","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"d9e30c9b10ef7e523bb0274545c9e02af4e28c08","isMergeCommit":false,"messageTitle":"Add dataPath and curDir variables for error message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":4}}},{"hash":"f922167b5e709b3afb8017571759d29db72c87ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"e69a6da0f048ca3882ca8a5509e8aec2f1e24aa5","isMergeCommit":false,"messageTitle":"Add TaskDateTime class for handling task date and time","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"7e13a72ee650564d191c359bdc4c4e389ba160f9","isMergeCommit":false,"messageTitle":"Refactor Task classes to use TaskDateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}},{"hash":"46f6ebc56c801ecec38d56c4aee5f6b5573d7f38","isMergeCommit":false,"messageTitle":"Add OUT-DATA.TXT to .gitignore and update runtest.sh","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":8,"deletions":2}}},{"hash":"d5214f67f20ae4dea5433685f01253b1ce4feaea","isMergeCommit":false,"messageTitle":"Update task deadlines and event timings format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2}}},{"hash":"4c221ca9a8c0eb81758587477ece7c0250a35bfd","isMergeCommit":false,"messageTitle":"Add exception class for handling wrong date format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"53f6cc98f1bda086473717e7a212598ba522f1dd","isMergeCommit":false,"messageTitle":"Refactor exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}},{"hash":"7841795021fe25acefe822a503615ae942328087","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"3995e808aedc20b5f5bef328085942527d8e417f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"bachletuankhai":{"java":634,"md":0,"fxml":0,"sh":12,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"bachletuankhai":75106.52},"authorDisplayNameMap":{"bachletuankhai":"CS2103T-F12-4 BACH..KHAI"}} diff --git a/bertrandong_ip_master/commits.json b/bertrandong_ip_master/commits.json index 81c3dfb0..da52149d 100644 --- a/bertrandong_ip_master/commits.json +++ b/bertrandong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"bertrandong":[{"date":"2024-01-23","commitResults":[{"hash":"986eb8923a86d37e4896fc8f6b743ae2cd923964","isMergeCommit":false,"messageTitle":"level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"17ecd4094a2954a9b1ba1fbaff39a849b5b832dc","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","tags":["level1","level0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"63116ce9540102c99cf4013863ca12ca9eead691","isMergeCommit":false,"messageTitle":"level 2","messageBody":"","tags":["level2"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}},{"hash":"811e492f4d8afb923cced2ce40a2f35e8d330c33","isMergeCommit":false,"messageTitle":"level 3","messageBody":"","tags":["level3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":5}}},{"hash":"45f944c534337904dfdc646fa25b9bb515360bef","isMergeCommit":false,"messageTitle":"level 4","messageBody":"","tags":["level4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}}]},{"date":"2024-01-24","commitResults":[{"hash":"49189eff9beef3969e61d7f814c98c800c87e20a","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"c7242f383a2c170828354978638fa12e051b44e0","isMergeCommit":false,"messageTitle":"level 5","messageBody":"","tags":["level5"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":50,"deletions":24}}},{"hash":"e9c363b340768a55fca378e4fde6de838eb6bc25","isMergeCommit":false,"messageTitle":"level 6","messageBody":"","tags":["level6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":20,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"99c1d4efa725d1c496447028604cbc1f850c5b2a","isMergeCommit":false,"messageTitle":"Add level 7: Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":147,"deletions":8}}},{"hash":"2e8556f9efbe494c08e9780faf5c20084663de6a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["level7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"698048995d388c3468e9b8345919aa5d8ffc67ab","isMergeCommit":false,"messageTitle":"Add level 8: Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":46,"deletions":8}}},{"hash":"aa7f7711293c7a885c5c4008499243ec4ef3061d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["level8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"ebd64586e9d65b2d5d3d4e7721bda8ec3bf96046","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":362,"deletions":139}}},{"hash":"c1abee4f11e0c62d78d629e1c870b592d38b1d41","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-moreoop\u0027","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"bertrandong":{"java":588,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":18}},"authorContributionVariance":{"bertrandong":20432.41},"authorDisplayNameMap":{"bertrandong":"CS2103T-T08-2 ONG ..RAND"}} +{"authorDailyContributionsMap":{"bertrandong":[{"date":"2024-01-23","commitResults":[{"hash":"986eb8923a86d37e4896fc8f6b743ae2cd923964","isMergeCommit":false,"messageTitle":"level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"17ecd4094a2954a9b1ba1fbaff39a849b5b832dc","isMergeCommit":false,"messageTitle":"level 1","messageBody":"","tags":["level1","level0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"63116ce9540102c99cf4013863ca12ca9eead691","isMergeCommit":false,"messageTitle":"level 2","messageBody":"","tags":["level2"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}},{"hash":"811e492f4d8afb923cced2ce40a2f35e8d330c33","isMergeCommit":false,"messageTitle":"level 3","messageBody":"","tags":["level3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":5}}},{"hash":"45f944c534337904dfdc646fa25b9bb515360bef","isMergeCommit":false,"messageTitle":"level 4","messageBody":"","tags":["level4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}}]},{"date":"2024-01-24","commitResults":[{"hash":"49189eff9beef3969e61d7f814c98c800c87e20a","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"c7242f383a2c170828354978638fa12e051b44e0","isMergeCommit":false,"messageTitle":"level 5","messageBody":"","tags":["level5"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":50,"deletions":24}}},{"hash":"e9c363b340768a55fca378e4fde6de838eb6bc25","isMergeCommit":false,"messageTitle":"level 6","messageBody":"","tags":["level6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":20,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"99c1d4efa725d1c496447028604cbc1f850c5b2a","isMergeCommit":false,"messageTitle":"Add level 7: Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":147,"deletions":8}}},{"hash":"2e8556f9efbe494c08e9780faf5c20084663de6a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["level7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"698048995d388c3468e9b8345919aa5d8ffc67ab","isMergeCommit":false,"messageTitle":"Add level 8: Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":46,"deletions":8}}},{"hash":"aa7f7711293c7a885c5c4008499243ec4ef3061d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["level8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"ebd64586e9d65b2d5d3d4e7721bda8ec3bf96046","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":362,"deletions":139}}},{"hash":"c1abee4f11e0c62d78d629e1c870b592d38b1d41","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-moreoop\u0027","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"252800531620ddac1ae48801fe3307bb5b85d143","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"da99f730454def278e8dd9b24c301759a2707d87","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"bertrandong":{"java":588,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":18}},"authorContributionVariance":{"bertrandong":20432.41},"authorDisplayNameMap":{"bertrandong":"CS2103T-T08-2 ONG ..RAND"}} diff --git a/billyhoce_ip_master/authorship.json b/billyhoce_ip_master/authorship.json index d826dadc..abe986d4 100644 --- a/billyhoce_ip_master/authorship.json +++ b/billyhoce_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" private String deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" private static String type_symbol \u003d \"[D]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":" public Deadline(String description, String deadline) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":" super(description, type_symbol);","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":" if (deadline \u003d\u003d \"\"){","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add deadline \u003cdescription\u003e /by \u003cdeadline\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":" public String toString(){","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":" return super.toString() + \" (by: \" + this.deadline + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"billyhoce":18}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" private String from;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" private String to;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":" private static String type_symbol \u003d \"[E]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":" public Event(String description, String from, String to) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":" super(description, type_symbol);","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":" if(from.isEmpty() || to.isEmpty()){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":" public String toString(){","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":" return super.toString() + \" (\" + this.from + \" - \" + this.to + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"billyhoce":20}},{"path":"src/main/java/MeanDuke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":"public class MeanDuke{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":" //Text art to be used","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":" private static final String logo \u003d","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":" \" __ __ ________ ______ __ __ _______ __ __ __ __ ________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":" + \"/ \\\\ / |/ | / \\\\ / \\\\ / | / \\\\ / | / |/ | / |/ |\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":" + \"$$ \\\\ /$$ |$$$$$$$$/ /$$$$$$ |$$ \\\\ $$ | $$$$$$$ |$$ | $$ |$$ | /$$/ $$$$$$$$/\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":" + \"$$$ \\\\ /$$$ |$$ |__ $$ |__$$ |$$$ \\\\$$ | ______ $$ | $$ |$$ | $$ |$$ |/$$/ $$ |__\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":" + \"$$$$ /$$$$ |$$ | $$ $$ |$$$$ $$ |/ |$$ | $$ |$$ | $$ |$$ $$\u003c $$ |\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":" + \"$$ $$ $$/$$ |$$$$$/ $$$$$$$$ |$$ $$ $$ |$$$$$$/ $$ | $$ |$$ | $$ |$$$$$ \\\\ $$$$$/\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":" + \"$$ |$$$/ $$ |$$ |_____ $$ | $$ |$$ |$$$$ | $$ |__$$ |$$ \\\\__$$ |$$ |$$ \\\\ $$ |_____\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":" + \"$$ | $/ $$ |$$ |$$ | $$ |$$ | $$$ | $$ $$/ $$ $$/ $$ | $$ |$$ |\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":" + \"$$/ $$/ $$$$$$$$/ $$/ $$/ $$/ $$/ $$$$$$$/ $$$$$$/ $$/ $$/ $$$$$$$$/\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":" private static final String spacer \u003d \"___________________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":" //Creates an empty TaskList","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"billyhoce"},"content":" static TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"billyhoce"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"billyhoce"},"content":" //Prints intro","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"billyhoce"},"content":" String intro \u003d logo + spacer + \"\\n\" + \"What do you want this time?\\n\" + spacer;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"billyhoce"},"content":" System.out.println(intro);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"billyhoce"},"content":" //Reads each line of user input and perform respective actions","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"billyhoce"},"content":" Scanner inputScanner\u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"billyhoce"},"content":" String userInput \u003d inputScanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"billyhoce"},"content":" String output;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"billyhoce"},"content":" while (!userInput.equals(\"end\")) { //Session terminates when user inputs \"end\"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"billyhoce"},"content":" System.out.println(spacer);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"billyhoce"},"content":" String[] command \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"billyhoce"},"content":" switch(command[0]){","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"billyhoce"},"content":" case \"add\":","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"billyhoce"},"content":" output \u003d MeanDuke.add(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"billyhoce"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"billyhoce"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"billyhoce"},"content":" output \u003d tasklist.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"billyhoce"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"billyhoce"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"billyhoce"},"content":" output \u003d MeanDuke.mark(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"billyhoce"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"billyhoce"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"billyhoce"},"content":" output \u003d MeanDuke.unmark(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"billyhoce"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"billyhoce"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"billyhoce"},"content":" output \u003d \"What are you saying? Read the damn user manual, it was written for a reason\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"billyhoce"},"content":" } catch (MeanDukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"billyhoce"},"content":" output \u003d e.getMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"billyhoce"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"billyhoce"},"content":" System.out.println(spacer);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"billyhoce"},"content":" userInput \u003d inputScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"billyhoce"},"content":" //Outro message and end of program","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"billyhoce"},"content":" String outro \u003d spacer + \"\\n\" + \"Finally you\u0027re finished, thought you would never stop yapping.\\n\" + spacer;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"billyhoce"},"content":" System.out.println(outro);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"billyhoce"},"content":" private static String add(String input) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"billyhoce"},"content":" //Check what type of task is being added","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"billyhoce"},"content":" String[] split \u003d input.split(\" \", 3);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"billyhoce"},"content":" switch (split[1]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"billyhoce"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"billyhoce"},"content":" tasklist.add(new ToDo(split[2].strip()));","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"billyhoce"},"content":" return \"Added ToDo to list: \" + split[2].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"billyhoce"},"content":" } catch (ArrayIndexOutOfBoundsException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add todo \u003cdescription\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"billyhoce"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"billyhoce"},"content":" String[] desc_by \u003d split[2].split(\"/by \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"billyhoce"},"content":" String desc \u003d desc_by[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"billyhoce"},"content":" String by \u003d desc_by[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"billyhoce"},"content":" tasklist.add(new Deadline(desc, by));","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"billyhoce"},"content":" return \"Added Deadline to list: \" + desc + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"billyhoce"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add deadline \u003cdescription\u003e /by \u003cdeadline\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"billyhoce"},"content":" case \"event\": //add event john /from /to","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"billyhoce"},"content":" String[] desc_fromTo \u003d split[2].split(\"/from \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"billyhoce"},"content":" String[] from_to \u003d desc_fromTo[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"billyhoce"},"content":" String desc \u003d desc_fromTo[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"billyhoce"},"content":" String from \u003d from_to[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"billyhoce"},"content":" String to \u003d from_to[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"billyhoce"},"content":" tasklist.add(new Event(desc, from, to));","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"billyhoce"},"content":" return \"Added Event to list: \" + desc + \" (\" + from + \" - \" + to + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"billyhoce"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"billyhoce"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add \u003ctype\u003e \u003cdescription\u003e ...\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"billyhoce"},"content":" } catch(ArrayIndexOutOfBoundsException e){ //Catch any issues with formatting which results in split not working","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add \u003ctype\u003e \u003cdescription\u003e ...\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"billyhoce"},"content":" private static String mark(String input) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"billyhoce"},"content":" String index_string \u003d input.substring(4).strip(); //Remove \"mark\"","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"billyhoce"},"content":" int index \u003d Integer.parseInt(index_string) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"billyhoce"},"content":" if (tasklist.mark_done(index)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"billyhoce"},"content":" //Task successfully changed from not done to done","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"billyhoce"},"content":" return \"Marked task: \" + index_string + \" as completed.\\nCould you have taken any longer?\";","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"billyhoce"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"billyhoce"},"content":" //Task was already completed","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"billyhoce"},"content":" return \"You have already marked task \" + index_string + \" as completed you goldfish...\";","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"billyhoce"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"mark \u003ctask_number\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"billyhoce"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Dude... you don\u0027t even have a task \" + index_string);","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"billyhoce"},"content":" private static String unmark(String input) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"billyhoce"},"content":" String index_string \u003d input.substring(6).strip(); //Remove \"unmark\"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"billyhoce"},"content":" int index \u003d Integer.parseInt(index_string) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"billyhoce"},"content":" if (tasklist.unmark_done(index)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"billyhoce"},"content":" //Task successfully changed from done to not done","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"billyhoce"},"content":" return \"Marked task: \" + index_string + \" as not completed.\\nWhy did you mark this in the first place?\";","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"billyhoce"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"billyhoce"},"content":" //Task was already not complete","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"billyhoce"},"content":" return \"Task \" + index_string + \" is already not completed. Maybe you should start working on it.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"billyhoce"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"unmark \u003ctask_number\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"billyhoce"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Dude... you don\u0027t even have a task \" + index_string);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"billyhoce":148}},{"path":"src/main/java/MeanDukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"public class MeanDukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":" public MeanDukeException(String message){","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"billyhoce":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":" * This class represents a task that tracks if it is completed","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" * @author Billy Ho Cheng En","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":"abstract class Task{","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":" private String description;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":" private boolean is_done;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":" private String done_symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":" String task_symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":" * Constructor for a task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":" * @param description textual description of the task","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":" public Task(String description, String task_symbol){","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"billyhoce"},"content":" this.is_done \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"billyhoce"},"content":" this.done_symbol \u003d \"[ ]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"billyhoce"},"content":" this.task_symbol \u003d task_symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"billyhoce"},"content":" * Marks this task as done.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"billyhoce"},"content":" * @return true if task was change from not done to done. Else false.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"billyhoce"},"content":" public boolean mark_done(){","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"billyhoce"},"content":" if(this.is_done){","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"billyhoce"},"content":" return false;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"billyhoce"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"billyhoce"},"content":" this.is_done \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"billyhoce"},"content":" this.done_symbol \u003d \"[X]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"billyhoce"},"content":" return true;","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"billyhoce"},"content":" * Marks this task as not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"billyhoce"},"content":" * @return true if task was change from done to not done. Else false.","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"billyhoce"},"content":" public boolean unmark_done(){","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"billyhoce"},"content":" if(this.is_done){","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"billyhoce"},"content":" this.is_done \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"billyhoce"},"content":" this.done_symbol \u003d \"[ ]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"billyhoce"},"content":" return true;","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"billyhoce"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"billyhoce"},"content":" return false;","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"billyhoce"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"billyhoce"},"content":" public String toString(){","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"billyhoce"},"content":" return this.task_symbol + this.done_symbol + \" \" + this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"billyhoce":58}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":" * This class represents a task list of up to 100 Tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" * @author Billy Ho Cheng En","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":"class TaskList{","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":" private ArrayList\u003cTask\u003e arr;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":" * Constructor for a task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":" public TaskList(){","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":" arr \u003d new ArrayList\u003cTask\u003e(100);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"billyhoce"},"content":" * Adds a task to the back of the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"billyhoce"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"billyhoce"},"content":" public void add(Task task){","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"billyhoce"},"content":" this.arr.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"billyhoce"},"content":" * Marks the task at the given index as done","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"billyhoce"},"content":" * @param index the index of the task to be marked done","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"billyhoce"},"content":" * @return true if task was already done, else false","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"billyhoce"},"content":" public boolean mark_done(int index){","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"billyhoce"},"content":" return arr.get(index).mark_done();","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"billyhoce"},"content":" * Marks the task at the given index as not done","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"billyhoce"},"content":" * @param index the index of the task to be marked not done","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"billyhoce"},"content":" * @return true if task was already not done, else false","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"billyhoce"},"content":" public boolean unmark_done(int index){","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"billyhoce"},"content":" return arr.get(index).unmark_done();","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"billyhoce"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"billyhoce"},"content":" public String toString(){","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"billyhoce"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"billyhoce"},"content":" for(int i \u003d 0; i \u003c arr.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"billyhoce"},"content":" sb.append((i + 1) + \". \" + arr.get(i) + \"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"billyhoce"},"content":" return sb.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"billyhoce":58}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" private static String type_symbol \u003d \"[T]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" public ToDo(String description){","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":" super(description, type_symbol);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"billyhoce":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"hi","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":"add","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":"add task","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":"add todo","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":"add todo todo1","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":"add deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":"add deadline deadline1","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":"add deadline deadline1 /by","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":"add deadline deadline1 /by 1st jan","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":"add event","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":"add event event1","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":"add event event1 /from /to","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":"add event event1 /from 1st jan /to","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":"add event event1 /from 1st jan /to 2nd jan","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":"mark 0","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":"mark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":"mark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"billyhoce"},"content":"unmark 0","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"billyhoce"},"content":"unmark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"billyhoce"},"content":"unmark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"billyhoce"},"content":"end","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"billyhoce":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":"billyhoce"},"content":"java -classpath ..\\bin MeanDuke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"-":20,"billyhoce":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":"billyhoce"},"content":"java -classpath ../bin MeanDuke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"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,"billyhoce":1}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" private String deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" private static final String TYPE_SYMBOL \u003d \"[D]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":" public Deadline(String description, String deadline) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":" super(description, TYPE_SYMBOL);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":" if (deadline.isEmpty()){","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add deadline \u003cdescription\u003e /by \u003cdeadline\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":" public String toString(){","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":" return super.toString() + \" (by: \" + this.deadline + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"billyhoce":18}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" private String from;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" private String to;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":" private static final String TYPE_SYMBOL \u003d \"[E]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":" public Event(String description, String from, String to) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":" super(description, TYPE_SYMBOL);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":" if(from.isEmpty() || to.isEmpty()){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":" public String toString(){","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":" return super.toString() + \" (\" + this.from + \" - \" + this.to + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"billyhoce":20}},{"path":"src/main/java/MeanDuke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":"public class MeanDuke{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":" //Text art to be used","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":" private static final String LOGO \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":" \" __ __ ________ ______ __ __ _______ __ __ __ __ ________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":" + \"/ \\\\ / |/ | / \\\\ / \\\\ / | / \\\\ / | / |/ | / |/ |\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":" + \"$$ \\\\ /$$ |$$$$$$$$/ /$$$$$$ |$$ \\\\ $$ | $$$$$$$ |$$ | $$ |$$ | /$$/ $$$$$$$$/\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":" + \"$$$ \\\\ /$$$ |$$ |__ $$ |__$$ |$$$ \\\\$$ | ______ $$ | $$ |$$ | $$ |$$ |/$$/ $$ |__\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":" + \"$$$$ /$$$$ |$$ | $$ $$ |$$$$ $$ |/ |$$ | $$ |$$ | $$ |$$ $$\u003c $$ |\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":" + \"$$ $$ $$/$$ |$$$$$/ $$$$$$$$ |$$ $$ $$ |$$$$$$/ $$ | $$ |$$ | $$ |$$$$$ \\\\ $$$$$/\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":" + \"$$ |$$$/ $$ |$$ |_____ $$ | $$ |$$ |$$$$ | $$ |__$$ |$$ \\\\__$$ |$$ |$$ \\\\ $$ |_____\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":" + \"$$ | $/ $$ |$$ |$$ | $$ |$$ | $$$ | $$ $$/ $$ $$/ $$ | $$ |$$ |\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":" + \"$$/ $$/ $$$$$$$$/ $$/ $$/ $$/ $$/ $$$$$$$/ $$$$$$/ $$/ $$/ $$$$$$$$/\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":" private static final String SPACER \u003d \"___________________________________________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":" private static final String INTRO \u003d LOGO + SPACER + \"\\n\" + \"What do you want this time?\\n\" + SPACER;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":" private static final String OUTRO \u003d SPACER + \"\\n\" + \"Finally you\u0027re finished, thought you would never stop yapping.\\n\" + SPACER;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"billyhoce"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"billyhoce"},"content":" ","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"billyhoce"},"content":" //Creates an empty TaskList","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"billyhoce"},"content":" static TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"billyhoce"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"billyhoce"},"content":" //Prints intro","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"billyhoce"},"content":" System.out.println(INTRO);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"billyhoce"},"content":" //Reads each line of user input and perform respective actions","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"billyhoce"},"content":" Scanner inputScanner\u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"billyhoce"},"content":" String userInput \u003d inputScanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"billyhoce"},"content":" String output;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"billyhoce"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"billyhoce"},"content":" while (!userInput.equals(\"end\")) { //Session terminates when user inputs \"end\"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"billyhoce"},"content":" System.out.println(SPACER);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"billyhoce"},"content":" String[] command \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"billyhoce"},"content":" switch(command[0]){","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"billyhoce"},"content":" case \"add\":","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"billyhoce"},"content":" output \u003d MeanDuke.add(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"billyhoce"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"billyhoce"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"billyhoce"},"content":" output \u003d tasklist.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"billyhoce"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"billyhoce"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"billyhoce"},"content":" output \u003d MeanDuke.mark(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"billyhoce"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"billyhoce"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"billyhoce"},"content":" output \u003d MeanDuke.unmark(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"billyhoce"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"billyhoce"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"billyhoce"},"content":" output \u003d MeanDuke.delete(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"billyhoce"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"billyhoce"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"billyhoce"},"content":" output \u003d \"What are you saying? Read the damn user manual, it was written for a reason\";","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"billyhoce"},"content":" } catch (MeanDukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"billyhoce"},"content":" output \u003d e.getMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"billyhoce"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"billyhoce"},"content":" System.out.println(SPACER);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"billyhoce"},"content":" userInput \u003d inputScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"billyhoce"},"content":" //Outro message and end of program","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"billyhoce"},"content":" System.out.println(OUTRO);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"billyhoce"},"content":" private static String add(String input) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"billyhoce"},"content":" //Check what type of task is being added","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"billyhoce"},"content":" String[] split \u003d input.split(\" \", 3);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"billyhoce"},"content":" switch (split[1]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"billyhoce"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"billyhoce"},"content":" tasklist.add(new ToDo(split[2].strip()));","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"billyhoce"},"content":" return \"Added ToDo to list: \" + split[2].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"billyhoce"},"content":" } catch (ArrayIndexOutOfBoundsException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add todo \u003cdescription\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"billyhoce"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"billyhoce"},"content":" String[] desc_by \u003d split[2].split(\"/by \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"billyhoce"},"content":" String desc \u003d desc_by[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"billyhoce"},"content":" String by \u003d desc_by[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"billyhoce"},"content":" tasklist.add(new Deadline(desc, by));","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"billyhoce"},"content":" return \"Added Deadline to list: \" + desc + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"billyhoce"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add deadline \u003cdescription\u003e /by \u003cdeadline\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"billyhoce"},"content":" case \"event\": //add event john /from /to","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"billyhoce"},"content":" String[] desc_fromTo \u003d split[2].split(\"/from \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"billyhoce"},"content":" String[] from_to \u003d desc_fromTo[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"billyhoce"},"content":" String desc \u003d desc_fromTo[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"billyhoce"},"content":" String from \u003d from_to[0].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"billyhoce"},"content":" String to \u003d from_to[1].strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"billyhoce"},"content":" tasklist.add(new Event(desc, from, to));","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"billyhoce"},"content":" return \"Added Event to list: \" + desc + \" (\" + from + \" - \" + to + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"billyhoce"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"billyhoce"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add \u003ctype\u003e \u003cdescription\u003e ...\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"billyhoce"},"content":" } catch(ArrayIndexOutOfBoundsException e){ //Catch any issues with formatting which results in split not working","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"add \u003ctype\u003e \u003cdescription\u003e ...\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"billyhoce"},"content":" private static String mark(String input) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"billyhoce"},"content":" String indexString \u003d input.substring(4).strip(); //Remove \"mark\"","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"billyhoce"},"content":" int index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"billyhoce"},"content":" if (tasklist.markDone(index)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"billyhoce"},"content":" //Task successfully changed from not done to done","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"billyhoce"},"content":" return \"Marked task: \" + indexString + \" as completed.\\nCould you have taken any longer?\";","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"billyhoce"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"billyhoce"},"content":" //Task was already completed","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"billyhoce"},"content":" return \"You have already marked task \" + indexString + \" as completed you goldfish...\";","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"billyhoce"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"mark \u003ctask_number\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"billyhoce"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Dude... you don\u0027t even have a task \" + indexString);","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"billyhoce"},"content":" private static String unmark(String input) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"billyhoce"},"content":" String indexString \u003d input.substring(6).strip(); //Remove \"unmark\"","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"billyhoce"},"content":" int index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"billyhoce"},"content":" if (tasklist.unmarkDone(index)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"billyhoce"},"content":" //Task successfully changed from done to not done","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"billyhoce"},"content":" return \"Marked task: \" + indexString + \" as not completed.\\nWhy did you mark this in the first place?\";","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"billyhoce"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"billyhoce"},"content":" //Task was already not complete","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"billyhoce"},"content":" return \"Task \" + indexString + \" is already not completed. Maybe you should start working on it.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"billyhoce"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"unmark \u003ctask_number\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"billyhoce"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Dude... you don\u0027t even have a task \" + indexString);","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"billyhoce"},"content":" private static String delete(String input) throws MeanDukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"billyhoce"},"content":" String indexString \u003d input.substring(6).strip(); //Remove \"delete\"","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"billyhoce"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"billyhoce"},"content":" int index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"billyhoce"},"content":" return \"deleted task:\\n \" + tasklist.delete(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"billyhoce"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Usage: \\\"delete \u003ctask_number\u003e\\\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"billyhoce"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"billyhoce"},"content":" throw new MeanDukeException(\"Dude... you don\u0027t even have a task \" + indexString);","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"billyhoce":163}},{"path":"src/main/java/MeanDukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"public class MeanDukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":" public MeanDukeException(String message){","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"billyhoce":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":" * This class represents a task that tracks if it is completed","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" * @author Billy Ho Cheng En","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":"abstract class Task{","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":" private String description;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":" private boolean is_done;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":" private String done_symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":" String task_symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":" * Constructor for a task list.","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":" * @param description textual description of the task","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":" public Task(String description, String task_symbol){","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"billyhoce"},"content":" this.is_done \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"billyhoce"},"content":" this.done_symbol \u003d \"[ ]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"billyhoce"},"content":" this.task_symbol \u003d task_symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"billyhoce"},"content":" * Marks this task as done.","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"billyhoce"},"content":" * @return true if task was change from not done to done. Else false.","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"billyhoce"},"content":" public boolean markDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"billyhoce"},"content":" if(this.is_done){","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"billyhoce"},"content":" return false;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"billyhoce"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"billyhoce"},"content":" this.is_done \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"billyhoce"},"content":" this.done_symbol \u003d \"[X]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"billyhoce"},"content":" return true;","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"billyhoce"},"content":" * Marks this task as not done.","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"billyhoce"},"content":" * @return true if task was change from done to not done. Else false.","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"billyhoce"},"content":" public boolean unmarkDone(){","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"billyhoce"},"content":" if(this.is_done){","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"billyhoce"},"content":" this.is_done \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"billyhoce"},"content":" this.done_symbol \u003d \"[ ]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"billyhoce"},"content":" return true;","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"billyhoce"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"billyhoce"},"content":" return false;","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"billyhoce"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"billyhoce"},"content":" public String toString(){","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"billyhoce"},"content":" return this.task_symbol + this.done_symbol + \" \" + this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"billyhoce":58}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":" * This class represents a task list of up to 100 Tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" * @author Billy Ho Cheng En","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":"class TaskList{","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":" private ArrayList\u003cTask\u003e arr;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":" * Constructor for a task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":" public TaskList(){","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":" arr \u003d new ArrayList\u003cTask\u003e(100);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"billyhoce"},"content":" * Adds a task to the back of the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"billyhoce"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"billyhoce"},"content":" public void add(Task task){","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"billyhoce"},"content":" this.arr.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"billyhoce"},"content":" * Marks the task at the given index as done","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"billyhoce"},"content":" * @param index the index of the task to be marked done","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"billyhoce"},"content":" * @return true if task was already done, else false","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"billyhoce"},"content":" public boolean markDone(int index){","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"billyhoce"},"content":" return arr.get(index).markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"billyhoce"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"billyhoce"},"content":" * Marks the task at the given index as not done","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"billyhoce"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"billyhoce"},"content":" * @param index the index of the task to be marked not done","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"billyhoce"},"content":" * @return true if task was already not done, else false","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"billyhoce"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"billyhoce"},"content":" public boolean unmarkDone(int index){","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"billyhoce"},"content":" return arr.get(index).unmarkDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"billyhoce"},"content":" public String delete(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"billyhoce"},"content":" String ret \u003d this.arr.get(index).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"billyhoce"},"content":" this.arr.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"billyhoce"},"content":" return ret;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"billyhoce"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"billyhoce"},"content":" public String toString(){","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"billyhoce"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"billyhoce"},"content":" for(int i \u003d 0; i \u003c arr.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"billyhoce"},"content":" sb.append((i + 1) + \". \" + arr.get(i) + \"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"billyhoce"},"content":" return sb.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"billyhoce":64}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":" private static final String TYPE_SYMBOL \u003d \"[T]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":" public ToDo(String description){","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":" super(description, TYPE_SYMBOL);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"billyhoce":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"billyhoce"},"content":"hi","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"billyhoce"},"content":"add","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"billyhoce"},"content":"add task","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"billyhoce"},"content":"add todo","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"billyhoce"},"content":"add todo todo1","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"billyhoce"},"content":"add deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"billyhoce"},"content":"add deadline deadline1","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"billyhoce"},"content":"add deadline deadline1 /by","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"billyhoce"},"content":"add deadline deadline1 /by 1st jan","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"billyhoce"},"content":"add event","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"billyhoce"},"content":"add event event1","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"billyhoce"},"content":"add event event1 /from /to","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"billyhoce"},"content":"add event event1 /from 1st jan /to","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"billyhoce"},"content":"add event event1 /from 1st jan /to 2nd jan","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"billyhoce"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"billyhoce"},"content":"mark 0","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"billyhoce"},"content":"mark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"billyhoce"},"content":"mark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"billyhoce"},"content":"unmark 0","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"billyhoce"},"content":"unmark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"billyhoce"},"content":"unmark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"billyhoce"},"content":"delete","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"billyhoce"},"content":"delete","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"billyhoce"},"content":"delete 0","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"billyhoce"},"content":"delete 1","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"billyhoce"},"content":"end","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"billyhoce":26}},{"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":"billyhoce"},"content":"java -classpath ..\\bin MeanDuke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"-":20,"billyhoce":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":"billyhoce"},"content":"java -classpath ../bin MeanDuke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"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,"billyhoce":1}}] diff --git a/billyhoce_ip_master/commits.json b/billyhoce_ip_master/commits.json index cb4cc264..f668600b 100644 --- a/billyhoce_ip_master/commits.json +++ b/billyhoce_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"billyhoce":[{"date":"2024-01-24","commitResults":[{"hash":"58a206f1e8a6b80c7089e6094bc460fb7562294b","isMergeCommit":false,"messageTitle":"Renamed, edited intro message, added outro message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":10}}},{"hash":"1786e32b0fd24bbfd6803871c324c69295ccba29","isMergeCommit":false,"messageTitle":"Added scanner to take user input and ability to echo back messages","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"97ed54f557140c996831b9604c9ffce6f4d4f5a1","isMergeCommit":false,"messageTitle":"Added task list class and ability to create and add to a list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":7}}}]},{"date":"2024-01-27","commitResults":[{"hash":"8c982f20565bf51e752128f02fbfa49fa8df0c7f","isMergeCommit":false,"messageTitle":"Added new Task class, added ability to mark and unmark tasks as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":21}}},{"hash":"f1d1287839c7c2ee6e0125eb12bc66c526631a1b","isMergeCommit":false,"messageTitle":"Added ToDo, Deadline, and Event categories for tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":5}}}]},{"date":"2024-01-29","commitResults":[{"hash":"13bc832805667bf0d20d06342b5262eda8e38102","isMergeCommit":false,"messageTitle":"Removed special characters from logo and spacer. Added automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":0},"java":{"insertions":11,"deletions":8},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"53f3e39b1bc6d65f0dd72ee7977a5fa62de66a86","isMergeCommit":false,"messageTitle":"Added handling of incorrect inputs and correct usage using exceptions","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":86}}}]}]},"authorFileTypeContributionMap":{"billyhoce":{"java":314,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":22}},"authorContributionVariance":{"billyhoce":6660.9165},"authorDisplayNameMap":{"billyhoce":"CS2103T-T13-4 BILL..G EN"}} +{"authorDailyContributionsMap":{"billyhoce":[{"date":"2024-01-24","commitResults":[{"hash":"58a206f1e8a6b80c7089e6094bc460fb7562294b","isMergeCommit":false,"messageTitle":"Renamed, edited intro message, added outro message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":10}}},{"hash":"1786e32b0fd24bbfd6803871c324c69295ccba29","isMergeCommit":false,"messageTitle":"Added scanner to take user input and ability to echo back messages","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"97ed54f557140c996831b9604c9ffce6f4d4f5a1","isMergeCommit":false,"messageTitle":"Added task list class and ability to create and add to a list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":7}}}]},{"date":"2024-01-27","commitResults":[{"hash":"8c982f20565bf51e752128f02fbfa49fa8df0c7f","isMergeCommit":false,"messageTitle":"Added new Task class, added ability to mark and unmark tasks as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":21}}},{"hash":"f1d1287839c7c2ee6e0125eb12bc66c526631a1b","isMergeCommit":false,"messageTitle":"Added ToDo, Deadline, and Event categories for tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":5}}}]},{"date":"2024-01-29","commitResults":[{"hash":"13bc832805667bf0d20d06342b5262eda8e38102","isMergeCommit":false,"messageTitle":"Removed special characters from logo and spacer. Added automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":0},"java":{"insertions":11,"deletions":8},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"53f3e39b1bc6d65f0dd72ee7977a5fa62de66a86","isMergeCommit":false,"messageTitle":"Added handling of incorrect inputs and correct usage using exceptions","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":86}}},{"hash":"9037ab2aa74d5459737d56e9e40ca0b488991d96","isMergeCommit":false,"messageTitle":"Added \"Delete\" functionality","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":20,"deletions":0}}},{"hash":"3e2d1e7b885498ed2c67f8a47069db0f294df547","isMergeCommit":false,"messageTitle":"Updated code to follow Java coding standard closer","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":38}}}]}]},"authorFileTypeContributionMap":{"billyhoce":{"java":335,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":26}},"authorContributionVariance":{"billyhoce":10007.242},"authorDisplayNameMap":{"billyhoce":"CS2103T-T13-4 BILL..G EN"}} diff --git a/bryanyee33_ip_master/commits.json b/bryanyee33_ip_master/commits.json index 49796d66..146bdb74 100644 --- a/bryanyee33_ip_master/commits.json +++ b/bryanyee33_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"bryanyee33":[{"date":"2024-01-23","commitResults":[{"hash":"fc2002cb92dcbecbd9df6963afdf6b823ade7412","isMergeCommit":false,"messageTitle":"Rename bot and change initial message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"37c7a364ed2096a6de3045ee3c78a2e45bca227d","isMergeCommit":false,"messageTitle":"Add echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"8da455e775e41f8a32e584b57032519e069d7848","isMergeCommit":false,"messageTitle":"Add listing functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"e1391037a7721a4121905aa17e5c7e9b4b8172eb","isMergeCommit":false,"messageTitle":"Add Task class and add checked Task feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":3}}},{"hash":"1d9cf0097fa7815282b28567b631d822905b01ca","isMergeCommit":false,"messageTitle":"Remove unnecessary comment in Task.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"b69672a55ff990a39b43e2154e2d67465a81e4a9","isMergeCommit":false,"messageTitle":"Switch to all to Todo task, and add all Task subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":2}}},{"hash":"13a4ee3dd8dd5df5234e4ff0d84439bbc3ca35fb","isMergeCommit":false,"messageTitle":"Refactor getting task from index","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":17}}},{"hash":"140a302e2a7bdfd9d5ac92dfecb045f89c5fdc6c","isMergeCommit":false,"messageTitle":"Add all 3 Task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":9}}},{"hash":"f5cbcf029ca5c5d27a1d95ec27e48facec9e9aaa","isMergeCommit":false,"messageTitle":"Add automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":26,"deletions":0}}},{"hash":"683e51f61cb90820e98f099eb35a5081429dc5d4","isMergeCommit":false,"messageTitle":"Refactor error checking into subclasses, and add more error message types","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":130,"deletions":53}}},{"hash":"78aeb83504aad384a8fee148df89bf1fc7a48b39","isMergeCommit":false,"messageTitle":"Use BobException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":63}}},{"hash":"72968f9eeb3cf552a0115b3ca5c2b9e8b9922ac4","isMergeCommit":false,"messageTitle":"Change to ArrayList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":27}}},{"hash":"4395c9e4177136be3ab31fab074cf7ab9b2f6d29","isMergeCommit":false,"messageTitle":"Add delete functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"fa2d6b76bfa5a40079a7a7deea86554d364edcaa","isMergeCommit":false,"messageTitle":"Add new test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0}}},{"hash":"9a6259433558f9303925c52888d4628edc8bf8f7","isMergeCommit":false,"messageTitle":"Fix spacing","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"e3706c966a2ebcb7fc15f2fbc42a147d5496df15","isMergeCommit":false,"messageTitle":"Rename Bob to FishStock, and add to package fishstock","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":46},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"a85078bbe8636a4191b90ca01b3353934fa85788","isMergeCommit":false,"messageTitle":"Switch to addTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":20}}},{"hash":"2c181afffb35bfdb7a5175747c1bcd8458652fb9","isMergeCommit":false,"messageTitle":"Add saving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":10},"bat":{"insertions":3,"deletions":0}}},{"hash":"212b3cf3d2af6bd43e0bfdd0ef7dc10460f37fd9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"daf9b9e26bcc0b242689637a26335c38c65a0c62","isMergeCommit":false,"messageTitle":"Switch to LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":11},"java":{"insertions":38,"deletions":17}}},{"hash":"f09add75a42111a289b89c93fdad251c674e45a5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"a90435c6c8d1cf0a35102061f9c787c63e2ca516","isMergeCommit":false,"messageTitle":"Refactor Ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":63}}},{"hash":"69dde5887f3bf954aa826dd5585d17f5ffa751b1","isMergeCommit":false,"messageTitle":"Refactor code to be more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":281,"deletions":163}}},{"hash":"bda8b263ee662afe566e43a48f6b7eb9393e3738","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"11eaa4e9750d21525d59f22b7d3383a82d61e5fe","isMergeCommit":false,"messageTitle":"Move all IO to Ui class","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":149,"deletions":157}}},{"hash":"ccc2792beebc22ed7e094e4c099b7d2b63d2be95","isMergeCommit":false,"messageTitle":"Change boolean variable name","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2024-01-28","commitResults":[{"hash":"7baac4b7b634efd8ef81e29aef3e5ab9b0b41ad6","isMergeCommit":false,"messageTitle":"Tidy formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":19}}},{"hash":"9c66eba6d8c389b45aaa5c14dc38155da5a8e0bc","isMergeCommit":false,"messageTitle":"Tidy formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":3}}},{"hash":"d63babe33c6acc18bba9af8b107606675969a856","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"56361a30104597ebbd94304f54a2675ca0e61229","isMergeCommit":false,"messageTitle":"Correct main class path","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"160fe1e3861a577fe9d86eb2b64005e9debd0432","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":137,"deletions":14}}},{"hash":"49c1234c9dbf4ac46da3d56195c8d5697136bbe8","isMergeCommit":false,"messageTitle":"Change archiveBaseName to fishstock","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"17f3267af9fefabe60e1bd919bd0b64c455943a1","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":184,"deletions":0}}},{"hash":"61bf694b199c77d48b33236508274e0aff37462d","isMergeCommit":false,"messageTitle":"Remove unused code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":5}}},{"hash":"03772df06582479004ab97c2540cafa131f63640","isMergeCommit":false,"messageTitle":"Make Ui.run() static","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"04bc250e0df7bf4e7ba09009c3bacab0c2969ff7","isMergeCommit":false,"messageTitle":"Add find functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":42,"deletions":10}}},{"hash":"dff22e676e52a9508ae270a7ace66feca4058257","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"a2ed8f80d1a93d352fdb1996ba894a355409dac6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"fe8bc9a19e83fc94278e02d7237a9e8c6bebf84a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"bryanyee33":{"java":823,"md":2,"fxml":0,"sh":0,"bat":5,"gradle":2,"txt":44}},"authorContributionVariance":{"bryanyee33":160340.1},"authorDisplayNameMap":{"bryanyee33":"CS2103T-W12-3 YEE ..RYAN"}} +{"authorDailyContributionsMap":{"bryanyee33":[{"date":"2024-01-23","commitResults":[{"hash":"fc2002cb92dcbecbd9df6963afdf6b823ade7412","isMergeCommit":false,"messageTitle":"Rename bot and change initial message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"37c7a364ed2096a6de3045ee3c78a2e45bca227d","isMergeCommit":false,"messageTitle":"Add echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"8da455e775e41f8a32e584b57032519e069d7848","isMergeCommit":false,"messageTitle":"Add listing functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"e1391037a7721a4121905aa17e5c7e9b4b8172eb","isMergeCommit":false,"messageTitle":"Add Task class and add checked Task feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":3}}},{"hash":"1d9cf0097fa7815282b28567b631d822905b01ca","isMergeCommit":false,"messageTitle":"Remove unnecessary comment in Task.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"b69672a55ff990a39b43e2154e2d67465a81e4a9","isMergeCommit":false,"messageTitle":"Switch to all to Todo task, and add all Task subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":2}}},{"hash":"13a4ee3dd8dd5df5234e4ff0d84439bbc3ca35fb","isMergeCommit":false,"messageTitle":"Refactor getting task from index","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":17}}},{"hash":"140a302e2a7bdfd9d5ac92dfecb045f89c5fdc6c","isMergeCommit":false,"messageTitle":"Add all 3 Task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":9}}},{"hash":"f5cbcf029ca5c5d27a1d95ec27e48facec9e9aaa","isMergeCommit":false,"messageTitle":"Add automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":26,"deletions":0}}},{"hash":"683e51f61cb90820e98f099eb35a5081429dc5d4","isMergeCommit":false,"messageTitle":"Refactor error checking into subclasses, and add more error message types","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":130,"deletions":53}}},{"hash":"78aeb83504aad384a8fee148df89bf1fc7a48b39","isMergeCommit":false,"messageTitle":"Use BobException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":63}}},{"hash":"72968f9eeb3cf552a0115b3ca5c2b9e8b9922ac4","isMergeCommit":false,"messageTitle":"Change to ArrayList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":27}}},{"hash":"4395c9e4177136be3ab31fab074cf7ab9b2f6d29","isMergeCommit":false,"messageTitle":"Add delete functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"fa2d6b76bfa5a40079a7a7deea86554d364edcaa","isMergeCommit":false,"messageTitle":"Add new test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0}}},{"hash":"9a6259433558f9303925c52888d4628edc8bf8f7","isMergeCommit":false,"messageTitle":"Fix spacing","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"e3706c966a2ebcb7fc15f2fbc42a147d5496df15","isMergeCommit":false,"messageTitle":"Rename Bob to FishStock, and add to package fishstock","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":46},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"a85078bbe8636a4191b90ca01b3353934fa85788","isMergeCommit":false,"messageTitle":"Switch to addTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":20}}},{"hash":"2c181afffb35bfdb7a5175747c1bcd8458652fb9","isMergeCommit":false,"messageTitle":"Add saving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":10},"bat":{"insertions":3,"deletions":0}}},{"hash":"212b3cf3d2af6bd43e0bfdd0ef7dc10460f37fd9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"daf9b9e26bcc0b242689637a26335c38c65a0c62","isMergeCommit":false,"messageTitle":"Switch to LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":11},"java":{"insertions":38,"deletions":17}}},{"hash":"f09add75a42111a289b89c93fdad251c674e45a5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"a90435c6c8d1cf0a35102061f9c787c63e2ca516","isMergeCommit":false,"messageTitle":"Refactor Ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":63}}},{"hash":"69dde5887f3bf954aa826dd5585d17f5ffa751b1","isMergeCommit":false,"messageTitle":"Refactor code to be more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":281,"deletions":163}}},{"hash":"bda8b263ee662afe566e43a48f6b7eb9393e3738","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"11eaa4e9750d21525d59f22b7d3383a82d61e5fe","isMergeCommit":false,"messageTitle":"Move all IO to Ui class","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":149,"deletions":157}}},{"hash":"ccc2792beebc22ed7e094e4c099b7d2b63d2be95","isMergeCommit":false,"messageTitle":"Change boolean variable name","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2024-01-28","commitResults":[{"hash":"7baac4b7b634efd8ef81e29aef3e5ab9b0b41ad6","isMergeCommit":false,"messageTitle":"Tidy formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":19}}},{"hash":"9c66eba6d8c389b45aaa5c14dc38155da5a8e0bc","isMergeCommit":false,"messageTitle":"Tidy formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":3}}},{"hash":"d63babe33c6acc18bba9af8b107606675969a856","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"56361a30104597ebbd94304f54a2675ca0e61229","isMergeCommit":false,"messageTitle":"Correct main class path","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"160fe1e3861a577fe9d86eb2b64005e9debd0432","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":137,"deletions":14}}},{"hash":"49c1234c9dbf4ac46da3d56195c8d5697136bbe8","isMergeCommit":false,"messageTitle":"Change archiveBaseName to fishstock","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"17f3267af9fefabe60e1bd919bd0b64c455943a1","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":184,"deletions":0}}},{"hash":"61bf694b199c77d48b33236508274e0aff37462d","isMergeCommit":false,"messageTitle":"Remove unused code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":5}}},{"hash":"03772df06582479004ab97c2540cafa131f63640","isMergeCommit":false,"messageTitle":"Make Ui.run() static","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"04bc250e0df7bf4e7ba09009c3bacab0c2969ff7","isMergeCommit":false,"messageTitle":"Add find functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":42,"deletions":10}}},{"hash":"dff22e676e52a9508ae270a7ace66feca4058257","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"a2ed8f80d1a93d352fdb1996ba894a355409dac6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"fe8bc9a19e83fc94278e02d7237a9e8c6bebf84a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["v0.1","A-JavaDoc"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"bryanyee33":{"java":823,"md":2,"fxml":0,"sh":0,"bat":5,"gradle":2,"txt":44}},"authorContributionVariance":{"bryanyee33":160340.1},"authorDisplayNameMap":{"bryanyee33":"CS2103T-W12-3 YEE ..RYAN"}} diff --git a/chaaaaun_ip_master/authorship.json b/chaaaaun_ip_master/authorship.json index 00160865..4631b3f2 100644 --- a/chaaaaun_ip_master/authorship.json +++ b/chaaaaun_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/chatbot/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.util.Map;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"public enum Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" EXIT(\"bye\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" LIST(\"list\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" MARK(\"mark\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" TODO(\"todo\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" EVENT(\"event\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" private final String rep;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" Command(String cmd) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" this.rep \u003d cmd.toLowerCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" public String getStringRep() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" return rep;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" private static final Map\u003cString, Command\u003e cmdStrMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" static {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" for (Command cmd : Command.values()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" cmdStrMap.put(cmd.getStringRep(), cmd);","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" public static Command toCommand(String rep) throws InvalidCommandException {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" Command cmd \u003d cmdStrMap.get(rep.split(\"\\\\s+\")[0]);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" if (cmd \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" return cmd;","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":43}},{"path":"src/main/java/chatbot/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.InvalidArgumentException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"class DeadlineTask extends Task implements Serializable {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" private static final long serialVersionUID \u003d 1L;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" private LocalDateTime deadlineTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" public DeadlineTask(String desc, String deadlineTime) throws InvalidArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" this.deadlineTime \u003d parseDate(deadlineTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" deadlineTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")));","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" private static LocalDateTime parseDate(String date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" DateTimeFormatter formatter \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" .append(DateTimeFormatter.ofPattern(","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" \"[yyyy-MM-dd HH:mm]\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" \"[yyyy-MM-dd]\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" \"[yyyy-MM]\"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" ))","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" .toFormatter();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" return LocalDateTime.parse(date, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":46}},{"path":"src/main/java/chatbot/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"public class Duke {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":" Plana p \u003d new Plana();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" p.greet();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" p.chat();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" p.bye();","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chaaaaun":18}},{"path":"src/main/java/chatbot/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.InvalidArgumentException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"public class EventTask extends Task implements Serializable {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" private static final long serialVersionUID \u003d 1L;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" private final LocalDateTime startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" private final LocalDateTime endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" public EventTask(String desc, String startTime, String endTime) throws InvalidArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" this.startTime \u003d LocalDateTime.parse(startTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" this.endTime \u003d LocalDateTime.parse(endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" startTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")),","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" endTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":32}},{"path":"src/main/java/chatbot/FileIO.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import java.io.*;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"public class FileIO {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" public FileIO() throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":" File file \u003d new File(\"store.ser\");","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" FileOutputStream fileOut \u003d new FileOutputStream(\"store.ser\");","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" ObjectOutputStream out \u003d new ObjectOutputStream(fileOut);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" out.writeObject(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" out.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" fileOut.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" public ArrayList\u003cTask\u003e readFromStore() throws IOException, ClassNotFoundException {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" FileInputStream fileIn \u003d new FileInputStream(\"store.ser\");","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" ObjectInputStream in \u003d new ObjectInputStream(fileIn);","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" ArrayList\u003cTask\u003e taskList \u003d (ArrayList\u003cTask\u003e) in.readObject();","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" in.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" fileIn.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" return taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" public void saveToStore(ArrayList\u003cTask\u003e taskList) throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" FileOutputStream fileOut \u003d new FileOutputStream(\"store.ser\");","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" ObjectOutputStream out \u003d new ObjectOutputStream(fileOut);","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" out.writeObject(taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" out.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" fileOut.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"chaaaaun":36}},{"path":"src/main/java/chatbot/Plana.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.InvalidArgumentException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"public class Plana {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" public static final String ANSI_RESET \u003d \"\\u001B[0m\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" public static final String ANSI_RED \u003d \"\\u001B[31m\";","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" public static final String ANSI_GREEN \u003d \"\\u001B[32m\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" public static final String ANSI_CYAN \u003d \"\\u001B[36m\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" private static final String LOGO \u003d","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" \" ____ __ \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" \" / __ \\\\/ /___ _____ ____ _\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" \" / /_/ / / __ `/ __ \\\\/ __ `/\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" \" / ____/ / /_/ / / / / /_/ / \\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" \"/_/ /_/\\\\__,_/_/ /_/\\\\__,_/ \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" private static final String NAME \u003d \"Plana\";","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" private final FileIO io;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" private boolean shouldExit;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" public Plana() throws IOException, ClassNotFoundException {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" this.shouldExit \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" this.io \u003d new FileIO();","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" this.tasks \u003d this.io.readFromStore();","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" public void greet() {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"Hello from\\n\" + LOGO);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"Hello! I\u0027m \" + NAME + \"!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" public void chat() {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" while (!shouldExit) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" System.out.print(ANSI_GREEN + \"\u003e \" + ANSI_CYAN);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" parseInput(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" System.out.println(ANSI_RED + e.getMessage() + ANSI_RESET);","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" private void parseInput(String in) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" Command cmd \u003d Command.toCommand(in);","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" switch (cmd) {","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" case EXIT:","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" this.shouldExit \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" case LIST:","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"You have no tasks, add some!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"You\u0027ve added the following tasks so far:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" System.out.printf(\"%d. %s\\n\", i+1, tasks.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" case TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":" case EVENT:","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" addTask(cmd, in.split(\"\\\\s+\", 2)[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" case MARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" case UNMARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":" markTask(cmd, in.split(\"\\\\s+\", 2)[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" case DELETE:","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":" int i;","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":" i \u003d Integer.parseInt(in.split(\"\\\\s+\", 2)[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" if (i \u003c 1 || i \u003e tasks.size()) throw new InvalidArgumentException();","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"chaaaaun"},"content":" Task removed \u003d tasks.remove(i-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"Got it. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"\u003e\u003e \" + removed);","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"You now have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":" private void addTask(Command cmd, String desc) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":" Task t \u003d new Task(\"\");","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" Pattern pattern;","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" Matcher matcher;","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" switch (cmd) {","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":" case TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" t \u003d new TodoTask(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"chaaaaun"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":" pattern \u003d Pattern.compile(\"(.+?)\\\\s+/by\\\\s+(.+)\");","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"chaaaaun"},"content":" matcher \u003d pattern.matcher(desc);","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":" if (!matcher.find()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"chaaaaun"},"content":" t \u003d new DeadlineTask(matcher.group(1), matcher.group(2));","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"chaaaaun"},"content":" case EVENT:","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"chaaaaun"},"content":" pattern \u003d Pattern.compile(\"(.+?)\\\\s+/from\\\\s+(.+?)\\\\s+/to\\\\s+(.+)\");","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"chaaaaun"},"content":" matcher \u003d pattern.matcher(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"chaaaaun"},"content":" if (!matcher.find()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"chaaaaun"},"content":" t \u003d new EventTask(matcher.group(1), matcher.group(2), matcher.group(3));","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"chaaaaun"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"\u003e\u003e \" + t);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"You now have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"chaaaaun"},"content":" private void markTask(Command cmd, String idx) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"chaaaaun"},"content":" int i;","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"chaaaaun"},"content":" i \u003d Integer.parseInt(idx);","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"chaaaaun"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"chaaaaun"},"content":" if (i \u003c 1 || i \u003e tasks.size()) throw new InvalidArgumentException();","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"chaaaaun"},"content":" switch (cmd) {","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"chaaaaun"},"content":" case MARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"chaaaaun"},"content":" tasks.get(i-1).mark();","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"Task \" + i + \"marked as done\");","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"chaaaaun"},"content":" case UNMARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"chaaaaun"},"content":" tasks.get(i-1).unmark();","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"Task \" + i + \"marked as undone\");","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"chaaaaun"},"content":" public void bye() throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":160,"author":{"gitId":"chaaaaun"},"content":" this.io.saveToStore(this.tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"chaaaaun"},"content":" System.out.println(ANSI_RESET + \"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"See you next time!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chaaaaun":164}},{"path":"src/main/java/chatbot/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.AlreadyMarkedException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.AlreadyUnmarkedException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"public class Task implements Serializable {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" private static final long serialVersionUID \u003d 1L;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" private final String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" private boolean done;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" public Task(String desc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" this.description \u003d desc;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" return (done ? \"[X] \" : \"[ ] \") + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" public void mark() throws AlreadyMarkedException {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" if (this.done) throw new AlreadyMarkedException();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" this.done \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" public void unmark() throws AlreadyUnmarkedException {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" if (!this.done) throw new AlreadyUnmarkedException();","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":33}},{"path":"src/main/java/chatbot/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"public class TodoTask extends Task implements Serializable {","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" private static final long serialVersionUID \u003d 1L;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":" public TodoTask(String desc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":15}},{"path":"src/main/java/chatbot/exceptions/AlreadyMarkedException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot.exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"public class AlreadyMarkedException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":" public static final String ERRSTR \u003d \"This task has already been marked as done!\";","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":" public AlreadyMarkedException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" super(ERRSTR);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":8}},{"path":"src/main/java/chatbot/exceptions/AlreadyUnmarkedException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot.exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"public class AlreadyUnmarkedException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":" public static final String ERRSTR \u003d \"This task is already unmarked!\";","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":" public AlreadyUnmarkedException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" super(ERRSTR);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":8}},{"path":"src/main/java/chatbot/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot.exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":" public DukeException(String msg) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" super(msg);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":8}},{"path":"src/main/java/chatbot/exceptions/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot.exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"public class InvalidArgumentException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":" public static final String ERRSTR \u003d \"Invalid input for this command!\";","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":" public InvalidArgumentException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" super(ERRSTR);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":8}},{"path":"src/main/java/chatbot/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot.exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" public static String ERRSTR;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":" static {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" result.append(\"Invalid command! Only the following commands are allowed:\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" for (Command c : Command.values()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" result.append(c.getStringRep()).append(\"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" ERRSTR \u003d result.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" public InvalidCommandException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" super(ERRSTR);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"abc","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"todo task 1","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"deadline task 2 /by b","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"deadline task e","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"event task 3 /from a /to b","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"event task e","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"mark e","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"unmark e","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"delete e","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":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":"chaaaaun"},"content":"java -classpath ..\\bin chatbot.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"chaaaaun":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":"chaaaaun"},"content":"## create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"#if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"#then","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"# mkdir ../bin","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"#fi","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"#","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"## delete output from previous run","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"#if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"#then","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"# rm ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"#fi","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"#","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"## compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"#if ! javac -cp ../src/main/java/chatbot/* -Xlint:none -d ../bin ../src/main/java/chatbot/*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"#then","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"# echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"# exit 1","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"#fi","lastModifiedDate":"2024-01-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":"chaaaaun"},"content":"~/Documents/jdk-11.0.17.jdk/Contents/Home/bin/java -classpath ../out/production/ip chatbot.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"chaaaaun":19,"-":19}}] +[{"path":"src/main/java/chatbot/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.InvalidArgumentException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"public enum Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" EXIT(\"bye\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" LIST(\"list\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" MARK(\"mark\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" TODO(\"todo\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" EVENT(\"event\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" private final String rep;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" private String args \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" private final boolean isBreaking;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" Command(String cmd) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" this.rep \u003d cmd.toLowerCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" this.isBreaking \u003d this.rep.equals(\"bye\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" public void withArgs(String args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" this.args \u003d args;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" return this.rep + this.args;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" public boolean shouldExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" return this.isBreaking;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" public void execute(Ui view, TaskList tl) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" switch (this) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" view.displayList(tl);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" executeFlagged(view, tl);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" executeIndexing(view, tl);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" private void executeFlagged(Ui view, TaskList tl) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" Task t \u003d new Task(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":" Pattern pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" Matcher matcher;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" switch (this) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" t \u003d new TodoTask(args.strip());","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" pattern \u003d Pattern.compile(\"(.+?)\\\\s+/by\\\\s+(.+)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" matcher \u003d pattern.matcher(args);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":" if (!matcher.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" t \u003d new DeadlineTask(matcher.group(1).strip(), matcher.group(2).strip());","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":" pattern \u003d Pattern.compile(\"(.+?)\\\\s+/from\\\\s+(.+?)\\\\s+/to\\\\s+(.+)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"chaaaaun"},"content":" matcher \u003d pattern.matcher(args);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"chaaaaun"},"content":" if (!matcher.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"chaaaaun"},"content":" t \u003d new EventTask(matcher.group(1).strip(), matcher.group(2).strip(), matcher.group(3).strip());","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"chaaaaun"},"content":" tl.addTask(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"chaaaaun"},"content":" view.displayAdd(tl, t);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"chaaaaun"},"content":" private void executeIndexing(Ui view, TaskList tl) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"chaaaaun"},"content":" int i;","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"chaaaaun"},"content":" i \u003d Integer.parseInt(args);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"chaaaaun"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"chaaaaun"},"content":" if (i \u003c 1 || i \u003e tl.getSize()) throw new InvalidArgumentException();","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"chaaaaun"},"content":" switch (this) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"chaaaaun"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"chaaaaun"},"content":" tl.markTask(i - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"chaaaaun"},"content":" view.displayMark(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"chaaaaun"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"chaaaaun"},"content":" tl.unmarkTask(i - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"chaaaaun"},"content":" view.displayUnmark(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"chaaaaun"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"chaaaaun"},"content":" Task removed \u003d tl.removeTask(i - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"chaaaaun"},"content":" view.displayDelete(tl, removed);","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"chaaaaun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":116}},{"path":"src/main/java/chatbot/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.InvalidArgumentException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"class DeadlineTask extends Task implements Serializable {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" private static final long serialVersionUID \u003d 1L;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" private final LocalDateTime deadlineTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" public DeadlineTask(String desc, String deadlineTime) throws InvalidArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" this.deadlineTime \u003d Parser.parseDate(deadlineTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" deadlineTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")));","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":28}},{"path":"src/main/java/chatbot/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"public class Duke {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":" Plana p \u003d new Plana();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" p.init();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"Invalid save file:\\n\" +e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"Storage failed with error:\\n\" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chaaaaun":16}},{"path":"src/main/java/chatbot/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.InvalidArgumentException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"public class EventTask extends Task implements Serializable {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" private static final long serialVersionUID \u003d 1L;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" private final LocalDateTime startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" private final LocalDateTime endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" public EventTask(String desc, String startTime, String endTime) throws InvalidArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" this.startTime \u003d Parser.parseDate(startTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" this.endTime \u003d Parser.parseDate(endTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidArgumentException();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" startTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")),","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" endTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":32}},{"path":"src/main/java/chatbot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"import java.util.Map;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" private static final Map\u003cString, Command\u003e cmdStrMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" static {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" for (Command cmd : Command.values()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" cmdStrMap.put(cmd.toString(), cmd);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" public static Command toCommand(String rep) throws InvalidCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" String[] split \u003d rep.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" Command cmd \u003d cmdStrMap.get(split[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" if (split.length \u003e 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" cmd.withArgs(split[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" if (cmd \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" return cmd;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" public static LocalDateTime parseDate(String date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" DateTimeFormatter formatter \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" .append(DateTimeFormatter.ofPattern(","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" \"[yyyy-MM-dd HH:mm]\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" \"[yyyy-MM-dd]\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" \"[yyyy-MM]\"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" ))","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":" .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" .toFormatter();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" return LocalDateTime.parse(date, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chaaaaun":48}},{"path":"src/main/java/chatbot/Plana.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"public class Plana {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" private final Storage store;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" private final Ui view;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" private boolean shouldExit;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" public Plana() throws IOException, ClassNotFoundException {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" this.view \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" this.shouldExit \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" this.store \u003d new Storage();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" this.taskList \u003d new TaskList(this.store);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" public void init() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" this.view.greet();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" while (!shouldExit) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" String userInput \u003d this.view.getInput();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" Command cmd \u003d Parser.toCommand(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" cmd.execute(view, taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" this.shouldExit \u003d cmd.shouldExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" this.view.displayError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" this.taskList.saveToStore(this.store);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":" this.view.bye();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chaaaaun":38}},{"path":"src/main/java/chatbot/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import java.io.*;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" public Storage() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":" File file \u003d new File(\"store.ser\");","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" FileOutputStream fileOut \u003d new FileOutputStream(\"store.ser\");","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" ObjectOutputStream out \u003d new ObjectOutputStream(fileOut);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" out.writeObject(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" out.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" fileOut.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" public ArrayList\u003cTask\u003e readFromStore() throws IOException, ClassNotFoundException {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" FileInputStream fileIn \u003d new FileInputStream(\"store.ser\");","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" ObjectInputStream in \u003d new ObjectInputStream(fileIn);","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" ArrayList\u003cTask\u003e taskList \u003d (ArrayList\u003cTask\u003e) in.readObject();","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" in.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" fileIn.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" return taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" public void saveToStore(ArrayList\u003cTask\u003e taskList) throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" FileOutputStream fileOut \u003d new FileOutputStream(\"store.ser\");","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" ObjectOutputStream out \u003d new ObjectOutputStream(fileOut);","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" out.writeObject(taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" out.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" fileOut.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"chaaaaun":36}},{"path":"src/main/java/chatbot/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.AlreadyMarkedException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.AlreadyUnmarkedException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"public class Task implements Serializable {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" private static final long serialVersionUID \u003d 1L;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" private final String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" private boolean done;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" public Task(String desc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" this.description \u003d desc;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" return (done ? \"[X] \" : \"[ ] \") + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" public void mark() throws AlreadyMarkedException {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" if (this.done) throw new AlreadyMarkedException();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" this.done \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" public void unmark() throws AlreadyUnmarkedException {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" if (!this.done) throw new AlreadyUnmarkedException();","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":33}},{"path":"src/main/java/chatbot/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.AlreadyMarkedException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"import chatbot.exceptions.AlreadyUnmarkedException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" public TaskList(Storage store) throws IOException, ClassNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" this.tasks \u003d store.readFromStore();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":" sb.append(String.format(\"%d. %s\\n\", i+1, tasks.get(i)));","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" return sb.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" public void markTask(int i) throws AlreadyMarkedException {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" this.tasks.get(i).mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" public void unmarkTask(int i) throws AlreadyUnmarkedException {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" this.tasks.get(i).unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" public Task removeTask(int i) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" return this.tasks.remove(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" public void saveToStore(Storage store) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" store.saveToStore(this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chaaaaun":48}},{"path":"src/main/java/chatbot/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"public class TodoTask extends Task implements Serializable {","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" private static final long serialVersionUID \u003d 1L;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":" public TodoTask(String desc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":15}},{"path":"src/main/java/chatbot/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" public static final String ANSI_RESET \u003d \"\\u001B[0m\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" public static final String ANSI_RED \u003d \"\\u001B[31m\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":" public static final String ANSI_GREEN \u003d \"\\u001B[32m\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" public static final String ANSI_CYAN \u003d \"\\u001B[36m\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" private static final String LOGO \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" \" ____ __ \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" \" / __ \\\\/ /___ _____ ____ _\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" \" / /_/ / / __ `/ __ \\\\/ __ `/\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" \" / ____/ / /_/ / / / / /_/ / \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" \"/_/ /_/\\\\__,_/_/ /_/\\\\__,_/ \\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" private static final String NAME \u003d \"Plana\";","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chaaaaun"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chaaaaun"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chaaaaun"},"content":" public void greet() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"Hello from\\n\" + LOGO);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"Hello! I\u0027m \" + NAME + \"!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"chaaaaun"},"content":" public String getInput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"chaaaaun"},"content":" System.out.print(ANSI_GREEN + \"\u003e \");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"chaaaaun"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"chaaaaun"},"content":" private void display(String msg) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"chaaaaun"},"content":" System.out.println(ANSI_CYAN + msg + ANSI_RESET);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"chaaaaun"},"content":" public void displayList(TaskList tl) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"chaaaaun"},"content":" if (tl.toString().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"chaaaaun"},"content":" this.display(\"You have no tasks right now, add some!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"chaaaaun"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"chaaaaun"},"content":" this.display(\"You\u0027ve added the following tasks so far:\\n\" + tl);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"chaaaaun"},"content":" public void displayAdd(TaskList tl, Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"chaaaaun"},"content":" this.display(\"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"chaaaaun"},"content":" \"\u003e\u003e \" + t + \"\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"chaaaaun"},"content":" \"You now have \" + tl.getSize() + \" tasks in the list.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"chaaaaun"},"content":" public void displayMark(int i) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"chaaaaun"},"content":" this.display(\"Task \" + i + \"marked as done\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"chaaaaun"},"content":" public void displayUnmark(int i) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"chaaaaun"},"content":" this.display(\"Task \" + i + \"marked as undone\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"chaaaaun"},"content":" public void displayDelete(TaskList tl, Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"chaaaaun"},"content":" this.display(\"Got it. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"chaaaaun"},"content":" \"\u003e\u003e \" + t + \"\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"chaaaaun"},"content":" \"You now have \" + tl.getSize() + \" tasks in the list.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"chaaaaun"},"content":" public void displayError(Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"chaaaaun"},"content":" System.out.println(ANSI_RED + e.getMessage() + ANSI_RESET);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"chaaaaun"},"content":" public void bye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"chaaaaun"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"chaaaaun"},"content":" System.out.println(ANSI_RESET + \"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"chaaaaun"},"content":" System.out.println(\"See you next time!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chaaaaun":78}},{"path":"src/main/java/chatbot/exceptions/AlreadyMarkedException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot.exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"public class AlreadyMarkedException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":" public static final String ERRSTR \u003d \"This task has already been marked as done!\";","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":" public AlreadyMarkedException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" super(ERRSTR);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":8}},{"path":"src/main/java/chatbot/exceptions/AlreadyUnmarkedException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot.exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"public class AlreadyUnmarkedException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":" public static final String ERRSTR \u003d \"This task is already unmarked!\";","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":" public AlreadyUnmarkedException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" super(ERRSTR);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":8}},{"path":"src/main/java/chatbot/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot.exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":" public DukeException(String msg) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" super(msg);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":8}},{"path":"src/main/java/chatbot/exceptions/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot.exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"public class InvalidArgumentException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":" public static final String ERRSTR \u003d \"Invalid input for this command!\";","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":" public InvalidArgumentException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" super(ERRSTR);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":8}},{"path":"src/main/java/chatbot/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"package chatbot.exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"import chatbot.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":" public static String ERRSTR;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":" static {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":" result.append(\"Invalid command! Only the following commands are allowed:\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":" for (Command c : Command.values()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":" result.append(c.toString()).append(\"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":" ERRSTR \u003d result.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":" public InvalidCommandException() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":" super(ERRSTR);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"chaaaaun"},"content":"abc","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"chaaaaun"},"content":"todo task 1","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"chaaaaun"},"content":"deadline task 2 /by b","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"deadline task e","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"event task 3 /from a /to b","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"event task e","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"mark e","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"unmark e","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"delete 2","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"delete e","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"chaaaaun":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":"chaaaaun"},"content":"java -classpath ..\\bin chatbot.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"chaaaaun":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":"chaaaaun"},"content":"## create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"chaaaaun"},"content":"#if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"chaaaaun"},"content":"#then","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"chaaaaun"},"content":"# mkdir ../bin","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"chaaaaun"},"content":"#fi","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"chaaaaun"},"content":"#","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"chaaaaun"},"content":"## delete output from previous run","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"chaaaaun"},"content":"#if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"chaaaaun"},"content":"#then","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"chaaaaun"},"content":"# rm ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"chaaaaun"},"content":"#fi","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"chaaaaun"},"content":"#","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"chaaaaun"},"content":"## compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"chaaaaun"},"content":"#if ! javac -cp ../src/main/java/chatbot/* -Xlint:none -d ../bin ../src/main/java/chatbot/*.java","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"chaaaaun"},"content":"#then","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"chaaaaun"},"content":"# echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"chaaaaun"},"content":"# exit 1","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"chaaaaun"},"content":"#fi","lastModifiedDate":"2024-01-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":"chaaaaun"},"content":"~/Documents/jdk-11.0.17.jdk/Contents/Home/bin/java -classpath ../out/production/ip chatbot.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"chaaaaun":19,"-":19}}] diff --git a/chaaaaun_ip_master/commits.json b/chaaaaun_ip_master/commits.json index 4c3355e0..d4b32eda 100644 --- a/chaaaaun_ip_master/commits.json +++ b/chaaaaun_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"chaaaaun":[{"date":"2024-01-24","commitResults":[{"hash":"1ed3ca823f861f6dd24816fdcc2bdb490eac7abb","isMergeCommit":false,"messageTitle":"Refactor and add greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":10},"bat":{"insertions":1,"deletions":1}}},{"hash":"b7ca144855a40007d51e5b31d89eb88191950842","isMergeCommit":false,"messageTitle":"Add colors and echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}},{"hash":"b8de5b86d77aac3cd579b1f64c6deee47b5b95ea","isMergeCommit":false,"messageTitle":"Add record and list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}}]},{"date":"2024-01-25","commitResults":[{"hash":"1db1e667758d627e257fc13eee05051b807ac1e8","isMergeCommit":false,"messageTitle":"Add exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":0}}},{"hash":"7b55caf066a4744b155a0ce60504fe40a5fbd949","isMergeCommit":false,"messageTitle":"Add done functionality","messageBody":"","tags":["Level-3","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":13}}},{"hash":"b79a61f4d9ebb012b44a1f7f32e8dfc46936282b","isMergeCommit":false,"messageTitle":"Add different types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":8}}},{"hash":"927c73523c2bcefb464078690f47b25b6e69e4ca","isMergeCommit":false,"messageTitle":"Add delete functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"e59442abfa0523e37fc85e1f5533af16e22a75ce","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":0},"sh":{"insertions":19,"deletions":19}}},{"hash":"29747f3078126690e238adacaed553fa6d773b5a","isMergeCommit":false,"messageTitle":"Fix warnings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":11}}}]},{"date":"2024-01-27","commitResults":[{"hash":"c41072950f91bedd7297239f2791d4495c03eadf","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":13}}}]},{"date":"2024-01-30","commitResults":[{"hash":"a32f1a1805091a9ff862bb53895a193746b351f8","isMergeCommit":false,"messageTitle":"Add date parsing","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":10}}}]}]},"authorFileTypeContributionMap":{"chaaaaun":{"java":438,"md":0,"fxml":0,"sh":19,"bat":1,"gradle":0,"txt":19}},"authorContributionVariance":{"chaaaaun":11489.241},"authorDisplayNameMap":{"chaaaaun":"CS2103T-T09-3 TU J..A EN"}} +{"authorDailyContributionsMap":{"chaaaaun":[{"date":"2024-01-24","commitResults":[{"hash":"1ed3ca823f861f6dd24816fdcc2bdb490eac7abb","isMergeCommit":false,"messageTitle":"Refactor and add greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":10},"bat":{"insertions":1,"deletions":1}}},{"hash":"b7ca144855a40007d51e5b31d89eb88191950842","isMergeCommit":false,"messageTitle":"Add colors and echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}},{"hash":"b8de5b86d77aac3cd579b1f64c6deee47b5b95ea","isMergeCommit":false,"messageTitle":"Add record and list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}}]},{"date":"2024-01-25","commitResults":[{"hash":"1db1e667758d627e257fc13eee05051b807ac1e8","isMergeCommit":false,"messageTitle":"Add exceptions","messageBody":"","tags":["Level-5","A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":0}}},{"hash":"7b55caf066a4744b155a0ce60504fe40a5fbd949","isMergeCommit":false,"messageTitle":"Add done functionality","messageBody":"","tags":["Level-3","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":13}}},{"hash":"b79a61f4d9ebb012b44a1f7f32e8dfc46936282b","isMergeCommit":false,"messageTitle":"Add different types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":8}}},{"hash":"927c73523c2bcefb464078690f47b25b6e69e4ca","isMergeCommit":false,"messageTitle":"Add delete functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"e59442abfa0523e37fc85e1f5533af16e22a75ce","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":0},"sh":{"insertions":19,"deletions":19}}},{"hash":"29747f3078126690e238adacaed553fa6d773b5a","isMergeCommit":false,"messageTitle":"Fix warnings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":11}}}]},{"date":"2024-01-27","commitResults":[{"hash":"c41072950f91bedd7297239f2791d4495c03eadf","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":13}}}]},{"date":"2024-01-30","commitResults":[{"hash":"a32f1a1805091a9ff862bb53895a193746b351f8","isMergeCommit":false,"messageTitle":"Add date parsing","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":10}}},{"hash":"82569bbbb362952efb4a80d6c67c982b8139aeda","isMergeCommit":false,"messageTitle":"Refactor code for OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":287,"deletions":172}}},{"hash":"cebed259527de33a5fa494c2ee318ed01470742a","isMergeCommit":false,"messageTitle":"Fix warnings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":17}}}]}]},"authorFileTypeContributionMap":{"chaaaaun":{"java":539,"md":0,"fxml":0,"sh":19,"bat":1,"gradle":0,"txt":19}},"authorContributionVariance":{"chaaaaun":29528.25},"authorDisplayNameMap":{"chaaaaun":"CS2103T-T09-3 TU J..A EN"}} diff --git a/cheahTJ_ip_master/authorship.json b/cheahTJ_ip_master/authorship.json index 077ca77a..03c75a71 100644 --- a/cheahTJ_ip_master/authorship.json +++ b/cheahTJ_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy, HHmm\")) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":16}},{"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":"cheahTJ"},"content":" private fileStorage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" private UI ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" private Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" this.ui \u003d new UI();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" this.storage \u003d new fileStorage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d new TaskList(storage.bootingUp());","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" String[] words \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" parser \u003d new Parser(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" ui.listText();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" tasks.listTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d parser.markParser(tasks.getTaskSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" ui.markTaskText(taskNumber, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" int taskNum \u003d parser.unmarkParser(tasks.getTaskSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" ui.unmarkTaskText(taskNum, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" ToDos todo \u003d parser.todoParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" tasks.addTask(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" ui.additionToTasksText(todo, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" Deadline deadlineTask \u003d parser.deadlineParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" tasks.addTask(deadlineTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" ui.additionToTasksText(deadlineTask, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" Events events \u003d parser.eventsParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" tasks.addTask(events);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" ui.additionToTasksText(events, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d parser.deleteParser(tasks.getTaskSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" ui.deletionToTasksText(taskNumber, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":" ui.showError(\"OOPS! I\u0027m sorry, but I don\u0027t know what that means :\u0027(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":" new Duke(\"./data/dukeData.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"cheahTJ":87,"-":4}},{"path":"src/main/java/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class Events extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" public Events(String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" return \"[E]\" + super.toString() + \" (from:\" + start + \" to:\" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":14}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"public class Parser {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" protected String userInput;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" protected ArrayList\u003cString\u003e words;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" public Parser (String userInput) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" this.words \u003d new ArrayList\u003c\u003e(Arrays.asList(userInput.split(\" \")));}","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" * Returns a todo object with the task description","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" * Handles errors where user fails to include task description","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" public ToDos todoParser() throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(this.words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" return new ToDos(description.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"OOPS! The command is incomplete. Please provide a task description!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" * Return a deadline object with task description and date/time to complete the task","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" * Handles error where user forgets to include task description, a deadline,","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" * or when there is an incorrect syntax (e.g. never include /by)","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" public Deadline deadlineParser() throws myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" StringBuilder by \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" int index \u003d this.words.indexOf(\"/by\");","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" if (index !\u003d -1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" if (index !\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" // This is to ensure that /by would not become part of the description field","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" // if the user forgets to include description field","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: deadline (task description) /by (d/m/yyyy HHmm format)\");","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" if (i \u003c index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" by.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" if (!(by.toString().isEmpty() || description.toString().isEmpty())) {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" LocalDateTime parsedDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" parsedDateTime \u003d LocalDateTime.parse(by.toString().trim(), formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: deadline (task description) /by (d/m/yyyy HHmm format)\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" return new Deadline(description.toString(), parsedDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have missing fields! You need a task description \u0026 a deadline to finish your task, try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" * Returns an event object with task description, a from and to date/time","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" * Handles errors where users forget to include task description, a from or to date/time or","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" * incorrect syntax (e.g. never include /from, /to)","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":" public Events eventsParser() throws myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" StringBuilder start \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" StringBuilder end \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" int indexOfFrom \u003d this.words.indexOf(\"/from\");","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" int indexOfTo \u003d this.words.indexOf(\"/to\");","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" if (indexOfFrom \u003d\u003d -1 || indexOfTo \u003d\u003d -1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: event (task description) /from (date/time) /to (date/time)\");","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":" if (indexOfFrom \u003d\u003d 1 || indexOfTo \u003d\u003d 1) {} else {","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" if (i \u003c indexOfFrom) {","lastModifiedDate":"2024-01-22"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e indexOfFrom \u0026\u0026 i \u003c indexOfTo) {","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" start.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e indexOfTo){","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" end.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" if (description.toString().isEmpty() || start.toString().isEmpty() || end.toString().isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You having missing fields! You need a task description, start and end date/time for your task, try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":" return new Events(description.toString(), start.toString(), end.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":114,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to mark","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to mark a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to mark as completed","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":" public int markParser(int currentNumOfTask) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot mark task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I\u0027m not sure which task you wish to mark. Please specify the task you wish to mark and try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to un-mark","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to un-mark a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to un-mark","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"cheahTJ"},"content":" public int unmarkParser(int currentNumOfTask) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot un-mark task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":147,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":148,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I\u0027m not sure which task you wish to un-mark. Please specify the task you wish to un-mark and try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to delete","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to delete a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to delete","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"cheahTJ"},"content":" public int deleteParser(int currentNumOfTask) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot delete task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I\u0027m not sure which task you wish to delete. Please specify the task you want to delete and try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":177,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":178,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":178}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" // When a user wishes to mark a task as completed","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" // When user wishes to un-mark a certain task","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" public void uncheckingTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":27}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" public int getTaskSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" public void updateTaskToStorage(fileStorage fs) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" fs.updateFile(this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" public void removeTask(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" this.tasks.remove(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" public String taskToString(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" return this.tasks.get(taskNumber).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" public String taskStatusIcon(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" return this.tasks.get(taskNumber).getStatusIcon();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" public void taskMarkAsDone(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" this.tasks.get(taskNumber).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" public void taskUncheckTask(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" this.tasks.get(taskNumber).uncheckingTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" public void listTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" if (tasks.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d i + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" System.out.println(taskNumber + \".\" + tasks.get(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cheahTJ":58}},{"path":"src/main/java/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class ToDos extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" public ToDos(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":10}},{"path":"src/main/java/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"public class UI {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" private final Scanner sc;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" public UI() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" String greetingMsg \u003d \"Hello! I\u0027m PingMeBot\\n\" + \"What can I do for you?\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" System.out.println(greetingMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" public void sayGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" String exitMsg \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"\\n\" + exitMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" public void listText() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" return this.sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" public void additionToTasksText(Task task, TaskList allTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" String toUserUponAddition \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" toUserUponAddition +\u003d (\"\\n\" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" toUserUponAddition +\u003d \"\\n\" + \" \" + task.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" toUserUponAddition +\u003d \"\\n\" + \"Now you have \" + allTasks.getTaskSize() + \" tasks in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponAddition);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" public void deletionToTasksText(int taskNumber, TaskList allTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" String toUserUponDeletion \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" toUserUponDeletion +\u003d \"Noted. I\u0027ve removed this task:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" toUserUponDeletion +\u003d \"\\n\" + \" \" + allTasks.taskToString(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" allTasks.removeTask(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" toUserUponDeletion +\u003d \"\\n\" + \"Now you have \" + allTasks.getTaskSize() + \" tasks in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponDeletion);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" public void markTaskText(int taskNum, TaskList allTasks) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" String toUserUponMarkingTask \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" if (allTasks.taskStatusIcon(taskNum).equals(\"X\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You cannot mark task again which has been completed!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" allTasks.taskMarkAsDone(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" toUserUponMarkingTask +\u003d \"Nice! I\u0027ve marked this task as done:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" toUserUponMarkingTask +\u003d \"\\n\" + \" \" + allTasks.taskToString(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponMarkingTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" public void unmarkTaskText(int taskNum, TaskList allTasks) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" String toUserUponUnmarkingTask \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" if (allTasks.taskStatusIcon(taskNum).equals(\" \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You cannot un-mark task which has not been marked!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" allTasks.taskUncheckTask(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" toUserUponUnmarkingTask +\u003d \"OK, I\u0027ve marked this task as not done yet:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" toUserUponUnmarkingTask +\u003d \"\\n\" + \" \" + allTasks.taskToString(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponUnmarkingTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" System.out.println(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cheahTJ":76}},{"path":"src/main/java/fileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"public class fileStorage {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" protected File myFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" protected String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" public fileStorage(String filePath) throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" this.myFile \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" if (!myFile.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.getParentFile().mkdirs()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Directory has been successfully created\");","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Error creating directory...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"File has been successfully created\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Error creating file...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" public ArrayList\u003cTask\u003e bootingUp() throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" Scanner sc \u003d new Scanner(this.myFile);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" String text \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" String[] segmentedText \u003d text.split(\"\\\\|\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" if (segmentedText[0].trim().equals(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" // Format for Todo: T | 1/0 | read book","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" ToDos todo \u003d new ToDos(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" tasks.add(todo);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" } else if (segmentedText[0].trim().equals(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" // Format for Deadline: D | 1/0 | read book | Date/Time","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" String deadlineTime \u003d segmentedText[3].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" LocalDateTime parsedDateTime \u003d LocalDateTime.parse(deadlineTime, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" Deadline deadline \u003d new Deadline(description, parsedDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" tasks.add(deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" } else if (segmentedText[0].trim().equals(\"event\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" // Format for Event: E | 1/0 | read book | Date/Time(from) | Date/Time(To)","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" String from \u003d \" \" + segmentedText[3].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" String to \u003d \" \" + segmentedText[4].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" Events event \u003d new Events(description,from,to);","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" tasks.add(event);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"Weird expression found!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":" public void updateFile(ArrayList\u003cTask\u003e tasks) throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" int isCompleted \u003d t.isDone ? 1 : 0;","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" if (t instanceof ToDos) {","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d \"todo | \" + isCompleted + \" | \" + t.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" } else if (t instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d \"deadline | \" + isCompleted + \" | \" + t.description + \" | \" + ((Deadline) t).by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":" } else if (t instanceof Events) {","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d \"event | \" + isCompleted + \" | \" + t.description + \" | \" + ((Events) t).start + \" | \" + ((Events) t).end;","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"cheahTJ"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"There is not file to be updated!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"cheahTJ":122}},{"path":"src/main/java/myBotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"public class myBotException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" protected String message;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" public myBotException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" this.message \u003d message;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"cheahTJ":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"cheahTJ":8}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"# pingmebot.Duke project template","lastModifiedDate":"2024-01-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":"cheahTJ"},"content":"3. After that, locate the `src/main/java/pingmebot.Duke.java` file, right-click it, and choose `Run pingmebot.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":"2024-01-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":{"cheahTJ":2,"-":22}},{"path":"src/main/java/pingmebot/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package pingmebot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.Events;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.ToDos;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" private fileStorage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" private UI ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" private Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" this.ui \u003d new UI();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" this.storage \u003d new fileStorage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d new TaskList(storage.bootingUp());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" String[] words \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" parser \u003d new Parser(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" ui.sayGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" break;","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" ui.listText();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" tasks.listTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d parser.markParser(tasks.getTaskSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" ui.markTaskText(taskNumber, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" int taskNum \u003d parser.unmarkParser(tasks.getTaskSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" ui.unmarkTaskText(taskNum, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" ToDos todo \u003d parser.todoParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" tasks.addTask(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" ui.additionToTasksText(todo, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" Deadline deadlineTask \u003d parser.deadlineParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" tasks.addTask(deadlineTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" ui.additionToTasksText(deadlineTask, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" Events events \u003d parser.eventsParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":" tasks.addTask(events);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" ui.additionToTasksText(events, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" } else if (words[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d parser.deleteParser(tasks.getTaskSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":" ui.deletionToTasksText(taskNumber, this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" tasks.updateTaskToStorage(this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":" ui.showError(\"OOPS! I\u0027m sorry, but I don\u0027t know what that means :\u0027(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":" new Duke(\"./data/dukeData.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"cheahTJ":94,"-":3}},{"path":"src/main/java/pingmebot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package pingmebot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.Events;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.ToDos;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"public class Parser {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" protected String userInput;","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" protected ArrayList\u003cString\u003e words;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" public Parser (String userInput) {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" this.words \u003d new ArrayList\u003c\u003e(Arrays.asList(userInput.split(\" \")));}","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" * Returns a todo object with the task description","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" * Handles errors where user fails to include task description","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" public ToDos todoParser() throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(this.words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" return new ToDos(description.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"OOPS! The command is incomplete. Please provide a task description!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" * Return a deadline object with task description and date/time to complete the task","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" * Handles error where user forgets to include task description, a deadline,","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" * or when there is an incorrect syntax (e.g. never include /by)","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" public Deadline deadlineParser() throws myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" StringBuilder by \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" int index \u003d this.words.indexOf(\"/by\");","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" if (index !\u003d -1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" if (index !\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" // This is to ensure that /by would not become part of the description field","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" // if the user forgets to include description field","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: deadline (task description) /by (d/m/yyyy HHmm format)\");","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" if (i \u003c index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e index) {","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" by.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" if (!(by.toString().isEmpty() || description.toString().isEmpty())) {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" LocalDateTime parsedDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" parsedDateTime \u003d LocalDateTime.parse(by.toString().trim(), formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: deadline (task description) /by (d/m/yyyy HHmm format)\");","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" return new Deadline(description.toString(), parsedDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have missing fields! You need a task description \u0026 a deadline to finish your task, try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" * Returns an event object with task description, a from and to date/time","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":" * Handles errors where users forget to include task description, a from or to date/time or","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" * incorrect syntax (e.g. never include /from, /to)","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":" public Events eventsParser() throws myBotException {","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" StringBuilder start \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" StringBuilder end \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":" int indexOfFrom \u003d this.words.indexOf(\"/from\");","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" int indexOfTo \u003d this.words.indexOf(\"/to\");","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":" if (indexOfFrom \u003d\u003d -1 || indexOfTo \u003d\u003d -1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I don\u0027t understand your command. Try writing: event (task description) /from (date/time) /to (date/time)\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" if (indexOfFrom \u003d\u003d 1 || indexOfTo \u003d\u003d 1) {} else {","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" description \u003d new StringBuilder(this.words.get(1));","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 2; i \u003c words.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" if (i \u003c indexOfFrom) {","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" description.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e indexOfFrom \u0026\u0026 i \u003c indexOfTo) {","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":" start.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":" } else if (i \u003e indexOfTo){","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":" end.append(\" \").append(words.get(i));","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":" if (description.toString().isEmpty() || start.toString().isEmpty() || end.toString().isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You having missing fields! You need a task description, start and end date/time for your task, try again!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"cheahTJ"},"content":" return new Events(description.toString(), start.toString(), end.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":117,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to mark","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to mark a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to mark as completed","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"cheahTJ"},"content":" public int markParser(int currentNumOfTask) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot mark task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":133,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I\u0027m not sure which task you wish to mark. Please specify the task you wish to mark and try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":141,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to un-mark","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to un-mark a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to un-mark","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"cheahTJ"},"content":" public int unmarkParser(int currentNumOfTask) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot un-mark task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":153,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":154,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I\u0027m not sure which task you wish to un-mark. Please specify the task you wish to un-mark and try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"cheahTJ"},"content":" * Returns an integer to know which task the user wishes to delete","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"cheahTJ"},"content":" * Deals with error when the user accidentally tries to delete a task which does not belong in the list of task","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"cheahTJ"},"content":" * or when the user fails to include which task they want to delete","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"cheahTJ"},"content":" public int deleteParser(int currentNumOfTask) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"cheahTJ"},"content":" if (!this.words.get(1).isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"cheahTJ"},"content":" if (Integer.parseInt(this.words.get(1)) \u003e currentNumOfTask || Integer.parseInt(this.words.get(1)) \u003c\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You have currently \" + currentNumOfTask + \" tasks. You cannot delete task larger or smaller than this!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"cheahTJ"},"content":" return Integer.parseInt(this.words.get(1)) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"cheahTJ"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"cheahTJ"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"I\u0027m not sure which task you wish to delete. Please specify the task you want to delete and try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":183,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":184,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":184}},{"path":"src/main/java/pingmebot/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package pingmebot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" public int getTaskSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" public void updateTaskToStorage(fileStorage fs) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" fs.updateFile(this.tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" } catch (myBotException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" public void removeTask(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" this.tasks.remove(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" public String taskToString(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" return this.tasks.get(taskNumber).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" public String taskStatusIcon(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" return this.tasks.get(taskNumber).getStatusIcon();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" public void taskMarkAsDone(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" this.tasks.get(taskNumber).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" public void taskUncheckTask(int taskNumber) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" this.tasks.get(taskNumber).uncheckingTask();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" public void listTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" if (tasks.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" int taskNumber \u003d i + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" System.out.println(taskNumber + \".\" + tasks.get(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cheahTJ":62}},{"path":"src/main/java/pingmebot/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package pingmebot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"public class UI {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" private final Scanner sc;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" public UI() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" String greetingMsg \u003d \"Hello! I\u0027m PingMeBot\\n\" + \"What can I do for you?\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" System.out.println(greetingMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" public void sayGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" String exitMsg \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"\\n\" + exitMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" public void listText() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" return this.sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" public void additionToTasksText(Task task, TaskList allTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" String toUserUponAddition \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" toUserUponAddition +\u003d (\"\\n\" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" toUserUponAddition +\u003d \"\\n\" + \" \" + task.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" toUserUponAddition +\u003d \"\\n\" + \"Now you have \" + allTasks.getTaskSize() + \" tasks in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponAddition);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" public void deletionToTasksText(int taskNumber, TaskList allTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" String toUserUponDeletion \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" toUserUponDeletion +\u003d \"Noted. I\u0027ve removed this task:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" toUserUponDeletion +\u003d \"\\n\" + \" \" + allTasks.taskToString(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" allTasks.removeTask(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" toUserUponDeletion +\u003d \"\\n\" + \"Now you have \" + allTasks.getTaskSize() + \" tasks in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponDeletion);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" public void markTaskText(int taskNum, TaskList allTasks) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" String toUserUponMarkingTask \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" if (allTasks.taskStatusIcon(taskNum).equals(\"X\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You cannot mark task again which has been completed!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" allTasks.taskMarkAsDone(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" toUserUponMarkingTask +\u003d \"Nice! I\u0027ve marked this task as done:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" toUserUponMarkingTask +\u003d \"\\n\" + \" \" + allTasks.taskToString(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponMarkingTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" public void unmarkTaskText(int taskNum, TaskList allTasks) throws myBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" String toUserUponUnmarkingTask \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" if (allTasks.taskStatusIcon(taskNum).equals(\" \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"You cannot un-mark task which has not been marked!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" allTasks.taskUncheckTask(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" toUserUponUnmarkingTask +\u003d \"OK, I\u0027ve marked this task as not done yet:\";","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" toUserUponUnmarkingTask +\u003d \"\\n\" + \" \" + allTasks.taskToString(taskNum);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" System.out.println(toUserUponUnmarkingTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" System.out.println(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cheahTJ":79}},{"path":"src/main/java/pingmebot/fileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package pingmebot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.Events;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"import pingmebot.task.ToDos;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"public class fileStorage {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" protected File myFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" protected String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" public fileStorage(String filePath) throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" this.myFile \u003d new File(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" if (!myFile.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.getParentFile().mkdirs()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Directory has been successfully created\");","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Error creating directory...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"File has been successfully created\");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" System.out.println(\"Error creating file...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" public ArrayList\u003cTask\u003e bootingUp() throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" if (this.myFile.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" Scanner sc \u003d new Scanner(this.myFile);","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" String text \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" String[] segmentedText \u003d text.split(\"\\\\|\");","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" if (segmentedText[0].trim().equals(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" ToDos todo \u003d new ToDos(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":" tasks.add(todo);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":" } else if (segmentedText[0].trim().equals(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" String deadlineTime \u003d segmentedText[3].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" LocalDateTime parsedDateTime \u003d LocalDateTime.parse(deadlineTime, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" Deadline deadline \u003d new Deadline(description, parsedDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":" tasks.add(deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" } else if (segmentedText[0].trim().equals(\"event\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" int isTaskCompleted \u003d Integer.parseInt(segmentedText[1].trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" String description \u003d segmentedText[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" String from \u003d \" \" + segmentedText[3].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" String to \u003d \" \" + segmentedText[4].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" Events event \u003d new Events(description,from,to);","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":" if (isTaskCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" tasks.add(event);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"Weird expression found!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" public void updateFile(ArrayList\u003cTask\u003e tasks) throws myBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" int isCompleted \u003d t.hasCompleted();","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" if (t instanceof ToDos) {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d ((ToDos) t).updateToDoText(isCompleted);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" } else if (t instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d ((Deadline) t).updateDeadlineText(isCompleted);","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":" } else if (t instanceof Events) {","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":" String toWrite \u003d ((Events) t).updateEventText(isCompleted);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":" fw.write(toWrite + System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"cheahTJ"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"cheahTJ"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"cheahTJ"},"content":" throw new myBotException(\"There is not file to be updated!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"cheahTJ":124}},{"path":"src/main/java/pingmebot/myBotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package pingmebot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"public class myBotException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" protected String message;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" public myBotException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" this.message \u003d message;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"cheahTJ":9}},{"path":"src/main/java/pingmebot/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package pingmebot.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy, HHmm\")) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" public String updateDeadlineText(int isCompleted) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" String text \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" text +\u003d \"deadline | \" + isCompleted + \" | \" + this.description + \" | \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" return text;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":26}},{"path":"src/main/java/pingmebot/task/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package pingmebot.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"public class Events extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" public Events(String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" return \"[E]\" + super.toString() + \" (from:\" + start + \" to:\" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" public String updateEventText(int isCompleted) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" String text \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" text +\u003d \"event | \" + isCompleted + \" | \" + this.description + \" | \" + this.start + \" | \" + this.end;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" return text;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cheahTJ":26}},{"path":"src/main/java/pingmebot/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package pingmebot.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" // When a user wishes to mark a task as completed","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":" // When user wishes to un-mark a certain task","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" public void uncheckingTask() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" public int hasCompleted() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" return this.isDone ? 1 : 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"cheahTJ":34}},{"path":"src/main/java/pingmebot/task/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package pingmebot.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"public class ToDos extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":" public ToDos(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":" super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" public String updateToDoText(int isCompleted) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" String text \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":" text +\u003d \"todo | \" + isCompleted + \" | \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" return text;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cheahTJ":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"list","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"cheahTJ":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":"cheahTJ"},"content":"java -classpath ..\\bin pingmebot.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"cheahTJ":1,"-":20}}] diff --git a/cheahTJ_ip_master/commits.json b/cheahTJ_ip_master/commits.json index 7a13a90d..3ce83b63 100644 --- a/cheahTJ_ip_master/commits.json +++ b/cheahTJ_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"cheahTJ":[{"date":"2024-01-21","commitResults":[{"hash":"a5fa7a09aac34a6e0959092167f9b9ea3919754e","isMergeCommit":false,"messageTitle":"Renamed bot, added greeting and exit msgs","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"760c2753cd626dc800b05b9ea5276f802594afa7","isMergeCommit":false,"messageTitle":"Added echoing feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"867a5a216af01e9684fecbad78bf882af0e4ec30","isMergeCommit":false,"messageTitle":"Added storage of tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}}]},{"date":"2024-01-22","commitResults":[{"hash":"8f0bbe3c49d53357c70be67b866ec8b36127f62d","isMergeCommit":false,"messageTitle":"Added Task class and the ability to mark/unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":6}}},{"hash":"a000bc20212b52cc16cc611f6547e777dd48e475","isMergeCommit":false,"messageTitle":"Added ToDo, Events, Deadlines classes. Also added parser class to deal with user inputs","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":5}}}]},{"date":"2024-01-23","commitResults":[{"hash":"e04d704cd9ac2bfc54c2c40b8c574773154be374","isMergeCommit":false,"messageTitle":"Added input and expected output for TextUiTesting","messageBody":"","tags":["Level-A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"650312a57346c9353d5e61688ff2d9d167354216","isMergeCommit":false,"messageTitle":"Added a custom exception class and also handling all sorts of user incorrect/incomplete inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":35}}},{"hash":"f0949e0afb491475332597386190992cebe7105f","isMergeCommit":false,"messageTitle":"Added the delete feature, and deal with its corresponding possible error from user","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":31}}}]},{"date":"2024-01-28","commitResults":[{"hash":"7bfe55323fde9880fd16660ab6d7691f7bfda796","isMergeCommit":false,"messageTitle":"Save and load data from the hard disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":6}}},{"hash":"63b25f96897bdd625364068fda6da87cb2a1057b","isMergeCommit":false,"messageTitle":"Make Deadline object take in and output formatted DateTime object","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}}]},{"date":"2024-01-30","commitResults":[{"hash":"6917d00abeded7bdb9ec8eca72dcd3cc2da1a594","isMergeCommit":false,"messageTitle":"Introduce more classes to OOP the app","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":232,"deletions":119}}}]}]},"authorFileTypeContributionMap":{"cheahTJ":{"java":595,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":8}},"authorContributionVariance":{"cheahTJ":15016.742},"authorDisplayNameMap":{"cheahTJ":"CS2103T-T15-2 CHEA..JUEN"}} +{"authorDailyContributionsMap":{"cheahTJ":[{"date":"2024-01-21","commitResults":[{"hash":"a5fa7a09aac34a6e0959092167f9b9ea3919754e","isMergeCommit":false,"messageTitle":"Renamed bot, added greeting and exit msgs","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"760c2753cd626dc800b05b9ea5276f802594afa7","isMergeCommit":false,"messageTitle":"Added echoing feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"867a5a216af01e9684fecbad78bf882af0e4ec30","isMergeCommit":false,"messageTitle":"Added storage of tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}}]},{"date":"2024-01-22","commitResults":[{"hash":"8f0bbe3c49d53357c70be67b866ec8b36127f62d","isMergeCommit":false,"messageTitle":"Added Task class and the ability to mark/unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":6}}},{"hash":"a000bc20212b52cc16cc611f6547e777dd48e475","isMergeCommit":false,"messageTitle":"Added ToDo, Events, Deadlines classes. Also added parser class to deal with user inputs","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":5}}}]},{"date":"2024-01-23","commitResults":[{"hash":"e04d704cd9ac2bfc54c2c40b8c574773154be374","isMergeCommit":false,"messageTitle":"Added input and expected output for TextUiTesting","messageBody":"","tags":["Level-A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"650312a57346c9353d5e61688ff2d9d167354216","isMergeCommit":false,"messageTitle":"Added a custom exception class and also handling all sorts of user incorrect/incomplete inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":35}}},{"hash":"f0949e0afb491475332597386190992cebe7105f","isMergeCommit":false,"messageTitle":"Added the delete feature, and deal with its corresponding possible error from user","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":31}}}]},{"date":"2024-01-28","commitResults":[{"hash":"7bfe55323fde9880fd16660ab6d7691f7bfda796","isMergeCommit":false,"messageTitle":"Save and load data from the hard disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":6}}},{"hash":"63b25f96897bdd625364068fda6da87cb2a1057b","isMergeCommit":false,"messageTitle":"Make Deadline object take in and output formatted DateTime object","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}}]},{"date":"2024-01-30","commitResults":[{"hash":"6917d00abeded7bdb9ec8eca72dcd3cc2da1a594","isMergeCommit":false,"messageTitle":"Introduce more classes to OOP the app","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":232,"deletions":119}}},{"hash":"8d0065a1969e827f58d2da6cc15ed1008223dafb","isMergeCommit":false,"messageTitle":"Organise the classes into suitable packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":20},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"bcbccfd7b8628bbc8720622755aaae2646b6b6f3","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"* add-gradle-support:\n Bump gradle and lib version\n Add Gradle support\n docs/README.md: Tweak document template\n","tags":["A-gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cheahTJ":{"java":658,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":8}},"authorContributionVariance":{"cheahTJ":20670.242},"authorDisplayNameMap":{"cheahTJ":"CS2103T-T15-2 CHEA..JUEN"}} diff --git a/chonghaoen_ip_master/authorship.json b/chonghaoen_ip_master/authorship.json index 930dbf7a..971b0375 100644 --- a/chonghaoen_ip_master/authorship.json +++ b/chonghaoen_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" public Deadline(String name, String by) throws DateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" this.by \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM-dd-yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":" private final TaskManager tm \u003d new TaskManager();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" private void greet() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Hello! I\u0027m Friendy.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" private void farewell() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Bye. I will miss you!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" private void addTask(Task t) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" tm.addTask(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" private String[] listen() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" return sc.nextLine().split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" private void list() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":" tm.listTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"chonghaoen"},"content":" private void mark(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Setting task as done...\");","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"chonghaoen"},"content":" tm.markDone(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"chonghaoen"},"content":" tm.listTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"chonghaoen"},"content":" private void unmark(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Setting task as not done...\");","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"chonghaoen"},"content":" tm.undo(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"chonghaoen"},"content":" tm.listTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"chonghaoen"},"content":" private void delete(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Deleting task...\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"chonghaoen"},"content":" tm.deleteTask(i);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"chonghaoen"},"content":" private Event createEvent(String s) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"chonghaoen"},"content":" int fromIndex \u003d s.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"chonghaoen"},"content":" int toIndex \u003d s.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"chonghaoen"},"content":" if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1 || s.length() \u003c 7) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Format Error, Event must be in format: Event /from YYYY-MM-DD HHmm /to YYYY-MM-DD HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"chonghaoen"},"content":" String eventName \u003d s.substring(6, fromIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"chonghaoen"},"content":" String from \u003d s.substring(fromIndex + 6, toIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"chonghaoen"},"content":" String to \u003d s.substring(toIndex + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"chonghaoen"},"content":" return new Event(eventName, from, to);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"chonghaoen"},"content":" } catch (StringIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Format Error, Event must be in format: Event /from YYYY-MM-DD HHmm /to YYYY-MM-DD HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"chonghaoen"},"content":" private Deadline createDeadline(String s) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"chonghaoen"},"content":" int byIndex \u003d s.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"chonghaoen"},"content":" if (byIndex \u003d\u003d -1 || s.length() \u003c 10) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Format Error, Deadline must be in format: Deadline /by YYYY-MM-DD HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"chonghaoen"},"content":" String deadlineName \u003d s.substring(9, byIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"chonghaoen"},"content":" String deadlineBy \u003d s.substring(byIndex + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"chonghaoen"},"content":" return new Deadline(deadlineName, deadlineBy);","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"chonghaoen"},"content":" } catch (StringIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Format Error, Deadline must be in format: Deadline /by YYYY-MM-DD HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"chonghaoen"},"content":" private Todo createTodo(String s) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"chonghaoen"},"content":" if (s.length() \u003c 6) {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Error, description of todo is missing\");","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"chonghaoen"},"content":" String name \u003d s.substring(5);","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"chonghaoen"},"content":" return new Todo(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"chonghaoen"},"content":" Duke d \u003d new Duke();","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"chonghaoen"},"content":" d.greet();","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"chonghaoen"},"content":" boolean end \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"chonghaoen"},"content":" while(!end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"chonghaoen"},"content":" String[] s \u003d d.listen();","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"chonghaoen"},"content":" String s1 \u003d String.join(\" \", s);","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"chonghaoen"},"content":" switch (s[0]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"chonghaoen"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"chonghaoen"},"content":" d.farewell();","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"chonghaoen"},"content":" end \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"chonghaoen"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"chonghaoen"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"chonghaoen"},"content":" d.list();","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"chonghaoen"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"chonghaoen"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"chonghaoen"},"content":" d.mark(Integer.parseInt(s[1]));","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"chonghaoen"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"chonghaoen"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"chonghaoen"},"content":" d.unmark(Integer.parseInt(s[1]));","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"chonghaoen"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"chonghaoen"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"chonghaoen"},"content":" d.delete(Integer.parseInt(s[1]));","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"chonghaoen"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"chonghaoen"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"chonghaoen"},"content":" Todo t \u003d d.createTodo(s1);","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"chonghaoen"},"content":" d.addTask(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"chonghaoen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"chonghaoen"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"chonghaoen"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"chonghaoen"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"chonghaoen"},"content":" Deadline dl \u003d d.createDeadline(s1);","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"chonghaoen"},"content":" d.addTask(dl);","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"chonghaoen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"chonghaoen"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"chonghaoen"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"chonghaoen"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"chonghaoen"},"content":" Event e \u003d d.createEvent(s1);","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"chonghaoen"},"content":" d.addTask(e);","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"chonghaoen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"chonghaoen"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"chonghaoen"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"chonghaoen"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Unknown Command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"chonghaoen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"chonghaoen"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"chonghaoen"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":143,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":139,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":" DukeException(String msg) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":" super(msg);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":" public Event(String name, String from, String to) throws DateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" this.from \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" this.to \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM-dd-yyyy HHmm\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" + \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM-dd-yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":21}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":" private String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":" public Task(String s) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":" this.name \u003d s;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" public void setDone(Boolean b) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" this.isDone \u003d b;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" public String toString(){","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.name;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":19}},{"path":"src/main/java/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"public class TaskManager {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" private int numOfTask \u003d 0;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"added: \");","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" this.list.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" this.numOfTask++;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"There are now \" + this.numOfTask + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" this.saveTaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" System.out.println(count + \".\" + t.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":" count++;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" public void markDone(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":" Task t \u003d list.get(i - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":" t.setDone(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" this.saveTaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"chonghaoen"},"content":" public void undo(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"chonghaoen"},"content":" Task t \u003d list.get(i - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"chonghaoen"},"content":" t.setDone(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"chonghaoen"},"content":" this.saveTaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"chonghaoen"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"chonghaoen"},"content":" Task t \u003d list.remove(i - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"chonghaoen"},"content":" this.numOfTask--;","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"chonghaoen"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"There are now \" + this.numOfTask + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"chonghaoen"},"content":" this.saveTaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"chonghaoen"},"content":" public void saveTaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"chonghaoen"},"content":" File taskList \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"chonghaoen"},"content":" if (!taskList.getParentFile().exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"chonghaoen"},"content":" taskList.getParentFile().mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"chonghaoen"},"content":" if (!taskList.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"chonghaoen"},"content":" taskList.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"chonghaoen"},"content":" FileWriter fw \u003d new FileWriter(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"chonghaoen"},"content":" if (this.numOfTask \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"chonghaoen"},"content":" fw.write(\"There is 1 task in the list.\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"chonghaoen"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"chonghaoen"},"content":" fw.write(\"There are \" + this.numOfTask + \" tasks in the list.\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"chonghaoen"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"chonghaoen"},"content":" fw.append(t.toString() + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"chonghaoen"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"chonghaoen"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":67}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":" public Todo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"hahaha","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"todo eat dinner","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"deadline 2103","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"deadline 2103 /by","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"deadline 2103 /by Thur 2359","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"event tutorial /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"delete 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":"event tutorial /from Tue 2pm","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":13}}] +[{"path":"src/main/java/Command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import Utility.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import Utility.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import Utility.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" private Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" public AddCommand(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" this.task \u003d t;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" public void execute(TaskList list, Ui ui, Storage s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" ui.showAdd();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" ui.showTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" list.addTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" ui.showNumOfTask(list.getList().size());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":" s.storeTaskList(list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":30}},{"path":"src/main/java/Command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import Utility.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import Utility.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import Utility.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" public abstract void execute(TaskList list, Ui ui, Storage s);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":12}},{"path":"src/main/java/Command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"import Utility.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"import Utility.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"import Utility.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" private int taskNumber;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" public DeleteCommand(int i) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" this.taskNumber \u003d i;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" public void execute(TaskList list, Ui ui, Storage s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" ui.showDelete();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" list.deleteTask(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" s.storeTaskList(list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":" } catch (IOException | DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" ui.listTasks(list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":30}},{"path":"src/main/java/Command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import Utility.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import Utility.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import Utility.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" public void execute(TaskList list, Ui ui, Storage s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":" ui.farewell();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":15}},{"path":"src/main/java/Command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import Utility.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import Utility.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import Utility.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" public void execute(TaskList list, Ui ui, Storage s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":" ui.listTasks(list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":15}},{"path":"src/main/java/Command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"import Utility.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"import Utility.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"import Utility.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" private int taskNumber;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" public MarkCommand(int i) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" this.taskNumber \u003d i;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" public void execute(TaskList list, Ui ui, Storage s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" ui.showMark();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" list.markDone(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" s.storeTaskList(list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" } catch (IOException | DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" ui.listTasks(list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":29}},{"path":"src/main/java/Command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"import Utility.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"import Utility.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"import Utility.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" private int taskNumber;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" public UnmarkCommand(int i) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" this.taskNumber \u003d i;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" public void execute(TaskList list, Ui ui, Storage s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" ui.showUnmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" list.undo(this.taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" s.storeTaskList(list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":" } catch (IOException | DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" ui.listTasks(list.getList());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":30}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import Utility.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import Utility.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"import Utility.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"import Utility.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"import Command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" private TaskList list;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" list \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":" } catch (DukeException | IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":" ui.greet();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":" boolean end \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"chonghaoen"},"content":" while (!end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"chonghaoen"},"content":" String input \u003d ui.readInput();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"chonghaoen"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"chonghaoen"},"content":" c.execute(list, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"chonghaoen"},"content":" end \u003d c.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chonghaoen"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"chonghaoen"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"chonghaoen"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":46,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":42,"-":4}},{"path":"src/main/java/Exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":" public DukeException(String msg) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":" super(msg);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":7}},{"path":"src/main/java/Task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" public Deadline(String name, String by) throws DateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" this.by \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM-dd-yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":20}},{"path":"src/main/java/Task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" public Event(String name, String from, String to) throws DateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" this.from \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" this.to \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM-dd-yyyy HHmm\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":" + \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM-dd-yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":23}},{"path":"src/main/java/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":" private String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":" public Task(String s) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":" this.name \u003d s;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" public void setDone(Boolean b) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" this.isDone \u003d b;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.name;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":21}},{"path":"src/main/java/Task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":" public Todo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":13}},{"path":"src/main/java/Utility/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Utility;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"import Task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":"import Task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"import Task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":"import Command.DeleteCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":"import Command.AddCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":"import Command.MarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":"import Command.ListCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":"import Command.UnmarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":"import Command.ExitCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":"import Command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" private static Event createEvent(String s) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" int fromIndex \u003d s.indexOf(\"/from\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":" int toIndex \u003d s.indexOf(\"/to\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":" if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1 || s.length() \u003c 7) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Format Error, Event must be in format: Event /from YYYY-MM-DD HHmm /to YYYY-MM-DD HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":" String eventName \u003d s.substring(6, fromIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"chonghaoen"},"content":" String from \u003d s.substring(fromIndex + 6, toIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"chonghaoen"},"content":" String to \u003d s.substring(toIndex + 4);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"chonghaoen"},"content":" return new Event(eventName, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"chonghaoen"},"content":" } catch (StringIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Format Error, Event must be in format: Event /from YYYY-MM-DD HHmm /to YYYY-MM-DD HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"chonghaoen"},"content":" private static Deadline createDeadline(String s) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"chonghaoen"},"content":" int byIndex \u003d s.indexOf(\"/by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"chonghaoen"},"content":" if (byIndex \u003d\u003d -1 || s.length() \u003c 10) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Format Error, Deadline must be in format: Deadline /by YYYY-MM-DD HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"chonghaoen"},"content":" String deadlineName \u003d s.substring(9, byIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"chonghaoen"},"content":" String deadlineBy \u003d s.substring(byIndex + 4);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"chonghaoen"},"content":" return new Deadline(deadlineName, deadlineBy);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"chonghaoen"},"content":" } catch (StringIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Format Error, Deadline must be in format: Deadline /by YYYY-MM-DD HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"chonghaoen"},"content":" private static Todo createTodo(String s) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"chonghaoen"},"content":" if (s.length() \u003c 6) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Error, description of todo is missing\");","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"chonghaoen"},"content":" String name \u003d s.substring(5);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"chonghaoen"},"content":" return new Todo(name);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"chonghaoen"},"content":" public static Command parse(String command) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"chonghaoen"},"content":" String[] s \u003d command.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"chonghaoen"},"content":" switch (s[0]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"chonghaoen"},"content":" case \"bye\":","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"chonghaoen"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"chonghaoen"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"chonghaoen"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"chonghaoen"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"chonghaoen"},"content":" if (command.length() \u003c 6) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Task not indicated\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"chonghaoen"},"content":" return new MarkCommand(Integer.parseInt(s[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"chonghaoen"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"chonghaoen"},"content":" if (command.length() \u003c 8) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Task not indicated\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"chonghaoen"},"content":" return new UnmarkCommand(Integer.parseInt(s[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"chonghaoen"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"chonghaoen"},"content":" if (command.length() \u003c 8) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Task not indicated\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"chonghaoen"},"content":" return new DeleteCommand(Integer.parseInt(s[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"chonghaoen"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"chonghaoen"},"content":" return new AddCommand(createTodo(command));","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"chonghaoen"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"chonghaoen"},"content":" return new AddCommand(createDeadline(command));","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"chonghaoen"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"chonghaoen"},"content":" return new AddCommand(createEvent(command));","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"chonghaoen"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Unknown Command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"chonghaoen"},"content":" private static String formatDate(String s) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"chonghaoen"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM-dd-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"chonghaoen"},"content":" LocalDateTime date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"chonghaoen"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"chonghaoen"},"content":" return date.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"chonghaoen"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"File is of wrong format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"chonghaoen"},"content":" public static Task parseFile(String s) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"chonghaoen"},"content":" Task t;","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"chonghaoen"},"content":" if (s.charAt(1) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"chonghaoen"},"content":" t \u003d new Todo(s.substring(7));","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"chonghaoen"},"content":" } else if (s.charAt(1) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"chonghaoen"},"content":" int byIndex \u003d s.indexOf(\"(by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"chonghaoen"},"content":" if (byIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"File is of wrong format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"chonghaoen"},"content":" String deadlineName \u003d s.substring(7, byIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"chonghaoen"},"content":" String deadlineBy \u003d s.substring(byIndex + 5, s.length() - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"chonghaoen"},"content":" t \u003d new Deadline(deadlineName, formatDate(deadlineBy));","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"chonghaoen"},"content":" } else if (s.charAt(1) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"chonghaoen"},"content":" int fromIndex \u003d s.indexOf(\"(from:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"chonghaoen"},"content":" int toIndex \u003d s.indexOf(\"to:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"chonghaoen"},"content":" if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1 ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"File is of wrong format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"chonghaoen"},"content":" String eventName \u003d s.substring(7, fromIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"chonghaoen"},"content":" String eventFrom \u003d s.substring(fromIndex + 7, toIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"chonghaoen"},"content":" String eventTo \u003d s.substring(toIndex + 4, s.length() - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"chonghaoen"},"content":" t \u003d new Event(eventName, formatDate(eventFrom), formatDate(eventTo));","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"chonghaoen"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"File is of wrong format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"chonghaoen"},"content":" if (s.charAt(4) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"chonghaoen"},"content":" t.setDone(true);","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"chonghaoen"},"content":" } else if (s.charAt(4) \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"chonghaoen"},"content":" t.setDone(false);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"chonghaoen"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"File is of wrong format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"chonghaoen"},"content":" return t;","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":141}},{"path":"src/main/java/Utility/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Utility;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" private String filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" public void storeTaskList(ArrayList\u003cTask\u003e list) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" File taskList \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" if (!taskList.getParentFile().exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":" taskList.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" if (!taskList.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" taskList.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":" FileWriter fw \u003d new FileWriter(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" if (list.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":" fw.write(\"There is 1 task in the list.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chonghaoen"},"content":" fw.write(\"There are \" + list.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"chonghaoen"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"chonghaoen"},"content":" fw.append(t.toString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"chonghaoen"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"chonghaoen"},"content":" public ArrayList\u003cTask\u003e load() throws IOException, DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"chonghaoen"},"content":" File taskList \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"chonghaoen"},"content":" if (!taskList.getParentFile().exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"chonghaoen"},"content":" taskList.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"chonghaoen"},"content":" if (!taskList.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"chonghaoen"},"content":" taskList.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"chonghaoen"},"content":" Scanner sc \u003d new Scanner(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"chonghaoen"},"content":" sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"chonghaoen"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"chonghaoen"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"chonghaoen"},"content":" String line \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"chonghaoen"},"content":" if (line \u003d\u003d \"\\n\") {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"chonghaoen"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"chonghaoen"},"content":" Task t \u003d Parser.parseFile(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"chonghaoen"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"chonghaoen"},"content":" return list;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":59}},{"path":"src/main/java/Utility/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Utility;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" private final ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" return this.list;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" this.list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":" public void markDone(int i) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":" Task t \u003d list.get(i - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":" t.setDone(true);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chonghaoen"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Task not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"chonghaoen"},"content":" public void undo(int i) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"chonghaoen"},"content":" Task t \u003d list.get(i - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"chonghaoen"},"content":" t.setDone(false);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"chonghaoen"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Task not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"chonghaoen"},"content":" public void deleteTask(int i) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"chonghaoen"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"chonghaoen"},"content":" Task t \u003d list.remove(i - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"chonghaoen"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"chonghaoen"},"content":" throw new DukeException(\"Task not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":51}},{"path":"src/main/java/Utility/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"package Utility;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"import Task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":" public void greet() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Hello! I\u0027m Friendy.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"chonghaoen"},"content":" public void farewell() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Bye. I will miss you!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"chonghaoen"},"content":" public void showError(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"chonghaoen"},"content":" System.out.println(s);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"chonghaoen"},"content":" public void showMark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Setting task as done...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"chonghaoen"},"content":" public void showUnmark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Setting task as not done...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"chonghaoen"},"content":" public void showDelete() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"Deleting task...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"chonghaoen"},"content":" public void showNumOfTask(int i) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"chonghaoen"},"content":" if (i \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"There is 1 task in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"chonghaoen"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"There are \" + i + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"chonghaoen"},"content":" public void showAdd() {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"chonghaoen"},"content":" System.out.println(\"added: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"chonghaoen"},"content":" public void showTask(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"chonghaoen"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"chonghaoen"},"content":" public void listTasks(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"chonghaoen"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"chonghaoen"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"chonghaoen"},"content":" System.out.println(count + \".\" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"chonghaoen"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"chonghaoen"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"chonghaoen"},"content":" public String readInput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"chonghaoen"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"chonghaoen"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"chonghaoen"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"chonghaoen":62}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"chonghaoen"},"content":"hahaha","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"chonghaoen"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"chonghaoen"},"content":"todo eat dinner","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"chonghaoen"},"content":"deadline 2103","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"chonghaoen"},"content":"deadline 2103 /by","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"chonghaoen"},"content":"deadline 2103 /by Thur 2359","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"chonghaoen"},"content":"event tutorial /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"chonghaoen"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"chonghaoen"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"chonghaoen"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"chonghaoen"},"content":"delete 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"chonghaoen"},"content":"event tutorial /from Tue 2pm","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"chonghaoen"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"chonghaoen":13}}] diff --git a/chonghaoen_ip_master/commits.json b/chonghaoen_ip_master/commits.json index c1b21586..d93e7ce0 100644 --- a/chonghaoen_ip_master/commits.json +++ b/chonghaoen_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"chonghaoen":[{"date":"2024-01-23","commitResults":[{"hash":"a9d7d293b444e7d2543499be2a5bebb95bbed1e1","isMergeCommit":false,"messageTitle":"test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"10f05e21be5e250d1d1dd99818145a3c909ff8d9","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}}]},{"date":"2024-01-24","commitResults":[{"hash":"ce46c78e5b9635ae5200b56e4fcb5c1ace67a83d","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":2}}},{"hash":"e6138c41913544530549aa3d42dea93e3b0b2f7d","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":8}}},{"hash":"f41171b42fc6884339c35af0a93d315b3071beb1","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":7}}},{"hash":"29d860603218ebad572cf35450a9de335922af73","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":8}}},{"hash":"a0ca7d09b7da7d1d415b360d36ffe44d0d70cc63","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":2,"deletions":2}}},{"hash":"1649a4e029fb568b58b407a6deac7494d1cb58f5","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":16}}},{"hash":"d2c84c5bc92fb404c31dc1e43df8395a9123c65d","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":15,"deletions":1}}}]},{"date":"2024-01-29","commitResults":[{"hash":"70686786299fb41dc75d344abd299a13d657625b","isMergeCommit":false,"messageTitle":"Add saving of task list in the hard disk.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":39,"deletions":7}}},{"hash":"f9cc03da258fe84892607568c2aab322300af867","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"55e0319e48cc0783579cbb164aef7c9d51553442","isMergeCommit":false,"messageTitle":"Add parsing of date and time of tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":16}}},{"hash":"cc4aec2fae47176e9d5903889e1412abed00f38c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"chonghaoen":{"java":280,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":13}},"authorContributionVariance":{"chonghaoen":8192.5205},"authorDisplayNameMap":{"chonghaoen":"CS2103T-T08-2 ISAA..O EN"}} +{"authorDailyContributionsMap":{"chonghaoen":[{"date":"2024-01-23","commitResults":[{"hash":"a9d7d293b444e7d2543499be2a5bebb95bbed1e1","isMergeCommit":false,"messageTitle":"test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"10f05e21be5e250d1d1dd99818145a3c909ff8d9","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}}]},{"date":"2024-01-24","commitResults":[{"hash":"ce46c78e5b9635ae5200b56e4fcb5c1ace67a83d","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":2}}},{"hash":"e6138c41913544530549aa3d42dea93e3b0b2f7d","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":8}}},{"hash":"f41171b42fc6884339c35af0a93d315b3071beb1","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":7}}},{"hash":"29d860603218ebad572cf35450a9de335922af73","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":8}}},{"hash":"a0ca7d09b7da7d1d415b360d36ffe44d0d70cc63","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":2,"deletions":2}}},{"hash":"1649a4e029fb568b58b407a6deac7494d1cb58f5","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":16}}},{"hash":"d2c84c5bc92fb404c31dc1e43df8395a9123c65d","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":15,"deletions":1}}}]},{"date":"2024-01-29","commitResults":[{"hash":"70686786299fb41dc75d344abd299a13d657625b","isMergeCommit":false,"messageTitle":"Add saving of task list in the hard disk.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":39,"deletions":7}}},{"hash":"f9cc03da258fe84892607568c2aab322300af867","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"55e0319e48cc0783579cbb164aef7c9d51553442","isMergeCommit":false,"messageTitle":"Add parsing of date and time of tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":16}}},{"hash":"cc4aec2fae47176e9d5903889e1412abed00f38c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"8ca9a982d0c15f6058c383b19afcab73294271f5","isMergeCommit":false,"messageTitle":"Add more OOP to Duke.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":427,"deletions":197}}},{"hash":"5735f59b45d72cbeffcdea9e6066af0b2ed9a6f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"0256c81d1599dd53500bd4fcda8ffcd4c753977e","isMergeCommit":false,"messageTitle":"Add packaging of classes.","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"chonghaoen":{"java":600,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":13}},"authorContributionVariance":{"chonghaoen":48859.246},"authorDisplayNameMap":{"chonghaoen":"CS2103T-T08-2 ISAA..O EN"}} diff --git a/cyqjoseph_ip_master/authorship.json b/cyqjoseph_ip_master/authorship.json index 0e3a6c03..26163966 100644 --- a/cyqjoseph_ip_master/authorship.json +++ b/cyqjoseph_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":"cyqjoseph"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-30"},{"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":"cyqjoseph"},"content":"checkstyle {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"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":"cyqjoseph"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2024-01-26"},{"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":{"cyqjoseph":6,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | test1","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"T | 1 | test2","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | Have Dinner","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | lunch meeting | 2023-01-05T12:00 to 2023-01-05T14:00","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | project meeting | 2023-05-23T00:00 to 2024-07-01T00:00","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | project meeting | 2023-05-23T00:00 to 2025-07-01T00:00","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"cyqjoseph":6}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":" * Starter Duke Class.","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"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":"cyqjoseph"},"content":" RoeBot bot \u003d new RoeBot();","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" bot.start();","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"cyqjoseph":5,"-":4}},{"path":"src/main/java/RoeBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"import commands.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.parser.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Represents a RoeBot.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class RoeBot {","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" private Storage storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private UI ui;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private Parser parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public RoeBot() {","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" this.ui \u003d new UI();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public void start() {","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" storage.loadTasks(this.taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"FIX THIS ERROR\");","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" this.ui.printIntroMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" String userInput;","lastModifiedDate":"2024-01-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" do {","lastModifiedDate":"2024-01-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" userInput \u003d this.ui.nextCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" Command c \u003d this.parser.parseCommand(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" c.execute(taskList, ui, storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" } while (!userInput.equals(\"bye\"));","lastModifiedDate":"2024-01-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":40}},{"path":"src/main/java/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * Add Deadline to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public AddDeadlineCommand(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" Deadline deadline \u003d new Deadline(this.name, this.by);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":27}},{"path":"src/main/java/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * Add Event to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public AddEventCommand(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(this.name, this.start, this.end);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(event);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":30}},{"path":"src/main/java/commands/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Add Todo to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class AddTodoCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public AddTodoCommand(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(this.name);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(todo);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":23}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * Represents an executable command as an abstract class.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public abstract void execute(TaskList taskList, UI ui, Storage storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":13}},{"path":"src/main/java/commands/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public DeleteTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" taskList.deleteTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tIndex out of range!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":27}},{"path":"src/main/java/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * Exits the program.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" ui.printExitMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":16}},{"path":"src/main/java/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Finds a task from the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public FindCommand(String name) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" taskList.findTasks(this.name);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNo task with \" + this.name + \" found\");","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"cyqjoseph":26}},{"path":"src/main/java/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * Represents an invalid command.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" private String message;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public InvalidCommand(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" this.message \u003d message;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" ui.printMessage(this.message);","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":20}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * List task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" taskList.listTasks();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":16}},{"path":"src/main/java/commands/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Marks task as done command.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public MarkTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" taskList.markTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tList index out of range\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":26}},{"path":"src/main/java/commands/UnmarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Marks tasks as undone command.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public UnmarkTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public void execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" taskList.unmarkTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tList index out of range\");","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":25}},{"path":"src/main/java/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Custom DukeException.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" super(\"\\t\" + message);","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":10}},{"path":"src/main/java/services/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.parser.Parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" * The Storage class is responsible for handling the loading and saving of tasks to a file.","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"public class Storage {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public Storage() {};","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * Loads tasks from the file at FILE_PATH and adds them to the provided TaskList.","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" * @param taskList The TaskList to which tasks are to be added.","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * @throws IOException If an error occurs during file reading.","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public void loadTasks(TaskList taskList) throws IOException {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" String taskString \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" Task task \u003d Parser.parseTaskFromString(taskString);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" // MONKEY FIX","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" taskList.getTasks().add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when writing to file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when parsing file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" * Saves tasks from the provided TaskList to the file at FILE_PATH.","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" * @param taskList The TaskList whose tasks are to be saved.","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" public void saveTasks(TaskList taskList) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" for (Task task: taskList.getTasks()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" fileWriter.write(task.fileString() + \"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when writing to file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":65}},{"path":"src/main/java/services/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * The TaskList class manages a list of tasks, allowing for adding, deleting, marking, and unmarking tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class TaskList {","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private static final int MAX_ITEMS \u003d 100;","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a new TaskList.","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" public TaskList() {","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" * Returns the list of tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" * @return List of tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" return this.tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tGot it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + this.tasks.get(this.tasks.size() - 1));","lastModifiedDate":"2024-01-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(","lastModifiedDate":"2024-01-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" \"\\tNow you have \" + this.tasks.size() + \" task\"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" + (this.tasks.size() \u003d\u003d 1 ? \"\" : \"s\") + \" in the list\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" * Deletes a task from the task list based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" public void deleteTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-19"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Index out of range\");","lastModifiedDate":"2024-01-19"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" Task deletedTask \u003d this.tasks.remove(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNoted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + deletedTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(","lastModifiedDate":"2024-01-19"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" \"\\tNow you have \" + this.tasks.size() + \" task\"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" + (this.tasks.size() \u003d\u003d 1 ? \"\" : \"s\") + \" in the list\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" * Marks a task as done based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" public void markTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" currTask.markAsDone();","lastModifiedDate":"2024-01-19"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" currTask.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" * Unmarks a task (marks as not done) based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be unmarked.","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" public void unmarkTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" currTask.markAsUndone();","lastModifiedDate":"2024-01-19"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tOK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":" currTask.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" * Lists all tasks in the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-19"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-19"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tThe task list is empty.\");","lastModifiedDate":"2024-01-19"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" } else {","lastModifiedDate":"2024-01-19"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHere are the tasks in your list: \");","lastModifiedDate":"2024-01-19"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-19"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(i);","lastModifiedDate":"2024-01-19"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-19"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" public List\u003cTask\u003e findTasks(String word) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" Pattern pattern \u003d Pattern.compile(Pattern.quote(word), Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" List\u003cTask\u003e foundTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" for (Task task: this.tasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" Matcher matcher \u003d pattern.matcher(task.getName());","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":" foundTasks.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"cyqjoseph"},"content":" if (foundTasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"No tasks with \" + word + \" found\");","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHere are the matching tasks in your list: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d foundTasks.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" return foundTasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":136}},{"path":"src/main/java/services/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" * The {@code UI} class handles the user interface for the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * It provides methods to display messages to the user and to read user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class UI {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a new {@code UI} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" * Initializes the scanner to read input from the standard input stream.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public UI() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" * Reads the next command from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" * @return A string representing the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public String nextCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" * Prints the introductory message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public void printIntroMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHello! I\u0027m RoeBot!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" * Prints the exit message to the user and closes the scanner.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" public void printExitMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" * Prints a given message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" * @param message The message to be printed.","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" public void printMessage(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + message);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" * Prints a horizontal line for UI separation.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t_________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":62}},{"path":"src/main/java/services/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services.parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.*;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.*;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" * The Parser class is responsible for interpreting user inputs and converting them into commands.","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" * It handles various types of commands including adding tasks, marking tasks as done or undone,","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" * deleting tasks, and exiting the program.","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"public class Parser {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to determine the type of command to be executed.","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" * @return Command The command corresponding to the user\u0027s input.","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" String initialCommand \u003d parsed[0].toUpperCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" switch (initialCommand) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" case \"EVENT\":","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" return parseAddEvent(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" case \"DEADLINE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" return parseAddDeadline(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" case \"TODO\":","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" return parseAddTodo(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" case \"MARK\":","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return parseMark(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" case \"UNMARK\":","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" return parseUnmark(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" case \"DELETE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" return parseDelete(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" case \"FIND\":","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" return parseFind(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" case \"LIST\":","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" case \"BYE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" // return new HelpCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"INVALID\");","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddEventCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddEventCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" public Command parseAddEvent(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" String[] parsedEvent \u003d taskDesc.split(\" /from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" if (parsedEvent.length \u003c\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter valid event format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" String eventName \u003d parsedEvent[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime start \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime end \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" start \u003d parseDate(parsedEvent[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" end \u003d parseDate(parsedEvent[2]);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Invalid date format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" return new AddEventCommand(eventName, start, end);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddDeadlineCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddDeadlineCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" public Command parseAddDeadline(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" String[] parsedDeadline \u003d taskDesc.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" if (parsedDeadline.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter a valid deadline format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":" String deadlineName \u003d parsedDeadline[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" by \u003d parseDate(parsedDeadline[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter a valid deadline format!!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" return new AddDeadlineCommand(deadlineName, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddTodoCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddTodoCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" public Command parseAddTodo(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" return new AddTodoCommand(taskDesc);","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a DeleteTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A DeleteTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"cyqjoseph"},"content":" public Command parseDelete(String userInput) {","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a UnmarkTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A UnmarkTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"cyqjoseph"},"content":" public Command parseUnmark(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" return new UnmarkTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a MarkTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A MarkTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" public Command parseMark(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":" return new MarkTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an FindCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A FindCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":" public Command parseFind(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an task to find\");","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":" return new FindCommand(parsed[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":" * Parses a date string into a LocalDateTime object.","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":" * @param dateString The date string to parse.","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":" * @return LocalDateTime The parsed LocalDateTime object.","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the date string cannot be parsed into a valid date and time.","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"cyqjoseph"},"content":" public LocalDateTime parseDate(String dateString) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"cyqjoseph"},"content":" List\u003cDateTimeFormatter\u003e dateTimeFormatters \u003d Arrays.asList(","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M/d/yyyy h:mm a\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMM yyyy h:mma\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"MMM d, yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyyMMdd h:mm a\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy/M/d h:mma\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMMM yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d h:mm a\")","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"cyqjoseph"},"content":" List\u003cDateTimeFormatter\u003e dateFormatters \u003d Arrays.asList(","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M/d/yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy/M/d\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M-d-yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":209,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMM yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"MMM d, yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMMM yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyyMMdd\")","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"cyqjoseph"},"content":" for (DateTimeFormatter formatter : dateTimeFormatters) {","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"cyqjoseph"},"content":" return LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"cyqjoseph"},"content":" // Continue to try the next format","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"cyqjoseph"},"content":" for (DateTimeFormatter formatter : dateFormatters) {","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"cyqjoseph"},"content":" return LocalDate.parse(dateString, formatter).atStartOfDay();","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"cyqjoseph"},"content":" // Continue to try the next format","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid Date and time format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":234,"author":{"gitId":"cyqjoseph"},"content":" * Parses a task string representation from a file into a Task object.","lastModifiedDate":"2024-01-26"},{"lineNumber":235,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":236,"author":{"gitId":"cyqjoseph"},"content":" * @param taskString The string representation of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":237,"author":{"gitId":"cyqjoseph"},"content":" * @return Task The Task object parsed from the string.","lastModifiedDate":"2024-01-26"},{"lineNumber":238,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the task string cannot be parsed into a valid task.","lastModifiedDate":"2024-01-26"},{"lineNumber":239,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":240,"author":{"gitId":"cyqjoseph"},"content":" public static Task parseTaskFromString(String taskString) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"cyqjoseph"},"content":" String[] parts \u003d taskString.split(\" \\\\| \");","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"cyqjoseph"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"cyqjoseph"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"cyqjoseph"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"cyqjoseph"},"content":" String additionalInfo \u003d parts.length \u003e 3 ? parts[3].trim() : null;","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"cyqjoseph"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"cyqjoseph"},"content":" case \"T\":","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":250,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":251,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":252,"author":{"gitId":"cyqjoseph"},"content":" return todo;","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"cyqjoseph"},"content":" case \"D\":","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"cyqjoseph"},"content":" if (additionalInfo \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid tasks.Deadline format in file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime by \u003d LocalDateTime.parse(additionalInfo);","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"cyqjoseph"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":260,"author":{"gitId":"cyqjoseph"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":261,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":262,"author":{"gitId":"cyqjoseph"},"content":" return deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":263,"author":{"gitId":"cyqjoseph"},"content":" case \"E\":","lastModifiedDate":"2024-01-25"},{"lineNumber":264,"author":{"gitId":"cyqjoseph"},"content":" String[] times \u003d additionalInfo.split(\" to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":265,"author":{"gitId":"cyqjoseph"},"content":" if (times.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":266,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid tasks.Event time format in file.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":267,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":268,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime start \u003d LocalDateTime.parse(times[0].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":269,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime end \u003d LocalDateTime.parse(times[1].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":270,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":271,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-25"},{"lineNumber":272,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"cyqjoseph"},"content":" return event;","lastModifiedDate":"2024-01-25"},{"lineNumber":277,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":278,"author":{"gitId":"cyqjoseph"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":279,"author":{"gitId":"cyqjoseph"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":280,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":281,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":282,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":282}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Deadline, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public Deadline(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public String formatBy() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatBy() + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" return \"D \" + super.fileString() + \" | \" + this.by;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":30}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * Represents an Event, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public Event(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public String formatDate(LocalDateTime startEnd) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" return startEnd.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formatDate(this.start) + \" to: \" + formatDate(this.end) + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" return \"E \" + super.fileString() + \" | \" + this.start + \" to \" + this.end;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":33}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public String getName() {","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" return this.name;","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public String getStatus() {","lastModifiedDate":"2024-01-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" return \"[\" + getStatus() + \"] \" + this.name;","lastModifiedDate":"2024-01-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" return \"| \" + (this.isDone ? \"1\" : \"0\") + \" | \" + this.name;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":38}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Todo, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" return \"T \" + super.fileString();","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":20}},{"path":"src/test/java/commands/AddEventCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class AddEventCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public void toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Have Dinner\", LocalDateTime.of(2024, 1, 25, 8, 0), LocalDateTime.of(2024, 1, 25, 9, 30));","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[E][ ] Have Dinner (from: Jan 25 2024 08:00 AM to: Jan 25 2024 09:30 AM)\", event.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public void fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Borrow books\", LocalDateTime.of(1999, 1, 25, 8, 0), LocalDateTime.of(2099, 1, 25, 9, 30));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"E | 0 | Borrow books | 1999-01-25T08:00 to 2099-01-25T09:30\", event.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Play Bridge\", LocalDateTime.of(2024, 1, 10, 8, 0), LocalDateTime.of(2024, 1, 12, 10, 45));","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[E][X] Play Bridge (from: Jan 10 2024 08:00 AM to: Jan 12 2024 10:45 AM)\", event.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Play Baccarat\", LocalDateTime.of(2024, 1, 22, 23, 0), LocalDateTime.of(2024, 1, 23, 7, 00));","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"E | 1 | Play Baccarat | 2024-01-22T23:00 to 2024-01-23T07:00\", event.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":37}},{"path":"src/test/java/commands/AddTodoCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class AddTodoCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public void toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Have Dinner\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[T][ ] Have Dinner\", todo.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public void fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Borrow books\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"T | 0 | Borrow books\", todo.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Have Breakfast\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[T][X] Have Breakfast\", todo.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Return Books\");","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"T | 1 | Return Books\", todo.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":35}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | lunch meeting | 2023-01-05T12:00 to 2023-01-05T14:00","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"todo borrow book","lastModifiedDate":"2024-01-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"deadline return book /by 2020-05-13","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"event project meeting /from 05/23/2023 /to 01/07/2024","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"mark 2","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"mark 1","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"unmark 1","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"event lunch meeting /from 05/01/2023 1200 /to 05/01/2023 1400","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"find lunch","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"delete 2","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"event","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"event hello","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"unmark -1","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"unmark 5","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"deadline /by Tuesday","lastModifiedDate":"2024-01-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"delete 0","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"delete 2","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"event lunch meeting /from 05/01/2023 1200 /to 05/01/2023 2500","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"bye","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":25}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"# roebot.Duke project template","lastModifiedDate":"2024-01-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":"cyqjoseph"},"content":"3. After that, locate the `src/main/java/roebot.Duke.java` file, right-click it, and choose `Run roebot.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":"2024-01-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":{"cyqjoseph":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":"cyqjoseph"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.0.13\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"javafx {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" version \u003d \"17.0.8\"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" modules \u003d [ \u0027javafx.controls\u0027, \u0027javafx.fxml\u0027 ]","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-30"},{"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":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"checkstyle {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" mainClass.set(\"roebot.Main\")","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"cyqjoseph":12,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | test2","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"E | 1 | lunch meeting | 2023-01-05T12:00 to 2023-01-05T14:00","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | project meeting | 2023-05-23T00:00 to 2024-07-01T00:00","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | project meeting | 2023-05-23T00:00 to 2025-07-01T00:00","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"cyqjoseph":4}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"# roebot.Duke User Guide","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"// Update the title above to match the actual product name","lastModifiedDate":"2024-01-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"// Product screenshot goes here","lastModifiedDate":"2024-01-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"// Product intro goes here","lastModifiedDate":"2024-01-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"## Adding deadlines","lastModifiedDate":"2024-01-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"// Describe the action and its outcome.","lastModifiedDate":"2024-01-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"// Give examples of usage","lastModifiedDate":"2024-01-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Example: `keyword (optional arguments)`","lastModifiedDate":"2024-01-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"// A description of the expected outcome goes here","lastModifiedDate":"2024-01-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2024-01-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"expected output","lastModifiedDate":"2024-01-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2024-01-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"## Feature ABC","lastModifiedDate":"2024-01-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"// Feature details","lastModifiedDate":"2024-01-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"## Feature XYZ","lastModifiedDate":"2024-01-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"// Feature details","lastModifiedDate":"2024-01-07"}],"authorContributionMap":{"cyqjoseph":1,"-":29}},{"path":"src/main/java/commands/AbstractCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * Represents an executable command as an abstract class.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"public abstract class AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public abstract UserCommand execute(TaskList taskList, UI ui, Storage storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":12}},{"path":"src/main/java/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * Add Deadline to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class AddDeadlineCommand extends AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public AddDeadlineCommand(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" Deadline deadline \u003d new Deadline(this.name, this.by);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tAdded deadline: \", \"\\t\" + deadline, taskList.getTaskSummary());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":28}},{"path":"src/main/java/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * Add Event to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class AddEventCommand extends AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public AddEventCommand(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(this.name, this.start, this.end);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(event);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tAdded event: \", \"\\t\" + event, taskList.getTaskSummary());","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":31}},{"path":"src/main/java/commands/AddTodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Add Todo to task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class AddTodoCommand extends AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public AddTodoCommand(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(this.name);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" taskList.addTask(todo);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tAdded todo: \", \"\\t\" + todo, taskList.getTaskSummary());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":24}},{"path":"src/main/java/commands/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class DeleteTaskCommand extends AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public DeleteTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" Task task \u003d taskList.deleteTask(this.index);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tSuccessfully removed task: \" + task, taskList.getTaskSummary());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tIndex out of range!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tIndex out of range!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":30}},{"path":"src/main/java/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * Exits the program.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class ExitCommand extends AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" ui.printExitMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" // monkey fix?","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" return new ExitUserCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":18}},{"path":"src/main/java/commands/ExitUserCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Command to exit the GUI .","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class ExitUserCommand extends UserCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cyqjoseph":7}},{"path":"src/main/java/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Finds a task from the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class FindCommand extends AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public FindCommand(String name) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" TaskList foundTasks \u003d taskList.findTasks(this.name);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tHere are the list of tasks: \", foundTasks.listTasks());","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNo task with \" + this.name + \" found\");","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tNo task with \" + this.name + \" found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"cyqjoseph":28}},{"path":"src/main/java/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * Represents an invalid command.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"public class InvalidCommand extends AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" private String message;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public InvalidCommand(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" this.message \u003d message;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" ui.printMessage(this.message);","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\t\" + this.message);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":21}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" * List task list command.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"public class ListCommand extends AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(taskList.listTasks());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":16}},{"path":"src/main/java/commands/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Marks task as done command.","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class MarkTaskCommand extends AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public MarkTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" taskList.markTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tI have marked this task as done\", \"\\t\" + taskList.getTask(this.index - 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tList index out of range\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tList index out of range\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":29}},{"path":"src/main/java/commands/UnmarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Marks tasks as undone command.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class UnmarkTaskCommand extends AbstractCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" private int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public UnmarkTaskCommand(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand execute(TaskList taskList, UI ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" taskList.unmarkTask(this.index);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" storage.saveTasks(taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tI have unmarked this task\", \"\\t\" + taskList.getTask(this.index - 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tList index out of range\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" return new UserCommand(\"\\tList index out of range\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":28}},{"path":"src/main/java/commands/UserCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" * */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class UserCommand {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" private final String messageToUser;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand(String ...args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" for (String arg: args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" sb.append(arg);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.messageToUser \u003d sb.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public String getMessageToUser() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" return this.messageToUser;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cyqjoseph":21}},{"path":"src/main/java/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Custom DukeException.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" super(\"\\t\" + message);","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":10}},{"path":"src/main/java/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package gui;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" @FXML","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" private Label dialog;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" @FXML","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" dialog.setText(text);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" private void flip() {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" public static DialogBox getRoeBotDialog(String text, Image img) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" db.flip();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" return db;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cyqjoseph":61}},{"path":"src/main/java/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package gui;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.ExitUserCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import commands.UserCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"import roebot.RoeBot;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @FXML","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" @FXML","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" @FXML","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" private TextField userInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" @FXML","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" private Button sendButton;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" private Stage stage;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" private RoeBot roeBot;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" private final Image ROEBOT_IMAGE \u003d new Image(this.getClass().getResourceAsStream(\"/images/roebot.png\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" private final Image USER_IMAGE \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.png\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" @FXML","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" public void initialize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" DialogBox.getRoeBotDialog(\"\\tWelcome! What do you want to do today?\", ROEBOT_IMAGE)","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" public void setRoeBot(RoeBot d, Stage stage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" this.roeBot \u003d d;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" this.stage \u003d stage;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" @FXML","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" UserCommand userCommand \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" userCommand \u003d this.roeBot.getResult(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" if (userCommand instanceof ExitUserCommand) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" handleExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" String response \u003d userCommand.getMessageToUser();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" userInput.clear();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" if (userCommand \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" DialogBox.getUserDialog(input, USER_IMAGE)","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" handleExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" DialogBox.getUserDialog(input, USER_IMAGE),","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" DialogBox.getRoeBotDialog(response, ROEBOT_IMAGE)","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" DialogBox.getRoeBotDialog(e.getMessage(), ROEBOT_IMAGE);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" * Closes the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" @FXML","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" private void handleExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" DialogBox.getRoeBotDialog(\"\\tGoodbye for now :)\", ROEBOT_IMAGE)","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" PauseTransition delay \u003d new PauseTransition(Duration.seconds(1));","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" delay.setOnFinished(event -\u003e this.stage.close());","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" delay.play();","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cyqjoseph":92}},{"path":"src/main/java/roebot/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package roebot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"public class Launcher {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cyqjoseph":12}},{"path":"src/main/java/roebot/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package roebot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import gui.MainWindow;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class Main extends Application {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private RoeBot roebot \u003d new RoeBot();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setRoeBot(this.roebot, stage);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" stage.show();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cyqjoseph":30}},{"path":"src/main/java/roebot/RoeBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package roebot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.AbstractCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import commands.UserCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.TaskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import services.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import services.UI;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import services.parser.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" * Represents a RoeBot.","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"public class RoeBot {","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private Storage storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" private UI ui;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" private Parser parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" public RoeBot() {","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" this.ui \u003d new UI();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" storage.loadTasks(this.taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"FIX THIS ERROR\");","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" return \"Roebot understands: \" + input;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" public UserCommand getResult(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" AbstractCommand c \u003d this.parser.parseCommand(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" return c.execute(taskList, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":42}},{"path":"src/main/java/services/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import services.parser.Parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" * The Storage class is responsible for handling the loading and saving of tasks to a file.","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"public class Storage {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public Storage() {};","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * Loads tasks from the file at FILE_PATH and adds them to the provided TaskList.","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" * @param taskList The TaskList to which tasks are to be added.","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * @throws IOException If an error occurs during file reading.","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public void loadTasks(TaskList taskList) throws IOException {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" String taskString \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" Task task \u003d Parser.parseTaskFromString(taskString);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" // MONKEY FIX","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" taskList.getTasks().add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when writing to file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when parsing file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" * Saves tasks from the provided TaskList to the file at FILE_PATH.","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" * @param taskList The TaskList whose tasks are to be saved.","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" public void saveTasks(TaskList taskList) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" for (Task task: taskList.getTasks()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" fileWriter.write(task.fileString() + \"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"Error occurred when writing to file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":65}},{"path":"src/main/java/services/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * The TaskList class manages a list of tasks, allowing for adding, deleting, marking, and unmarking tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class TaskList {","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" private static final int MAX_ITEMS \u003d 100;","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a new TaskList.","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" public TaskList() {","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" this.tasks \u003d new ArrayList\u003c\u003e(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" * Returns the list of tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" * @return List of tasks.","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" return this.tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" return this.tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tGot it. I\u0027ve added this task: \");","lastModifiedDate":"2024-01-19"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + this.tasks.get(this.tasks.size() - 1));","lastModifiedDate":"2024-01-19"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(","lastModifiedDate":"2024-01-19"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" \"\\tNow you have \" + this.tasks.size() + \" task\"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" + (this.tasks.size() \u003d\u003d 1 ? \"\" : \"s\") + \" in the list\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" * Deletes a task from the task list based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" public Task deleteTask(int index) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-19"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Index out of range\");","lastModifiedDate":"2024-01-19"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" Task deletedTask \u003d this.tasks.remove(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNoted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + deletedTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(","lastModifiedDate":"2024-01-19"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" \"\\tNow you have \" + this.tasks.size() + \" task\"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" + (this.tasks.size() \u003d\u003d 1 ? \"\" : \"s\") + \" in the list\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" return deletedTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" public String getTaskSummary() {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" return \"\\tNow you have \" + this.tasks.size() + \" task\"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" + (this.tasks.size() \u003d\u003d 1 ? \"\" : \"s\") + \" in the list\";","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" * Marks a task as done based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" public void markTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" currTask.markAsDone();","lastModifiedDate":"2024-01-19"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" currTask.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" * Unmarks a task (marks as not done) based on its index.","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" * @param index The index of the task to be unmarked.","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the index is out of range.","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" public void unmarkTask(int index) throws DukeException {","lastModifiedDate":"2024-01-19"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":" if (index \u003c\u003d 0 || index \u003e this.tasks.size()) {","lastModifiedDate":"2024-01-19"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Task index is out of range.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(index - 1);","lastModifiedDate":"2024-01-19"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" currTask.markAsUndone();","lastModifiedDate":"2024-01-19"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tOK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-19"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" currTask.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" * Lists all tasks in the task list.","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" public String listTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-19"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tThe task list is empty.\");","lastModifiedDate":"2024-01-19"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" return \"\\tThe task list is empty.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":" } else {","lastModifiedDate":"2024-01-19"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"cyqjoseph"},"content":" sb.append(\"\\tHere are the tasks in your list: \\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"cyqjoseph"},"content":" //System.out.println(\"\\tHere are the tasks in your list: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"cyqjoseph"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-19"},{"lineNumber":127,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d this.tasks.get(i);","lastModifiedDate":"2024-01-19"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" sb.append(\"\\t\" + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-19"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" return sb.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" public TaskList findTasks(String word) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"cyqjoseph"},"content":" Pattern pattern \u003d Pattern.compile(Pattern.quote(word), Pattern.CASE_INSENSITIVE);","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":" List\u003cTask\u003e foundTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"cyqjoseph"},"content":" for (Task task: this.tasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"cyqjoseph"},"content":" Matcher matcher \u003d pattern.matcher(task.getName());","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"cyqjoseph"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":" foundTasks.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" if (foundTasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"No tasks with \" + word + \" found\");","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHere are the matching tasks in your list: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" Task currTask \u003d foundTasks.get(i);","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + currTask.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" return new TaskList(foundTasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":157}},{"path":"src/main/java/services/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" * The {@code UI} class handles the user interface for the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * It provides methods to display messages to the user and to read user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class UI {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a new {@code UI} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" * Initializes the scanner to read input from the standard input stream.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public UI() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" * Reads the next command from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" * @return A string representing the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public String nextCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" return this.scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" * Prints the introductory message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public void printIntroMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tHello! I\u0027m roebot.RoeBot!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" * Prints the exit message to the user and closes the scanner.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" public void printExitMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" * Prints a given message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" * @param message The message to be printed.","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" public void printMessage(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t\" + message);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" * Prints a horizontal line for UI separation.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" System.out.println(\"\\t_________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":62}},{"path":"src/main/java/services/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package services.parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import commands.*;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.*;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" * The Parser class is responsible for interpreting user inputs and converting them into commands.","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" * It handles various types of commands including adding tasks, marking tasks as done or undone,","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" * deleting tasks, and exiting the program.","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"public class Parser {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to determine the type of command to be executed.","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" * @return Command The command corresponding to the user\u0027s input.","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public AbstractCommand parseCommand(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" String initialCommand \u003d parsed[0].toUpperCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" switch (initialCommand) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" case \"EVENT\":","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" return parseAddEvent(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" case \"DEADLINE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" return parseAddDeadline(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" case \"TODO\":","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" return parseAddTodo(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" case \"MARK\":","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return parseMark(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" case \"UNMARK\":","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" return parseUnmark(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" case \"DELETE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" return parseDelete(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" case \"FIND\":","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" return parseFind(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" case \"LIST\":","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" case \"BYE\":","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" // return new HelpCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"INVALID\");","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddEventCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddEventCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" public AbstractCommand parseAddEvent(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" String[] parsedEvent \u003d taskDesc.split(\" /from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" if (parsedEvent.length \u003c\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter valid event format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" String eventName \u003d parsedEvent[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime start \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime end \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" start \u003d parseDate(parsedEvent[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" end \u003d parseDate(parsedEvent[2]);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Invalid date format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" return new AddEventCommand(eventName, start, end);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddDeadlineCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddDeadlineCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" public AbstractCommand parseAddDeadline(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" String[] parsedDeadline \u003d taskDesc.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" if (parsedDeadline.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter a valid deadline format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":" String deadlineName \u003d parsedDeadline[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" by \u003d parseDate(parsedDeadline[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"Please enter a valid deadline format!!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" return new AddDeadlineCommand(deadlineName, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an AddTodoCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" * @return Command An AddTodoCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" public AbstractCommand parseAddTodo(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter a task name\");","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" String taskDesc \u003d parsed[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" return new AddTodoCommand(taskDesc);","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a DeleteTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A DeleteTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"cyqjoseph"},"content":" public AbstractCommand parseDelete(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a UnmarkTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A UnmarkTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"cyqjoseph"},"content":" public AbstractCommand parseUnmark(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" return new UnmarkTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create a MarkTaskCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A MarkTaskCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" public AbstractCommand parseMark(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an index\");","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":" int index \u003d Integer.parseInt(parsed[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":" return new MarkTaskCommand(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" * Parses the user input to create an FindCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" * @param userInput The user\u0027s input as a string.","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":" * @return Command A FindCommand if input is valid, otherwise an InvalidCommand.","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":" public AbstractCommand parseFind(String userInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":" String[] parsed \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":" if (parsed.length \u003c\u003d 1 || parsed[1].isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":" return new InvalidCommand(\"OOPS! Please enter an task to find\");","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":" return new FindCommand(parsed[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":" * Parses a date string into a LocalDateTime object.","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":" * @param dateString The date string to parse.","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":" * @return LocalDateTime The parsed LocalDateTime object.","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the date string cannot be parsed into a valid date and time.","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"cyqjoseph"},"content":" public LocalDateTime parseDate(String dateString) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"cyqjoseph"},"content":" List\u003cDateTimeFormatter\u003e dateTimeFormatters \u003d Arrays.asList(","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M/d/yyyy h:mm a\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMM yyyy h:mma\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"MMM d, yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyyMMdd h:mm a\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy HH:mm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy/M/d h:mma\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMMM yyyy HHmm\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d h:mm a\")","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"cyqjoseph"},"content":" List\u003cDateTimeFormatter\u003e dateFormatters \u003d Arrays.asList(","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M/d/yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy/M/d\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"M-d-yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":209,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMM yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"MMM d, yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"d MMMM yyyy\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"cyqjoseph"},"content":" DateTimeFormatter.ofPattern(\"yyyyMMdd\")","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"cyqjoseph"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"cyqjoseph"},"content":" for (DateTimeFormatter formatter : dateTimeFormatters) {","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"cyqjoseph"},"content":" return LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"cyqjoseph"},"content":" // Continue to try the next format","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"cyqjoseph"},"content":" for (DateTimeFormatter formatter : dateFormatters) {","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"cyqjoseph"},"content":" return LocalDate.parse(dateString, formatter).atStartOfDay();","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"cyqjoseph"},"content":" // Continue to try the next format","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid Date and time format\");","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":234,"author":{"gitId":"cyqjoseph"},"content":" * Parses a task string representation from a file into a Task object.","lastModifiedDate":"2024-01-26"},{"lineNumber":235,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-01-26"},{"lineNumber":236,"author":{"gitId":"cyqjoseph"},"content":" * @param taskString The string representation of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":237,"author":{"gitId":"cyqjoseph"},"content":" * @return Task The Task object parsed from the string.","lastModifiedDate":"2024-01-26"},{"lineNumber":238,"author":{"gitId":"cyqjoseph"},"content":" * @throws DukeException If the task string cannot be parsed into a valid task.","lastModifiedDate":"2024-01-26"},{"lineNumber":239,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":240,"author":{"gitId":"cyqjoseph"},"content":" public static Task parseTaskFromString(String taskString) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"cyqjoseph"},"content":" String[] parts \u003d taskString.split(\" \\\\| \");","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"cyqjoseph"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"cyqjoseph"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"cyqjoseph"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"cyqjoseph"},"content":" String additionalInfo \u003d parts.length \u003e 3 ? parts[3].trim() : null;","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"cyqjoseph"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"cyqjoseph"},"content":" case \"T\":","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":250,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":251,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":252,"author":{"gitId":"cyqjoseph"},"content":" return todo;","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"cyqjoseph"},"content":" case \"D\":","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"cyqjoseph"},"content":" if (additionalInfo \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid tasks.Deadline format in file\");","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime by \u003d LocalDateTime.parse(additionalInfo);","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"cyqjoseph"},"content":" Deadline deadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":260,"author":{"gitId":"cyqjoseph"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":261,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":262,"author":{"gitId":"cyqjoseph"},"content":" return deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":263,"author":{"gitId":"cyqjoseph"},"content":" case \"E\":","lastModifiedDate":"2024-01-25"},{"lineNumber":264,"author":{"gitId":"cyqjoseph"},"content":" String[] times \u003d additionalInfo.split(\" to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":265,"author":{"gitId":"cyqjoseph"},"content":" if (times.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":266,"author":{"gitId":"cyqjoseph"},"content":" throw new DukeException(\"Invalid tasks.Event time format in file.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":267,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":268,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime start \u003d LocalDateTime.parse(times[0].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":269,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime end \u003d LocalDateTime.parse(times[1].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":270,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":271,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-25"},{"lineNumber":272,"author":{"gitId":"cyqjoseph"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"cyqjoseph"},"content":" return event;","lastModifiedDate":"2024-01-25"},{"lineNumber":277,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":278,"author":{"gitId":"cyqjoseph"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":279,"author":{"gitId":"cyqjoseph"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":280,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":281,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":282,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":282}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Deadline, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public Deadline(String name, LocalDateTime by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public String formatBy() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatBy() + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" return \"D \" + super.fileString() + \" | \" + this.by;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":30}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * Represents an Event, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public Event(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public String formatDate(LocalDateTime startEnd) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" return startEnd.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formatDate(this.start) + \" to: \" + formatDate(this.end) + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" return \"E \" + super.fileString() + \" | \" + this.start + \" to \" + this.end;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":33}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" private String name;","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public String getName() {","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" return this.name;","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public String getStatus() {","lastModifiedDate":"2024-01-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" return \"[\" + getStatus() + \"] \" + this.name;","lastModifiedDate":"2024-01-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" return \"| \" + (this.isDone ? \"1\" : \"0\") + \" | \" + this.name;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":38}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Todo, inherits from Task.","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" super(name);","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public String fileString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" return \"T \" + super.fileString();","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":20}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" prefWidth\u003d\"600.0\" type\u003d\"javafx.scene.layout.HBox\"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"false\" minHeight\u003d\"200.0\" prefHeight\u003d\"200.0\" /\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cyqjoseph":17}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"800.0\" prefWidth\u003d\"600.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"gui.MainWindow\"\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"758.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"524.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"524.0\" layoutY\u003d\"758.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"757.0\" prefWidth\u003d\"600.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"752.0\" prefWidth\u003d\"588.0\" /\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"cyqjoseph":19}},{"path":"src/test/java/commands/AddEventCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class AddEventCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public void toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Have Dinner\", LocalDateTime.of(2024, 1, 25, 8, 0), LocalDateTime.of(2024, 1, 25, 9, 30));","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[E][ ] Have Dinner (from: Jan 25 2024 08:00 AM to: Jan 25 2024 09:30 AM)\", event.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public void fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Borrow books\", LocalDateTime.of(1999, 1, 25, 8, 0), LocalDateTime.of(2099, 1, 25, 9, 30));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"E | 0 | Borrow books | 1999-01-25T08:00 to 2099-01-25T09:30\", event.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Play Bridge\", LocalDateTime.of(2024, 1, 10, 8, 0), LocalDateTime.of(2024, 1, 12, 10, 45));","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[E][X] Play Bridge (from: Jan 10 2024 08:00 AM to: Jan 12 2024 10:45 AM)\", event.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" Event event \u003d new Event(\"Play Baccarat\", LocalDateTime.of(2024, 1, 22, 23, 0), LocalDateTime.of(2024, 1, 23, 7, 00));","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"E | 1 | Play Baccarat | 2024-01-22T23:00 to 2024-01-23T07:00\", event.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":37}},{"path":"src/test/java/commands/AddTodoCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package commands;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class AddTodoCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public void toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Have Dinner\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[T][ ] Have Dinner\", todo.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" public void fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Borrow books\");","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"T | 0 | Borrow books\", todo.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_toString_savedInTaskList_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Have Breakfast\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"[T][X] Have Breakfast\", todo.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public void markAsDone_fileString_savedInHardDisk_correct() {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" ToDo todo \u003d new ToDo(\"Return Books\");","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(\"T | 1 | Return Books\", todo.fileString());","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":35}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"E | 0 | lunch meeting | 2023-01-05T12:00 to 2023-01-05T14:00","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"cyqjoseph":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"todo borrow book","lastModifiedDate":"2024-01-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"deadline return book /by 2020-05-13","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"event project meeting /from 05/23/2023 /to 01/07/2024","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"mark 2","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"mark 1","lastModifiedDate":"2024-01-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"unmark 1","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"event lunch meeting /from 05/01/2023 1200 /to 05/01/2023 1400","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"find lunch","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"delete 2","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"event","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"event hello","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"unmark -1","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"unmark 5","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"deadline /by Tuesday","lastModifiedDate":"2024-01-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"delete 0","lastModifiedDate":"2024-01-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"delete 2","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"event lunch meeting /from 05/01/2023 1200 /to 05/01/2023 2500","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"bye","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"cyqjoseph":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":"cyqjoseph"},"content":"java -classpath ..\\bin roebot.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"cyqjoseph":1,"-":20}}] diff --git a/cyqjoseph_ip_master/commits.json b/cyqjoseph_ip_master/commits.json index cbb1dbe6..961e5791 100644 --- a/cyqjoseph_ip_master/commits.json +++ b/cyqjoseph_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"cyqjoseph":[{"date":"2024-01-19","commitResults":[{"hash":"6122fcfddd27da769471af48e5dfb382203ad79e","isMergeCommit":false,"messageTitle":"Done Level-1: Echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"f44f1fb1c46f81ea29708d3b90a5afbb89d7cbf5","isMergeCommit":false,"messageTitle":"Done Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":2}}},{"hash":"efde7a681b31b73f2bec1245f99c653fe2e7d766","isMergeCommit":false,"messageTitle":"Done Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":141,"deletions":68}}},{"hash":"accf49d664a3955cd26413e1e255f82219a1debb","isMergeCommit":false,"messageTitle":"Done Level-4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":7}}},{"hash":"b0989fb4458f53cc2e7261ac05c006ce4e7e73a4","isMergeCommit":false,"messageTitle":"Done A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":12,"deletions":12}}},{"hash":"a904e0c85b9b4243e43fc5256100bf343ab5f9f3","isMergeCommit":false,"messageTitle":"Done Level-5: Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"9c28a42a0b75b91587f63cd977eb3b7cf685cfe0","isMergeCommit":false,"messageTitle":"Done Level-6: Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":67,"deletions":41}}},{"hash":"15411afa6bdfcf5f7f66d1e8b1a9d3e82def8621","isMergeCommit":false,"messageTitle":"Done A-Enums: Use Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":11}}}]},{"date":"2024-01-24","commitResults":[{"hash":"09b8f448abe415c8e48df38918ac096ca9a85419","isMergeCommit":false,"messageTitle":"Done Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":106,"deletions":1}}},{"hash":"44ed4e945cc6ed7e4940eab7a35e19c38e5ad5fe","isMergeCommit":true,"messageTitle":"Merge branch-Level-7 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-25","commitResults":[{"hash":"6f7f4a7888a52fd9e35d2f7860e2727f9fcffd86","isMergeCommit":false,"messageTitle":"Done Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":2},"java":{"insertions":84,"deletions":16}}},{"hash":"9a2ce2af7d2f7af7273ffb87ab03a91a4a1d2b29","isMergeCommit":true,"messageTitle":"Merge branch-Level-8 into master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"dbfc24b1a9258fc9fa657765b4eef49e0147c489","isMergeCommit":false,"messageTitle":"Done A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":7},"java":{"insertions":499,"deletions":212}}},{"hash":"6ed300ca9931356a65160bbc8efce06a5c7219cc","isMergeCommit":true,"messageTitle":"Merge branch-A-MoreOOP into master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"a1b54c6b9cbe633fd41aa623b09745116af6855a","isMergeCommit":false,"messageTitle":"Done A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":2}}},{"hash":"fbde715426fb4b6b871e111a6925bc7c63f39dd4","isMergeCommit":false,"messageTitle":"Done A-Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":127,"deletions":26}}},{"hash":"5a494982b55b3db995e596ea06bde30ef76d0bd3","isMergeCommit":true,"messageTitle":"Merge branch-A-Packages into master","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"96e95d905a8ffa77618aaea595098e0fc2c6ba8b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 Added gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"356fceb0c6f3ec44999071806dc8c4e772014fac","isMergeCommit":false,"messageTitle":"Done A-Junit","messageBody":"","tags":["A-Junit"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":72,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"cf7f06b19a3ffa7d5304d57e835a07d2e98526d6","isMergeCommit":false,"messageTitle":"Done A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"3cacd8c01421cc4c5668d2126f6725637b353779","isMergeCommit":false,"messageTitle":"Done A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":114}}},{"hash":"bcfa72cc4365396d92e9f80b9cc5e43884f168c9","isMergeCommit":false,"messageTitle":"Done A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":117}}},{"hash":"ec5e58ec92e44f853be53a04ea4e5fef590ab957","isMergeCommit":false,"messageTitle":"Done Level-9-Find","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"1a4577c303499ee9006e90fb82580c66d7159a1b","isMergeCommit":false,"messageTitle":"Done A-JavaDoc, A-CodingStandard, Level-9","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":82,"deletions":117}}},{"hash":"fd0b396066ba77b2cddca353e3db0b0c4b8a6287","isMergeCommit":true,"messageTitle":"Resolved merge conflicts and merged branch-A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a68abe181a3f46aba5733cad64d9f58fb26d3a02","isMergeCommit":true,"messageTitle":"Merged A-CodingStandard branch with master","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"cf340081a8ceeb65d64e2c568ce1f6a6275e69fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"4e379bbac7e3e1ede32f387beab8d30cea9d190f","isMergeCommit":false,"messageTitle":"Done A-CheckStyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":56,"deletions":50}}}]}]},"authorFileTypeContributionMap":{"cyqjoseph":{"java":1042,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":6,"txt":33}},"authorContributionVariance":{"cyqjoseph":116212.914},"authorDisplayNameMap":{"cyqjoseph":"CS2103T-W11-3 CHAN..SEPH"}} +{"authorDailyContributionsMap":{"cyqjoseph":[{"date":"2024-01-19","commitResults":[{"hash":"6122fcfddd27da769471af48e5dfb382203ad79e","isMergeCommit":false,"messageTitle":"Done Level-1: Echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"f44f1fb1c46f81ea29708d3b90a5afbb89d7cbf5","isMergeCommit":false,"messageTitle":"Done Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":2}}},{"hash":"efde7a681b31b73f2bec1245f99c653fe2e7d766","isMergeCommit":false,"messageTitle":"Done Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":141,"deletions":68}}},{"hash":"accf49d664a3955cd26413e1e255f82219a1debb","isMergeCommit":false,"messageTitle":"Done Level-4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":7}}},{"hash":"b0989fb4458f53cc2e7261ac05c006ce4e7e73a4","isMergeCommit":false,"messageTitle":"Done A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":12,"deletions":12}}},{"hash":"a904e0c85b9b4243e43fc5256100bf343ab5f9f3","isMergeCommit":false,"messageTitle":"Done Level-5: Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"9c28a42a0b75b91587f63cd977eb3b7cf685cfe0","isMergeCommit":false,"messageTitle":"Done Level-6: Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":67,"deletions":41}}},{"hash":"15411afa6bdfcf5f7f66d1e8b1a9d3e82def8621","isMergeCommit":false,"messageTitle":"Done A-Enums: Use Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":11}}}]},{"date":"2024-01-24","commitResults":[{"hash":"09b8f448abe415c8e48df38918ac096ca9a85419","isMergeCommit":false,"messageTitle":"Done Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":106,"deletions":1}}},{"hash":"44ed4e945cc6ed7e4940eab7a35e19c38e5ad5fe","isMergeCommit":true,"messageTitle":"Merge branch-Level-7 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-25","commitResults":[{"hash":"6f7f4a7888a52fd9e35d2f7860e2727f9fcffd86","isMergeCommit":false,"messageTitle":"Done Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":2},"java":{"insertions":84,"deletions":16}}},{"hash":"9a2ce2af7d2f7af7273ffb87ab03a91a4a1d2b29","isMergeCommit":true,"messageTitle":"Merge branch-Level-8 into master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"dbfc24b1a9258fc9fa657765b4eef49e0147c489","isMergeCommit":false,"messageTitle":"Done A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":7},"java":{"insertions":499,"deletions":212}}},{"hash":"6ed300ca9931356a65160bbc8efce06a5c7219cc","isMergeCommit":true,"messageTitle":"Merge branch-A-MoreOOP into master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"a1b54c6b9cbe633fd41aa623b09745116af6855a","isMergeCommit":false,"messageTitle":"Done A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":2}}},{"hash":"fbde715426fb4b6b871e111a6925bc7c63f39dd4","isMergeCommit":false,"messageTitle":"Done A-Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":127,"deletions":26}}},{"hash":"5a494982b55b3db995e596ea06bde30ef76d0bd3","isMergeCommit":true,"messageTitle":"Merge branch-A-Packages into master","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"96e95d905a8ffa77618aaea595098e0fc2c6ba8b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 Added gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"356fceb0c6f3ec44999071806dc8c4e772014fac","isMergeCommit":false,"messageTitle":"Done A-Junit","messageBody":"","tags":["A-Junit"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":72,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"cf7f06b19a3ffa7d5304d57e835a07d2e98526d6","isMergeCommit":false,"messageTitle":"Done A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"3cacd8c01421cc4c5668d2126f6725637b353779","isMergeCommit":false,"messageTitle":"Done A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":114}}},{"hash":"bcfa72cc4365396d92e9f80b9cc5e43884f168c9","isMergeCommit":false,"messageTitle":"Done A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":117}}},{"hash":"ec5e58ec92e44f853be53a04ea4e5fef590ab957","isMergeCommit":false,"messageTitle":"Done Level-9-Find","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"1a4577c303499ee9006e90fb82580c66d7159a1b","isMergeCommit":false,"messageTitle":"Done A-JavaDoc, A-CodingStandard, Level-9","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":82,"deletions":117}}},{"hash":"fd0b396066ba77b2cddca353e3db0b0c4b8a6287","isMergeCommit":true,"messageTitle":"Resolved merge conflicts and merged branch-A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a68abe181a3f46aba5733cad64d9f58fb26d3a02","isMergeCommit":true,"messageTitle":"Merged A-CodingStandard branch with master","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"cf340081a8ceeb65d64e2c568ce1f6a6275e69fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"4e379bbac7e3e1ede32f387beab8d30cea9d190f","isMergeCommit":false,"messageTitle":"Done A-CheckStyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":56,"deletions":50}}},{"hash":"f0be832505b413132f1c5b907bb8483b9dd2798f","isMergeCommit":false,"messageTitle":"Add a GUI to the chatbot","messageBody":"Use the JavaFX technology to implement the GUI\n\nRemoved the command-line interface for RoeBot application\n\nRemoved bugs causing application to not exit\n","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":7,"deletions":1},"txt":{"insertions":2,"deletions":4},"fxml":{"insertions":36,"deletions":0},"java":{"insertions":314,"deletions":61},"bat":{"insertions":1,"deletions":1},"md":{"insertions":3,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"cyqjoseph":{"java":1299,"md":3,"fxml":36,"sh":0,"bat":1,"gradle":12,"txt":31}},"authorContributionVariance":{"cyqjoseph":123438.57},"authorDisplayNameMap":{"cyqjoseph":"CS2103T-W11-3 CHAN..SEPH"}} diff --git a/danielleloh_ip_master/authorship.json b/danielleloh_ip_master/authorship.json index 7501bbbc..99ed0cef 100644 --- a/danielleloh_ip_master/authorship.json +++ b/danielleloh_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"danielleloh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"danielleloh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"danielleloh"},"content":" class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"danielleloh"},"content":" protected String description; // task description","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"danielleloh"},"content":" protected boolean completed; // true is task is completed","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"danielleloh"},"content":" public Task(String description, boolean completed) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"danielleloh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"danielleloh"},"content":" this.completed \u003d completed;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"danielleloh"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"danielleloh"},"content":" return this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"danielleloh"},"content":" public boolean isCompleted() {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"danielleloh"},"content":" return this.completed;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"danielleloh"},"content":" public void markComplete() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"danielleloh"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"danielleloh"},"content":" public void markUncomplete() {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"danielleloh"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"danielleloh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"danielleloh"},"content":" if (this.completed) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"danielleloh"},"content":" return \"[X] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"danielleloh"},"content":" return \"[ ] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"danielleloh"},"content":" class ToDos extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"danielleloh"},"content":" public ToDos(String description, boolean completed) {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"danielleloh"},"content":" super(description, completed);","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"danielleloh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"danielleloh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"danielleloh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"danielleloh"},"content":" class Deadlines extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"danielleloh"},"content":" protected String by; // date/time to be done before","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"danielleloh"},"content":" public Deadlines(String description, boolean completed, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"danielleloh"},"content":" super(description, completed);","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"danielleloh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"danielleloh"},"content":" public String getBy() {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"danielleloh"},"content":" return this.by;","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"danielleloh"},"content":" public void setBy(String time) {","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"danielleloh"},"content":" this.by \u003d time;","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"danielleloh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"danielleloh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"danielleloh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"danielleloh"},"content":" class Events extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"danielleloh"},"content":" protected String start; // start date/time","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"danielleloh"},"content":" protected String end; // end date/time","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"danielleloh"},"content":" public Events(String description, boolean completed, String start, String end) {","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"danielleloh"},"content":" super(description, completed);","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"danielleloh"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"danielleloh"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"danielleloh"},"content":" public String getStart() {","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"danielleloh"},"content":" return this.start;","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"danielleloh"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"danielleloh"},"content":" return this.end;","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"danielleloh"},"content":" public void setStart(String time) {","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"danielleloh"},"content":" this.start \u003d time;","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"danielleloh"},"content":" public void setEnd (String time) {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"danielleloh"},"content":" this.end \u003d time;","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"danielleloh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"danielleloh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"danielleloh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"danielleloh"},"content":" Scanner sc \u003d new Scanner(System.in); // scanner for user input","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"danielleloh"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e(); // list to store tasks","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Hello! I\u0027m Scribbles.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"What can I do for you?\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"danielleloh"},"content":" String input \u003d sc.nextLine(); // takes in input from user","lastModifiedDate":"2024-01-22"},{"lineNumber":113,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"danielleloh"},"content":" while (!(input.equals(\"bye\"))) {","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"danielleloh"},"content":" if (input.equals(\"list\")) { // user inputs \"list\"","lastModifiedDate":"2024-01-22"},{"lineNumber":117,"author":{"gitId":"danielleloh"},"content":" int numOfTasks \u003d list.size(); // finds the number of tasks in list currently","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"danielleloh"},"content":" int taskNumber \u003d 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"danielleloh"},"content":" while (numOfTasks !\u003d 0) {","lastModifiedDate":"2024-01-22"},{"lineNumber":123,"author":{"gitId":"danielleloh"},"content":" System.out.println(taskNumber + \". \" + list.get(taskNumber - 1).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"danielleloh"},"content":" taskNumber++;","lastModifiedDate":"2024-01-22"},{"lineNumber":125,"author":{"gitId":"danielleloh"},"content":" numOfTasks--;","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"danielleloh"},"content":" int taskNumber \u003d Integer.parseInt(input.substring(5)); // get the task number to mark","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"danielleloh"},"content":" int numOfTasks \u003d list.size(); // finds the number of tasks in list currently","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"danielleloh"},"content":" if (taskNumber \u003c\u003d numOfTasks) {","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"danielleloh"},"content":" list.get(taskNumber - 1).markComplete();","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"danielleloh"},"content":" System.out.println(list.get(taskNumber - 1).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! looks like that task does not exist in your list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You currently only have \" + numOfTasks + \" task(s) in your list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"danielleloh"},"content":" int taskNumber \u003d Integer.parseInt(input.substring(7)); // get the task number to unmark","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"danielleloh"},"content":" int numOfTasks \u003d list.size(); // finds the number of tasks in list currently","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"danielleloh"},"content":" if (taskNumber \u003c\u003d numOfTasks) {","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"danielleloh"},"content":" list.get(taskNumber - 1).markUncomplete();","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"danielleloh"},"content":" System.out.println(list.get(taskNumber - 1).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! looks like that task does not exist in your list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You currently only have \" + numOfTasks + \" task(s) in your list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"todo \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"danielleloh"},"content":" String descrpt \u003d input.substring(5);","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"danielleloh"},"content":" if (descrpt.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"todo [task description]\\\" instead.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"danielleloh"},"content":" list.add(new ToDos(descrpt, false));","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"danielleloh"},"content":" System.out.println(list.get(list.size() - 1).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Now you have \" + list.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"deadline \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"danielleloh"},"content":" String descrpt \u003d input.substring(9);","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"danielleloh"},"content":" if (descrpt.isEmpty() || !descrpt.contains(\" /by \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"deadline [task description] /by [date/time]\\\" \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"danielleloh"},"content":" \"instead.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"danielleloh"},"content":" String taskDescrpt \u003d descrpt.split(\" /by\")[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"danielleloh"},"content":" String taskDeadline \u003d descrpt.split(\" /by \")[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"danielleloh"},"content":" list.add(new Deadlines(taskDescrpt, false, taskDeadline));","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"danielleloh"},"content":" System.out.println(list.get(list.size() - 1).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Now you have \" + list.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"danielleloh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"deadline [task description] /by [date/time]\\\" \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"danielleloh"},"content":" \"instead.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"event \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"danielleloh"},"content":" String descrpt \u003d input.substring(6);","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"danielleloh"},"content":" if (descrpt.isEmpty() || !descrpt.contains(\" /from \") || !descrpt.contains(\" /to \")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"event [task description] /from [date/time] \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":196,"author":{"gitId":"danielleloh"},"content":" \"/to [date/time]\\\" instead.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":199,"author":{"gitId":"danielleloh"},"content":" String taskDescrpt \u003d descrpt.split(\" /from \")[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":200,"author":{"gitId":"danielleloh"},"content":" String taskStart \u003d descrpt.split(\" /from \")[1].split(\"/to \")[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":201,"author":{"gitId":"danielleloh"},"content":" String taskEnd \u003d descrpt.split(\" /to \")[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"danielleloh"},"content":" if (!taskDescrpt.isEmpty() \u0026\u0026 !taskStart.isEmpty() \u0026\u0026 !taskEnd.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"danielleloh"},"content":" list.add(new Events(taskDescrpt, false, taskStart, taskEnd));","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"danielleloh"},"content":" System.out.println(list.get(list.size() - 1).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Now you have \" + list.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":208,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":209,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"event [task description] /from [date/time] \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":210,"author":{"gitId":"danielleloh"},"content":" \"/to [date/time]\\\" instead.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":211,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"danielleloh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":213,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":214,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"event [task description] /from [date/time] \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":215,"author":{"gitId":"danielleloh"},"content":" \"/to [date/time]\\\" instead.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":216,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":217,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":218,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":219,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":220,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"delete \")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":221,"author":{"gitId":"danielleloh"},"content":" int taskNumber \u003d Integer.parseInt(input.substring(7)); // get the task number to remove","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"danielleloh"},"content":" int numOfTasks \u003d list.size(); // finds the number of tasks in list currently","lastModifiedDate":"2024-01-24"},{"lineNumber":223,"author":{"gitId":"danielleloh"},"content":" if (taskNumber \u003c\u003d numOfTasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":224,"author":{"gitId":"danielleloh"},"content":" String taskRemoved \u003d list.get(taskNumber - 1).toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":225,"author":{"gitId":"danielleloh"},"content":" list.remove(taskNumber - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":226,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":227,"author":{"gitId":"danielleloh"},"content":" System.out.println(taskRemoved);","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Now you have \" + list.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":229,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! looks like that task does not exist in your list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":231,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You currently only have \" + numOfTasks + \" task(s) in your list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":232,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":233,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":234,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":235,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":236,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Sorry! Scribbles was unable to understand your instructions :(\");","lastModifiedDate":"2024-01-23"},{"lineNumber":237,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the following commands instead: \");","lastModifiedDate":"2024-01-23"},{"lineNumber":238,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"- type \\\"list\\\" to view your current list of tasks\");","lastModifiedDate":"2024-01-23"},{"lineNumber":239,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"- type \\\"mark [index]\\\" to mark task at index as completed\");","lastModifiedDate":"2024-01-23"},{"lineNumber":240,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"- type \\\"unmark [index]\\\" to mark task at index as uncompleted\");","lastModifiedDate":"2024-01-23"},{"lineNumber":241,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"- type \\\"todo [task]\\\" to insert task into your list\");","lastModifiedDate":"2024-01-23"},{"lineNumber":242,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"- type \\\"deadline [task] /by [date]\\\" \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":243,"author":{"gitId":"danielleloh"},"content":" \"to insert task into your list with deadline as date\");","lastModifiedDate":"2024-01-23"},{"lineNumber":244,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"- type \\\"event [task] /from [start] to [end]\\\" \" +","lastModifiedDate":"2024-01-23"},{"lineNumber":245,"author":{"gitId":"danielleloh"},"content":" \"to insert task into your list with a start and end duration\");","lastModifiedDate":"2024-01-23"},{"lineNumber":246,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"- type \\\"delete [index]\\\" to remove a task from your list of tasks\");","lastModifiedDate":"2024-01-24"},{"lineNumber":247,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Please try again :)\");","lastModifiedDate":"2024-01-23"},{"lineNumber":248,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":249,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":250,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":251,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":252,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Bye. Hope to see you again soon!\"); // exits when user inputs bye","lastModifiedDate":"2024-01-22"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"danielleloh":250,"-":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"danielleloh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"danielleloh"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"danielleloh"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"danielleloh"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"danielleloh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"danielleloh"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"danielleloh"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"danielleloh"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"danielleloh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"danielleloh"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"danielleloh"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"danielleloh"},"content":"unmark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"danielleloh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"danielleloh"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"danielleloh":14}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"danielleloh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"danielleloh"},"content":" protected String by; // date/time to be done before","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"danielleloh"},"content":" public Deadline(String description, boolean completed, String by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"danielleloh"},"content":" super(description, completed);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"danielleloh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"danielleloh"},"content":" public String getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"danielleloh"},"content":" return this.by;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"danielleloh"},"content":" public void setBy(String time) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"danielleloh"},"content":" this.by \u003d time;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"danielleloh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"danielleloh"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"danielleloh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"danielleloh"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"danielleloh":21}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"danielleloh"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"danielleloh"},"content":" private String start; // start date/time","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"danielleloh"},"content":" private String end; // end date/time","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"danielleloh"},"content":" public Event(String description, boolean completed, String start, String end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"danielleloh"},"content":" super(description, completed);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"danielleloh"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"danielleloh"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"danielleloh"},"content":" public String getStart() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"danielleloh"},"content":" return this.start;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"danielleloh"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"danielleloh"},"content":" return this.end;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"danielleloh"},"content":" public void setStart(String time) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"danielleloh"},"content":" this.start \u003d time;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"danielleloh"},"content":" public void setEnd(String time) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"danielleloh"},"content":" this.end \u003d time;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"danielleloh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"danielleloh"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"danielleloh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"danielleloh"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"danielleloh":31}},{"path":"src/main/java/Scribbles.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"danielleloh"},"content":"import java.io.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"danielleloh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"danielleloh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"danielleloh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"danielleloh"},"content":" * This class implements the chatbot Scribbles.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"danielleloh"},"content":" * @author danielle","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"danielleloh"},"content":"public class Scribbles {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"danielleloh"},"content":" private static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"danielleloh"},"content":" private Scribbles() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"danielleloh"},"content":" * Prints the greeting message of the chatbot.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"danielleloh"},"content":" * @return Greeting message","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"danielleloh"},"content":" public static String greet() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"danielleloh"},"content":" String greetingMessage \u003d \"Hello! I\u0027m Scribbles :) What can I do for you?\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"danielleloh"},"content":" return greetingMessage;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"danielleloh"},"content":" * Prints the exiting message of the chatbot.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"danielleloh"},"content":" * @return Exit message","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"danielleloh"},"content":" public static String exit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"danielleloh"},"content":" String exitingMessage \u003d \"Bye! Hope to see you again soon :)\";","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"danielleloh"},"content":" return exitingMessage;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"danielleloh"},"content":" * Prints the current list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"danielleloh"},"content":" * @return List of tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"danielleloh"},"content":" public static String listTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"danielleloh"},"content":" int numOfTasks \u003d taskList.size(); // number of task in list currently","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"danielleloh"},"content":" int index \u003d 1; // index of the task in list","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"danielleloh"},"content":" String listOfTasks \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"danielleloh"},"content":" while (numOfTasks !\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"danielleloh"},"content":" listOfTasks \u003d listOfTasks + index + \". \" + taskList.get(index - 1).toString() + \"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"danielleloh"},"content":" numOfTasks--;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"danielleloh"},"content":" index++;","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"danielleloh"},"content":" return listOfTasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"danielleloh"},"content":" * Marks task in list as completed.","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"danielleloh"},"content":" * @param index Index of task to mark","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"danielleloh"},"content":" public static void markCompleted(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"danielleloh"},"content":" int numOfTasks \u003d taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"danielleloh"},"content":" if (index \u003c\u003d numOfTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"danielleloh"},"content":" taskList.get(index - 1).markComplete();","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"danielleloh"},"content":" saveFileData(\"src/main/java/taskData.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"danielleloh"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"File not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"danielleloh"},"content":" * Prints message after marking task instruction is called.","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"danielleloh"},"content":" * @param index Index of task to mark","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"danielleloh"},"content":" * @return Message to confirm marking of a task","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"danielleloh"},"content":" public static String markCompleteMessage(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"danielleloh"},"content":" int numOfTasks \u003d taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"danielleloh"},"content":" if (index \u003c\u003d numOfTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"danielleloh"},"content":" return \"Nice! I\u0027ve marked task number \" + index + \" as done: \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"danielleloh"},"content":" taskList.get(index - 1).toString() + \"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"danielleloh"},"content":" } else { // message if task index does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"danielleloh"},"content":" return \"Uh oh! looks like that task does not exist in your list.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"danielleloh"},"content":" \"You currently only have \" + numOfTasks + \" task(s) in your list.\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"danielleloh"},"content":" * Unmarks task in list.","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"danielleloh"},"content":" * @param index Index of task to unmark","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"danielleloh"},"content":" public static void markIncomplete(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"danielleloh"},"content":" int numOfTasks \u003d taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"danielleloh"},"content":" if (index \u003c\u003d numOfTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"danielleloh"},"content":" taskList.get(index - 1).markIncomplete();","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"danielleloh"},"content":" saveFileData(\"src/main/java/taskData.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"danielleloh"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"File not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"danielleloh"},"content":" * Prints message after unmarking task instruction is called.","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"danielleloh"},"content":" * @param index Index of task to unmark","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"danielleloh"},"content":" * @return Message to confirm unmarking of a task","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"danielleloh"},"content":" public static String markIncompleteMessage(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"danielleloh"},"content":" int numOfTasks \u003d taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"danielleloh"},"content":" if (index \u003c\u003d numOfTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"danielleloh"},"content":" return \"Okay! I\u0027ve marked task number \" + index + \" as incomplete: \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"danielleloh"},"content":" taskList.get(index - 1).toString() + \"\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"danielleloh"},"content":" } else { // message if task index does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"danielleloh"},"content":" return \"Uh oh! looks like that task does not exist in your list.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"danielleloh"},"content":" \"You currently only have \" + numOfTasks + \" task(s) in your list.\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"danielleloh"},"content":" * Adds a to-do task to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"danielleloh"},"content":" * Prints error message if description of task is empty.","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"danielleloh"},"content":" * @param description Description of task","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"danielleloh"},"content":" public static void addTodo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"danielleloh"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! There\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"todo [task description]\\\" instead.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"danielleloh"},"content":" taskList.add(new Todo(description, false));","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"danielleloh"},"content":" saveFileData(\"src/main/java/taskData.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"danielleloh"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"File not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"I\u0027ve added this to-do to your list: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"danielleloh"},"content":" System.out.println(taskList.get(taskList.size() - 1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task(s) in the list.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"danielleloh"},"content":" * Adds a deadline task to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"danielleloh"},"content":" * Prints error message if there are missing information in the description.","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"danielleloh"},"content":" * @param description Description of task","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"danielleloh"},"content":" public static void addDeadline(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"danielleloh"},"content":" if (description.isEmpty() || !description.contains(\" /by \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"deadline [task description] /by [date/time]\\\" \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"danielleloh"},"content":" \"instead.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"danielleloh"},"content":" String taskDescription \u003d description.split(\" /by\")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"danielleloh"},"content":" String taskDeadline \u003d description.split(\" /by \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"danielleloh"},"content":" taskList.add(new Deadline(taskDescription, false, taskDeadline));","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"danielleloh"},"content":" saveFileData(\"src/main/java/taskData.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"danielleloh"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"File not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"I\u0027ve added this deadline to your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"danielleloh"},"content":" System.out.println(taskList.get(taskList.size() - 1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task(s) in the list.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"danielleloh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"deadline [task description] /by [date/time]\\\" \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"danielleloh"},"content":" \"instead.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"danielleloh"},"content":" * Adds an event task to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"danielleloh"},"content":" * Prints errpr message if there are any missing information in the description.","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"danielleloh"},"content":" * @param description Description of task","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"danielleloh"},"content":" public static void addEvent(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"danielleloh"},"content":" if (description.isEmpty() || !description.contains(\" /from \") || !description.contains(\" /to \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"event [task description] /from [date/time] \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"danielleloh"},"content":" \"/to [date/time]\\\" instead.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"danielleloh"},"content":" String taskDescription \u003d description.split(\" /from \")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"danielleloh"},"content":" String taskStart \u003d description.split(\" /from \")[1].split(\"/to \")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"danielleloh"},"content":" String taskEnd \u003d description.split(\" /to \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"danielleloh"},"content":" if (!taskDescription.isEmpty() \u0026\u0026 !taskStart.isEmpty() \u0026\u0026 !taskEnd.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"danielleloh"},"content":" taskList.add(new Event(taskDescription, false, taskStart, taskEnd));","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"danielleloh"},"content":" saveFileData(\"src/main/java/taskData.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"danielleloh"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"File not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"I\u0027ve added this deadline to your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"danielleloh"},"content":" System.out.println(taskList.get(taskList.size() - 1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task(s) in the list.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"event [task description] /from [date/time] \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"danielleloh"},"content":" \"/to [date/time]\\\" instead.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"danielleloh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! there\u0027s missing information in your instructions!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You can try the command \\\"event [task description] /from [date/time] \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"danielleloh"},"content":" \"/to [date/time]\\\" instead.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"danielleloh"},"content":" public static void deleteTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"danielleloh"},"content":" int numOfTasks \u003d taskList.size(); // finds the number of tasks in list currently","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"danielleloh"},"content":" if (index \u003c\u003d numOfTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"danielleloh"},"content":" String taskRemoved \u003d taskList.get(index - 1).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"danielleloh"},"content":" taskList.remove(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"danielleloh"},"content":" saveFileData(\"src/main/java/taskData.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"danielleloh"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"File not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"I\u0027ve removed this task from your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"danielleloh"},"content":" System.out.println(taskRemoved);","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" task(s) in the list.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"danielleloh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! looks like that task does not exist in your list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"You currently only have \" + numOfTasks + \" task(s) in your list.\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"danielleloh"},"content":" * Loads data from the file to Scribbles.","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"danielleloh"},"content":" * @param filePath File path where tasks are stored","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"danielleloh"},"content":" * @throws FileNotFoundException If data file does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"danielleloh"},"content":" public static void loadFileData(String filePath) throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"danielleloh"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"danielleloh"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(f));","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"danielleloh"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"danielleloh"},"content":" String delimiter \u003d \"\\\\s*\\\\|\\\\s*\";","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"danielleloh"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"danielleloh"},"content":" String[] tokens \u003d line.split(delimiter);","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"danielleloh"},"content":" String typeOfTask \u003d tokens[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"danielleloh"},"content":" int completed \u003d Integer.parseInt(tokens[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"danielleloh"},"content":" boolean isCompleted \u003d (completed \u003d\u003d 1 ? true : false);","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"danielleloh"},"content":" String description \u003d tokens[2].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"danielleloh"},"content":" switch(typeOfTask){","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"danielleloh"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"danielleloh"},"content":" taskList.add(new Todo(description, isCompleted));","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"danielleloh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"danielleloh"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"danielleloh"},"content":" String deadline \u003d tokens[3].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"danielleloh"},"content":" taskList.add(new Deadline(description, isCompleted, deadline));","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"danielleloh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"danielleloh"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"danielleloh"},"content":" String start \u003d tokens[3].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"danielleloh"},"content":" String end \u003d tokens[4].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"danielleloh"},"content":" taskList.add(new Event(description, isCompleted, start, end));","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"danielleloh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"danielleloh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Invalid task type \\\"\" + typeOfTask + \"\\\" was found in file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":284,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"danielleloh"},"content":" line \u003d reader.readLine(); // read the next line","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"danielleloh"},"content":" reader.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":289,"author":{"gitId":"danielleloh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":290,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":291,"author":{"gitId":"danielleloh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":292,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Uh oh! looks like the data in your file is corrupted and cannot be read! \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":293,"author":{"gitId":"danielleloh"},"content":" \"Please verify data in the file to proceed. Proceeding without verification may cause \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"danielleloh"},"content":" \"current data to disappear. \\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":297,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":298,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":299,"author":{"gitId":"danielleloh"},"content":" * Edits data in the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":300,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":301,"author":{"gitId":"danielleloh"},"content":" * @param filePath File path where tasks are stored","lastModifiedDate":"2024-01-30"},{"lineNumber":302,"author":{"gitId":"danielleloh"},"content":" * @throws FileNotFoundException If data file does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":303,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":304,"author":{"gitId":"danielleloh"},"content":" public static void saveFileData(String filePath) throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":305,"author":{"gitId":"danielleloh"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":306,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":307,"author":{"gitId":"danielleloh"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath));","lastModifiedDate":"2024-01-30"},{"lineNumber":308,"author":{"gitId":"danielleloh"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":309,"author":{"gitId":"danielleloh"},"content":" Task task \u003d taskList.get(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":310,"author":{"gitId":"danielleloh"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":311,"author":{"gitId":"danielleloh"},"content":" writer.write(\"T | \" + (task.isCompleted() ? \"1\" : \"0\") + \" | \" + task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":312,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":313,"author":{"gitId":"danielleloh"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":314,"author":{"gitId":"danielleloh"},"content":" writer.write(\"D | \" + (task.isCompleted() ? \"1\" : \"0\") + \" | \" + task.getDescription() +","lastModifiedDate":"2024-01-30"},{"lineNumber":315,"author":{"gitId":"danielleloh"},"content":" \" | \" + ((Deadline) task).getBy());","lastModifiedDate":"2024-01-30"},{"lineNumber":316,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":317,"author":{"gitId":"danielleloh"},"content":" if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":318,"author":{"gitId":"danielleloh"},"content":" writer.write(\"E | \" + (task.isCompleted() ? \"1\" : \"0\") + \" | \" + task.getDescription() +","lastModifiedDate":"2024-01-30"},{"lineNumber":319,"author":{"gitId":"danielleloh"},"content":" \" | \" + ((Event) task).getStart() + \" | \" + ((Event) task).getEnd());","lastModifiedDate":"2024-01-30"},{"lineNumber":320,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":321,"author":{"gitId":"danielleloh"},"content":" writer.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":322,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":323,"author":{"gitId":"danielleloh"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":324,"author":{"gitId":"danielleloh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":325,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":326,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":327,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":328,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":329,"author":{"gitId":"danielleloh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":330,"author":{"gitId":"danielleloh"},"content":" * Prints the error message for invalid inputs into chatbot.","lastModifiedDate":"2024-01-30"},{"lineNumber":331,"author":{"gitId":"danielleloh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":332,"author":{"gitId":"danielleloh"},"content":" * @return Error message","lastModifiedDate":"2024-01-30"},{"lineNumber":333,"author":{"gitId":"danielleloh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":334,"author":{"gitId":"danielleloh"},"content":" public static String inputErrorMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":335,"author":{"gitId":"danielleloh"},"content":" String errorMessage \u003d \"Sorry, Scribbles was unable to understand your instructions :(\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":336,"author":{"gitId":"danielleloh"},"content":" \"Try formatting your instructions as follows: \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":337,"author":{"gitId":"danielleloh"},"content":" \"- type \\\"list\\\" to view your current list of tasks\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":338,"author":{"gitId":"danielleloh"},"content":" \"- type \\\"mark [index]\\\" to mark task at index as completed\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":339,"author":{"gitId":"danielleloh"},"content":" \"- type \\\"unmark [index]\\\" to mark task at index as incomplete\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":340,"author":{"gitId":"danielleloh"},"content":" \"- type \\\"todo [task]\\\" to insert to-do task into your list\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":341,"author":{"gitId":"danielleloh"},"content":" \"- type \\\"deadline [task] /by [date]\\\" to insert task into your list with deadline as date\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":342,"author":{"gitId":"danielleloh"},"content":" \"- type \\\"event [task] /from [start] to [end]\\\" \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":343,"author":{"gitId":"danielleloh"},"content":" \"to insert task into your list with a start and end duration\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":344,"author":{"gitId":"danielleloh"},"content":" \"- type \\\"delete [index]\\\" to remove a task at index from your list\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":345,"author":{"gitId":"danielleloh"},"content":" \"Please try again :)\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":346,"author":{"gitId":"danielleloh"},"content":" return errorMessage;","lastModifiedDate":"2024-01-30"},{"lineNumber":347,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":348,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":349,"author":{"gitId":"danielleloh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":350,"author":{"gitId":"danielleloh"},"content":" // read data stored in hard disk","lastModifiedDate":"2024-01-30"},{"lineNumber":351,"author":{"gitId":"danielleloh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":352,"author":{"gitId":"danielleloh"},"content":" loadFileData(\"src/main/java/taskData.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":353,"author":{"gitId":"danielleloh"},"content":" } catch (FileNotFoundException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":354,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"File not found.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":355,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":356,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":357,"author":{"gitId":"danielleloh"},"content":" Scanner sc \u003d new Scanner(System.in); // scanner for user input","lastModifiedDate":"2024-01-30"},{"lineNumber":358,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":359,"author":{"gitId":"danielleloh"},"content":" System.out.println((greet()));","lastModifiedDate":"2024-01-30"},{"lineNumber":360,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":361,"author":{"gitId":"danielleloh"},"content":" String input \u003d sc.nextLine(); // takes in input from user","lastModifiedDate":"2024-01-30"},{"lineNumber":362,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":363,"author":{"gitId":"danielleloh"},"content":" while (!(input.equals(\"bye\"))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":364,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":365,"author":{"gitId":"danielleloh"},"content":" if (input.equals(\"list\")) { // user inputs \"list\"","lastModifiedDate":"2024-01-30"},{"lineNumber":366,"author":{"gitId":"danielleloh"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":367,"author":{"gitId":"danielleloh"},"content":" System.out.println(listTasks());","lastModifiedDate":"2024-01-30"},{"lineNumber":368,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":369,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":370,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"mark \")) { // user inputs \"mark...\" to mark task in list","lastModifiedDate":"2024-01-30"},{"lineNumber":371,"author":{"gitId":"danielleloh"},"content":" int index \u003d Integer.parseInt(input.substring(5)); // get the index to mark","lastModifiedDate":"2024-01-30"},{"lineNumber":372,"author":{"gitId":"danielleloh"},"content":" markCompleted(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":373,"author":{"gitId":"danielleloh"},"content":" System.out.println(markCompleteMessage(index));","lastModifiedDate":"2024-01-30"},{"lineNumber":374,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":375,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":376,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"unmark \")) { // user inputs \"unmark...\" to unmark task in list","lastModifiedDate":"2024-01-30"},{"lineNumber":377,"author":{"gitId":"danielleloh"},"content":" int index \u003d Integer.parseInt(input.substring(7)); // get the task number to unmark","lastModifiedDate":"2024-01-30"},{"lineNumber":378,"author":{"gitId":"danielleloh"},"content":" markIncomplete(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":379,"author":{"gitId":"danielleloh"},"content":" System.out.println(markIncompleteMessage(index));","lastModifiedDate":"2024-01-30"},{"lineNumber":380,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":381,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":382,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"todo \")) { // adds a to-do task to the list","lastModifiedDate":"2024-01-30"},{"lineNumber":383,"author":{"gitId":"danielleloh"},"content":" String description \u003d input.substring(5);","lastModifiedDate":"2024-01-30"},{"lineNumber":384,"author":{"gitId":"danielleloh"},"content":" addTodo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":385,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":386,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":387,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"deadline \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":388,"author":{"gitId":"danielleloh"},"content":" String description \u003d input.substring(9);","lastModifiedDate":"2024-01-30"},{"lineNumber":389,"author":{"gitId":"danielleloh"},"content":" addDeadline(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":390,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":391,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":392,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"event \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":393,"author":{"gitId":"danielleloh"},"content":" String description \u003d input.substring(6);","lastModifiedDate":"2024-01-30"},{"lineNumber":394,"author":{"gitId":"danielleloh"},"content":" addEvent(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":395,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":396,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":397,"author":{"gitId":"danielleloh"},"content":" } else if (input.startsWith(\"delete \")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":398,"author":{"gitId":"danielleloh"},"content":" int taskNumber \u003d Integer.parseInt(input.substring(7)); // get the task number to remove","lastModifiedDate":"2024-01-30"},{"lineNumber":399,"author":{"gitId":"danielleloh"},"content":" deleteTask(taskNumber);","lastModifiedDate":"2024-01-30"},{"lineNumber":400,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":401,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":402,"author":{"gitId":"danielleloh"},"content":" } else { // invalid inputs","lastModifiedDate":"2024-01-30"},{"lineNumber":403,"author":{"gitId":"danielleloh"},"content":" System.out.println(inputErrorMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":404,"author":{"gitId":"danielleloh"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":405,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":406,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":407,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":408,"author":{"gitId":"danielleloh"},"content":" System.out.println(exit()); // exits when user inputs bye","lastModifiedDate":"2024-01-30"},{"lineNumber":409,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":410,"author":{"gitId":"danielleloh"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"danielleloh":410}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"danielleloh"},"content":"public class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"danielleloh"},"content":" protected String description; // task description","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"danielleloh"},"content":" protected boolean completed; // true is task is completed","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"danielleloh"},"content":" public Task(String description, boolean completed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"danielleloh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"danielleloh"},"content":" this.completed \u003d completed;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"danielleloh"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"danielleloh"},"content":" return this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"danielleloh"},"content":" public boolean isCompleted() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"danielleloh"},"content":" return this.completed;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"danielleloh"},"content":" public void markComplete() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"danielleloh"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"danielleloh"},"content":" public void markIncomplete() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"danielleloh"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"danielleloh"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"danielleloh"},"content":" if (this.completed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"danielleloh"},"content":" return \"[X] \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"danielleloh"},"content":" return \"[ ] \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"danielleloh"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"danielleloh":32}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"danielleloh"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"danielleloh"},"content":" public Todo(String description, boolean completed) {","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"danielleloh"},"content":" super(description, completed);","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"danielleloh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"danielleloh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"danielleloh"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"danielleloh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"danielleloh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"danielleloh"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"danielleloh":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"danielleloh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"danielleloh"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"danielleloh"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"danielleloh"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"danielleloh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"danielleloh"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"danielleloh"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"danielleloh"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"danielleloh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"danielleloh"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"danielleloh"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"danielleloh"},"content":"unmark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"danielleloh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"danielleloh"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"danielleloh":14}}] diff --git a/danielleloh_ip_master/commits.json b/danielleloh_ip_master/commits.json index 9ee8368a..cc23ea74 100644 --- a/danielleloh_ip_master/commits.json +++ b/danielleloh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"danielleloh":[{"date":"2024-01-22","commitResults":[{"hash":"46c70174e3b58ca636bea51ba4902c84fc6f70d1","isMergeCommit":false,"messageTitle":"Rename, Greet, and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"0acccb6ba6af4dd687ddc23fea82d0bab4884544","isMergeCommit":false,"messageTitle":"Edited to echo commands entered by user, exits when user enters bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"e5332842873f29455335aa650dba00e707597e9a","isMergeCommit":false,"messageTitle":"Added a list to store tasks, and list items in list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}}]},{"date":"2024-01-23","commitResults":[{"hash":"d80c494de54c8a2e90a802c78ee835d6ef34a09b","isMergeCommit":false,"messageTitle":"Added mark and unmark feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":6}}},{"hash":"75b6c5b8817598a422524a57859a3a93f4e394b4","isMergeCommit":false,"messageTitle":"Added task types: Todos, Deadlines, Events.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":16}}},{"hash":"6307d844bc65d2aa4ef956559da052049cb74580","isMergeCommit":false,"messageTitle":"Edited System.out.println when adding Todos, Deadlines, Events to list","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"cfa916e36a11792a6023a09e1df34e8a187afec3","isMergeCommit":false,"messageTitle":"Added automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"bat":{"insertions":0,"deletions":21}}},{"hash":"5ff2506a2c3bd3a84878518b7927c975b09f2a64","isMergeCommit":false,"messageTitle":"Added error messages for invalid inputs.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":20}}}]},{"date":"2024-01-24","commitResults":[{"hash":"09b6aaedb3f0fa05a2aa5ff04207260a305dc7d7","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"danielleloh":{"java":250,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"danielleloh":14930.805},"authorDisplayNameMap":{"danielleloh":"CS2103T-T10-1 LOH ..ELLE"}} +{"authorDailyContributionsMap":{"danielleloh":[{"date":"2024-01-22","commitResults":[{"hash":"46c70174e3b58ca636bea51ba4902c84fc6f70d1","isMergeCommit":false,"messageTitle":"Rename, Greet, and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"0acccb6ba6af4dd687ddc23fea82d0bab4884544","isMergeCommit":false,"messageTitle":"Edited to echo commands entered by user, exits when user enters bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"e5332842873f29455335aa650dba00e707597e9a","isMergeCommit":false,"messageTitle":"Added a list to store tasks, and list items in list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}}]},{"date":"2024-01-23","commitResults":[{"hash":"d80c494de54c8a2e90a802c78ee835d6ef34a09b","isMergeCommit":false,"messageTitle":"Added mark and unmark feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":6}}},{"hash":"75b6c5b8817598a422524a57859a3a93f4e394b4","isMergeCommit":false,"messageTitle":"Added task types: Todos, Deadlines, Events.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":16}}},{"hash":"6307d844bc65d2aa4ef956559da052049cb74580","isMergeCommit":false,"messageTitle":"Edited System.out.println when adding Todos, Deadlines, Events to list","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"cfa916e36a11792a6023a09e1df34e8a187afec3","isMergeCommit":false,"messageTitle":"Added automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"bat":{"insertions":0,"deletions":21}}},{"hash":"5ff2506a2c3bd3a84878518b7927c975b09f2a64","isMergeCommit":false,"messageTitle":"Added error messages for invalid inputs.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":20}}}]},{"date":"2024-01-24","commitResults":[{"hash":"09b6aaedb3f0fa05a2aa5ff04207260a305dc7d7","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"f748dee9fb383bd2b2e0e9947f47a41e8b26fc41","isMergeCommit":false,"messageTitle":"Separate classes Task, Todo, Deadline and Event from main method","messageBody":"For better organization of classes from the main method\n","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":0}}},{"hash":"afa4c05424b55e8bd684df98adc4aa4d7e047a03","isMergeCommit":false,"messageTitle":"Rename file Duke.java to Scribbles.java","messageBody":"Rename file to match with new chatbot name\n","fileTypesAndContributionMap":{"java":{"insertions":283,"deletions":254}}},{"hash":"7f1a154c1b9d11fb5b00c9c575bc2676282bd385","isMergeCommit":false,"messageTitle":"Scribbles.java: Add loadFileData method","messageBody":"Data from the hard disk needs to be loaded to program when chatbot starts up.\n\nMethod is called when main() is ran and the data from hard disk is loaded into the chatbot.\n","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":11}}},{"hash":"ab20542a6b20a07eff08644f8c4856e96f3e2dae","isMergeCommit":false,"messageTitle":"Scribbles.java: Add saveFileData method","messageBody":"Update the hard disk whenever changes to tasks are made\n\nThis saves the data to the hard disk such that when main() is ran again, it is able to load data from the previous use of the chatbot.\n","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":2}}},{"hash":"0c476eeaa537c26d889d833fce7b3435bd88e93a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"* branch-Level-7:\n Scribbles.java: Add saveFileData method\n Scribbles.java: Add loadFileData method\n Rename file Duke.java to Scribbles.java\n Separate classes Task, Todo, Deadline and Event from main method\n","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"danielleloh":{"java":504,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"danielleloh":51200.688},"authorDisplayNameMap":{"danielleloh":"CS2103T-T10-1 LOH ..ELLE"}} diff --git a/darkvoid32_ip_master/authorship.json b/darkvoid32_ip_master/authorship.json index 11e502dc..96980231 100644 --- a/darkvoid32_ip_master/authorship.json +++ b/darkvoid32_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darkvoid32"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darkvoid32"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"darkvoid32"},"content":"import java.util.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"darkvoid32"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"darkvoid32"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"darkvoid32"},"content":" final static String HORIZONTAL_LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"darkvoid32"},"content":" final static String ADD_TASK \u003d \"Got it. I\u0027ve added this task to your list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"darkvoid32"},"content":" Scanner reader \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"darkvoid32"},"content":" List\u003cTask\u003e userTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Hello from Kewgy!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Type \\\"bye\\\" to exit!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"darkvoid32"},"content":" String userMsg \u003d reader.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"darkvoid32"},"content":" while (!Objects.equals(userMsg, \"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"darkvoid32"},"content":" if (Objects.equals(userMsg, \"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Here are the tasks in your list: \");","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"darkvoid32"},"content":" for (int i \u003d 1; i \u003c userTaskList.size() + 1; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"darkvoid32"},"content":" System.out.println(i + \": \" + userTaskList.get(i - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"darkvoid32"},"content":" userMsg \u003d reader.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"darkvoid32"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"darkvoid32"},"content":" String[] userMsgParsed \u003d userMsg.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"darkvoid32"},"content":" switch (userMsgParsed[0]) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"darkvoid32"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"darkvoid32"},"content":" if (checkValidMarkCommand(userMsgParsed, userTaskList)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"darkvoid32"},"content":" userTaskList.get(Integer.parseInt(userMsgParsed[1]) - 1).setDone(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"darkvoid32"},"content":" System.out.println(userTaskList.get(Integer.parseInt(userMsgParsed[1]) - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"darkvoid32"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"darkvoid32"},"content":" userMsg \u003d reader.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"darkvoid32"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"darkvoid32"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"darkvoid32"},"content":" if (checkValidMarkCommand(userMsgParsed, userTaskList)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"darkvoid32"},"content":" userTaskList.get(Integer.parseInt(userMsgParsed[1]) - 1).setDone(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"darkvoid32"},"content":" System.out.println(userTaskList.get(Integer.parseInt(userMsgParsed[1]) - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"darkvoid32"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"darkvoid32"},"content":" userMsg \u003d reader.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"darkvoid32"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"darkvoid32"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"darkvoid32"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"darkvoid32"},"content":" ToDo newTodo \u003d new ToDo(userMsg);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"darkvoid32"},"content":" userTaskList.add(newTodo);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"darkvoid32"},"content":" System.out.println(ADD_TASK);","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"darkvoid32"},"content":" System.out.println(newTodo);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Now you have \" + userTaskList.size() + \" tasks in your list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"darkvoid32"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"darkvoid32"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"darkvoid32"},"content":" userMsg \u003d reader.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"darkvoid32"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"darkvoid32"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"darkvoid32"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"darkvoid32"},"content":" Deadline newDeadline \u003d new Deadline(userMsg);","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"darkvoid32"},"content":" userTaskList.add(newDeadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"darkvoid32"},"content":" System.out.println(ADD_TASK);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"darkvoid32"},"content":" System.out.println(newDeadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Now you have \" + userTaskList.size() + \" tasks in your list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"darkvoid32"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"darkvoid32"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"darkvoid32"},"content":" userMsg \u003d reader.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"darkvoid32"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"darkvoid32"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"darkvoid32"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"darkvoid32"},"content":" Event newEvent \u003d new Event(userMsg);","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"darkvoid32"},"content":" userTaskList.add(newEvent);","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"darkvoid32"},"content":" System.out.println(ADD_TASK);","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"darkvoid32"},"content":" System.out.println(newEvent);","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Now you have \" + userTaskList.size() + \" tasks in your list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"darkvoid32"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"darkvoid32"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"darkvoid32"},"content":" userMsg \u003d reader.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"darkvoid32"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"darkvoid32"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"darkvoid32"},"content":" if (checkValidMarkCommand(userMsgParsed, userTaskList)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"darkvoid32"},"content":" System.out.println(userTaskList.get(Integer.parseInt(userMsgParsed[1]) - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"darkvoid32"},"content":" userTaskList.remove(Integer.parseInt(userMsgParsed[1]) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Now you have \" + userTaskList.size() + \" tasks in your list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"darkvoid32"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"darkvoid32"},"content":" userMsg \u003d reader.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"darkvoid32"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"darkvoid32"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Unknown command!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"darkvoid32"},"content":" userMsg \u003d reader.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Bye! Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"darkvoid32"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":146,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"darkvoid32"},"content":" public static boolean checkValidMarkCommand(String[] userMsgParsed, List\u003cTask\u003e userTaskList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"darkvoid32"},"content":" return userMsgParsed.length \u003e 1 \u0026\u0026","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"darkvoid32"},"content":" userMsgParsed[1].chars().allMatch(Character::isDigit) \u0026\u0026","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"darkvoid32"},"content":" Integer.parseInt(userMsgParsed[1]) \u003c\u003d userTaskList.size() \u0026\u0026","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"darkvoid32"},"content":" Integer.parseInt(userMsgParsed[1]) \u003e 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"darkvoid32":148,"-":5}},{"path":"src/main/java/Exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"package Exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":" public DukeException() { }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darkvoid32"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"darkvoid32"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darkvoid32":9}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"package Tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darkvoid32"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":" public Deadline(String description) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darkvoid32"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"darkvoid32"},"content":" String desc \u003d super.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"darkvoid32"},"content":" if (!desc.contains(\"/by\")) throw new DukeException(\"Date missing in description!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"darkvoid32"},"content":" String[] descParsed \u003d desc.split(\"/by\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"darkvoid32"},"content":" if (descParsed.length \u003d\u003d 1) throw new DukeException(\"Invalid date!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"darkvoid32"},"content":" super.description \u003d descParsed[0].trim() + \" (by: \" + descParsed[1].trim() + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"darkvoid32"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"darkvoid32"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"darkvoid32"},"content":" return \"[\" + TaskType.D + \"][\" + super.getStatusIcon() + \"] \" + super.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"darkvoid32"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darkvoid32":23}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"package Tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darkvoid32"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":" public Event(String description) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darkvoid32"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"darkvoid32"},"content":" String desc \u003d super.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"darkvoid32"},"content":" if (!desc.contains(\"/from\") || !desc.contains(\"/to\")) throw new DukeException(\"Dates missing in description!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"darkvoid32"},"content":" String[] descParsed \u003d desc.split(\"/from\");","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"darkvoid32"},"content":" String[] dateParsed \u003d descParsed[1].split(\"/to\");","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"darkvoid32"},"content":" if (dateParsed.length \u003c\u003d 1) throw new DukeException(\"Invalid dates!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"darkvoid32"},"content":" super.description \u003d descParsed[0].trim() + \" (from: \" + dateParsed[0].trim() + \" to: \" + dateParsed[1].trim()+ \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"darkvoid32"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"darkvoid32"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"darkvoid32"},"content":" return \"[\" + TaskType.E + \"][\" + super.getStatusIcon() + \"] \" + super.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"darkvoid32"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darkvoid32":24}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"package Tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darkvoid32"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"darkvoid32"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"darkvoid32"},"content":" protected enum TaskType {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"darkvoid32"},"content":" T,","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"darkvoid32"},"content":" D,","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"darkvoid32"},"content":" E","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"darkvoid32"},"content":" public Task(String description) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"darkvoid32"},"content":" if (description.split(\" \").length \u003d\u003d 1) throw new DukeException(\"Description cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"darkvoid32"},"content":" this.description \u003d description.split(\" \", 2)[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"darkvoid32"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"darkvoid32"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"darkvoid32"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"darkvoid32"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"darkvoid32"},"content":" if (done) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"darkvoid32"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"darkvoid32"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"darkvoid32"},"content":" this.isDone \u003d done;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"darkvoid32"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"darkvoid32"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"darkvoid32"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"darkvoid32"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"darkvoid32":39}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"package Tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darkvoid32"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":" public ToDo(String description) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darkvoid32"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"darkvoid32"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"darkvoid32"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"darkvoid32"},"content":" return \"[\" + TaskType.T + \"][\" + super.getStatusIcon() + \"] \" + super.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"darkvoid32"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darkvoid32":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"1234","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darkvoid32"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darkvoid32":6}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import Storage.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darkvoid32"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import Tasks.Task.TaskType;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import Ui.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import Ui.Parser.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import Ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"darkvoid32"},"content":"import java.util.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Simple chatbot program named kewqgy","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * ","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @author Tang Yetong","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" **/","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" List\u003cTask\u003e userTaskList \u003d storage.loadTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ui.printIntro();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String[] userMsg \u003d ui.getUserCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Command nextCommand \u003d parser.parseUserMsg(userMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":" while (nextCommand !\u003d Command.BYE) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":" switch (nextCommand) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"-"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ui.printList(userTaskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (parser.checkValidMarkCommand(userMsg, userTaskList)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" int taskInt \u003d Integer.parseInt(userMsg[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userTaskList.get(taskInt).setDone(true);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" storage.updateTask(taskInt, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ui.markTask(userTaskList, taskInt);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"darkvoid32"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (parser.checkValidMarkCommand(userMsg, userTaskList)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" int taskInt \u003d Integer.parseInt(userMsg[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" userTaskList.get(taskInt).setDone(false);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" storage.updateTask(taskInt, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ui.markTask(userTaskList, taskInt);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"darkvoid32"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ToDo task \u003d new ToDo(userMsg[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" userTaskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage.saveTask(userMsg[1], TaskType.T);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ui.printAddTask(task, userTaskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"darkvoid32"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" ui.printError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"darkvoid32"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Deadline task \u003d new Deadline(userMsg[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" userTaskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" storage.saveTask(userMsg[1], TaskType.T);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" ui.printAddTask(task, userTaskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"darkvoid32"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" ui.printError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"darkvoid32"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Event task \u003d new Event(userMsg[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" userTaskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" storage.saveTask(userMsg[1], TaskType.T);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" ui.printAddTask(task, userTaskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" ui.printError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (parser.checkValidMarkCommand(userMsg, userTaskList)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" int taskInt \u003d Integer.parseInt(userMsg[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" userTaskList.remove(taskInt);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" storage.deleteTask(taskInt);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" ui.printDeleteTask(userTaskList.get(taskInt), userTaskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" case FIND:","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" ui.printTaskKeyword(userTaskList, userMsg[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" case UNKNOWN:","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ui.printUnknownCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" userMsg \u003d ui.getUserCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" nextCommand \u003d parser.parseUserMsg(userMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" ui.printGoodBye();","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"darkvoid32":26,"-":90}},{"path":"src/main/java/Exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"package Exceptions;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" public DukeException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darkvoid32"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darkvoid32"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"darkvoid32"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darkvoid32":8,"-":2}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"package Tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Deadline task, with description and time to finish task by","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * ","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * @author Tang Yetong","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" **/","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darkvoid32"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Create deadline task","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * ","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @param description description of task, with deadline included for parsing","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws DukeException","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"darkvoid32"},"content":" public Deadline(String description) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"darkvoid32"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"darkvoid32"},"content":" String desc \u003d super.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" if (!desc.contains(\"/by\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" throw new DukeException(\"Date missing in description!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"darkvoid32"},"content":" String[] descParsed \u003d desc.split(\"/by\");","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" if (descParsed.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":" throw new DukeException(\"Invalid date!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" LocalDate date \u003d LocalDate.parse(descParsed[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String formattedDate \u003d date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" super.description \u003d descParsed[0].trim() + \" (by: \" + formattedDate + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" System.out.println(\"Unknown Date Format!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"darkvoid32"},"content":" super.description \u003d descParsed[0].trim() + \" (by: \" + descParsed[1].trim() + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"darkvoid32"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"darkvoid32"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"darkvoid32"},"content":" return \"[\" + TaskType.D + \"][\" + super.getStatusIcon() + \"] \" + super.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"darkvoid32"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darkvoid32":21,"-":29}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"package Tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Event task, with description and time to start and finish task by","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * ","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * @author Tang Yetong","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" **/","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darkvoid32"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Creation of event task","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param description description with 2 dates included for parsing","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws DukeException","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"darkvoid32"},"content":" public Event(String description) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"darkvoid32"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"darkvoid32"},"content":" String desc \u003d super.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (!desc.contains(\"/from\") || !desc.contains(\"/to\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new DukeException(\"Dates missing in description!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"darkvoid32"},"content":" String[] descParsed \u003d desc.split(\"/from\");","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"darkvoid32"},"content":" String[] dateParsed \u003d descParsed[1].split(\"/to\");","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" if (dateParsed.length \u003c\u003d 1 || dateParsed[0].isBlank() || dateParsed[1].isBlank()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":" throw new DukeException(\"Invalid dates!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":" LocalDate date1 \u003d LocalDate.parse(dateParsed[0].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" LocalDate date2 \u003d LocalDate.parse(dateParsed[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String formattedDate1 \u003d date1.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String formattedDate2 \u003d date2.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" super.description \u003d descParsed[0].trim() + \" (from: \" + formattedDate1 + \" to: \" + formattedDate2 + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" System.out.println(\"Unknown Date Format!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" super.description \u003d descParsed[0].trim() + \" (from: \" + dateParsed[0].trim() + \" to: \"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + dateParsed[1].trim() + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"darkvoid32"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"darkvoid32"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"darkvoid32"},"content":" return \"[\" + TaskType.E + \"][\" + super.getStatusIcon() + \"] \" + super.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"darkvoid32"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darkvoid32":21,"-":33}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"package Tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darkvoid32"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"darkvoid32"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public enum TaskType {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"darkvoid32"},"content":" T,","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"darkvoid32"},"content":" D,","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" E;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static TaskType getType(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" switch (s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return T;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return D;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return E;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"darkvoid32"},"content":" public Task(String description) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new DukeException(\"Description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"darkvoid32"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"darkvoid32"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"darkvoid32"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"darkvoid32"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"darkvoid32"},"content":" this.isDone \u003d done;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"darkvoid32"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"darkvoid32"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"darkvoid32"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"darkvoid32"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"darkvoid32":30,"-":23}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"package Tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * ToDo task, with description","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * ","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * @author Tang Yetong","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":" **/","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"darkvoid32"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Create ToDo task","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * ","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @param description description of task","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @throws DukeException","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"darkvoid32"},"content":" public ToDo(String description) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"darkvoid32"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"darkvoid32"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"darkvoid32"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"darkvoid32"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"darkvoid32"},"content":" return \"[\" + TaskType.T + \"][\" + super.getStatusIcon() + \"] \" + super.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"darkvoid32"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"darkvoid32"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darkvoid32":14,"-":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"darkvoid32"},"content":"1234","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"darkvoid32"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"darkvoid32"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darkvoid32"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darkvoid32"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darkvoid32"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darkvoid32":6}}] diff --git a/darkvoid32_ip_master/commits.json b/darkvoid32_ip_master/commits.json index d7821ee3..85f04705 100644 --- a/darkvoid32_ip_master/commits.json +++ b/darkvoid32_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"darkvoid32":[{"date":"2024-01-24","commitResults":[{"hash":"ddda75781de4aacd07b66c287445cbe08506f7c6","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"5126903ee91f63b377e914ae960ede429865013d","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"43a0d7b7276f661d07838d3a81c2a96309166fc7","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"40cef2988905988f4bad4333782efb0fa10d7e04","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":13}}}]},{"date":"2024-01-25","commitResults":[{"hash":"2ad4358c7b420090343ed8cacb6b956fd999f2d8","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":28}}},{"hash":"5185d38012857467fed2d8213def394c0216a4de","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0}}},{"hash":"39135caa935fe48eb0077c3b19002e5ebd8a8a0d","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":44}}},{"hash":"5486cc23f801a6c1dfa29f31103ed1a036213a5b","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":3}}},{"hash":"3611198012c9b5c2703288c01ff804ee9bec1cfd","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"darkvoid32":{"java":257,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":6}},"authorContributionVariance":{"darkvoid32":13291.959},"authorDisplayNameMap":{"darkvoid32":"CS2103T-W12-3 TANG..TONG"}} +{"authorDailyContributionsMap":{"darkvoid32":[{"date":"2024-01-24","commitResults":[{"hash":"ddda75781de4aacd07b66c287445cbe08506f7c6","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"5126903ee91f63b377e914ae960ede429865013d","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"43a0d7b7276f661d07838d3a81c2a96309166fc7","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"40cef2988905988f4bad4333782efb0fa10d7e04","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":13}}}]},{"date":"2024-01-25","commitResults":[{"hash":"2ad4358c7b420090343ed8cacb6b956fd999f2d8","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":28}}},{"hash":"5185d38012857467fed2d8213def394c0216a4de","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0}}},{"hash":"39135caa935fe48eb0077c3b19002e5ebd8a8a0d","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":44}}},{"hash":"5486cc23f801a6c1dfa29f31103ed1a036213a5b","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":3}}},{"hash":"3611198012c9b5c2703288c01ff804ee9bec1cfd","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"darkvoid32":{"java":120,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":6}},"authorContributionVariance":{"darkvoid32":13291.959},"authorDisplayNameMap":{"darkvoid32":"CS2103T-W12-3 TANG..TONG"}} diff --git a/darryl-chan_ip_master/authorship.json b/darryl-chan_ip_master/authorship.json index 7f5b33f8..9b4ac332 100644 --- a/darryl-chan_ip_master/authorship.json +++ b/darryl-chan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/linus.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"[T][ ] 213","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"[D][X] eat (by: tomorrow)","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"[E][ ] reading (from: 8978 to: 28739)","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"darryl-chan":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" public Deadline(String description, String by, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s%s%s\",","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" \"[D]\",","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" super.toString(),","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" \" (by: \" + this.by + \")\");","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":23}},{"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":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" String logo \u003d \" __ _ \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" + \" / / (_)___ __ _______\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" + \" / / / / __ \\\\/ / / / ___/\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" + \" / /___/ / / / / /_/ (__ ) \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" + \"/_____/_/_/ /_/\\\\__,_/____/ \\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" Program program \u003d new Program();","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" program.start();","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darryl-chan":11,"-":5}},{"path":"src/main/java/DukeCeption.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class DukeCeption extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public DukeCeption(String error) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" super(error);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":5}},{"path":"src/main/java/EmptyMessegeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class EmptyMessegeException extends DukeCeption {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public EmptyMessegeException(String error) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" super(error);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" public Event(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" return \"[E]\" + super.toString() + ","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" String.format(\" (from: %s to: %s)\", this.from, this.to);","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":22}},{"path":"src/main/java/PrintList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"public class PrintList {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" private final String BORDER \u003d \"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\";","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" private ArrayList\u003cString\u003e printList;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" public PrintList() {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" this.printList \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" public void add(String print) {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(print);","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" public void print() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" String finalString \u003d \"\";","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" for (int i \u003d 0; i \u003c this.printList.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" if (i \u003d\u003d this.printList.size() - 1) {","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" finalString +\u003d String.format(\"\\t%s\", this.printList.get(i));","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" finalString +\u003d String.format(\"\\t%s\\n\", this.printList.get(i));","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" this.printList.clear();","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"\\t%s\\n%s\\n\\t%s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" this.BORDER,","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" finalString,","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" this.BORDER);","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":36}},{"path":"src/main/java/Program.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"public class Program {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" private final String NAME \u003d \"Linus\";","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" private Boolean running;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" private Scanner userInputScanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" private PrintList printList;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" // private final String FILE_PATH \u003d \"./data/linus.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" public Program() {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" this.running \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" this.userInputScanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" this.printList \u003d new PrintList();","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" public void start() {","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" File f \u003d this.retrieveFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" taskList.loadList(f, printList);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" this.greeting();","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" while (this.running) {","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" String userInput \u003d this.userInputScanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" this.readUserInput(userInput);","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" public File retrieveFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" File file \u003d new File(\"./data/linus.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" File parentDir \u003d file.getParentFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"darryl-chan"},"content":" parentDir.mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Created data folder as none was found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"darryl-chan"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Created linus.txt to read files from\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Retrieving file...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"darryl-chan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Could not create file :/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"darryl-chan"},"content":" printList.print();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"darryl-chan"},"content":" return file;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"darryl-chan"},"content":" private void readUserInput(String input) {","lastModifiedDate":"2024-01-21"},{"lineNumber":54,"author":{"gitId":"darryl-chan"},"content":" String[] userInput \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"darryl-chan"},"content":" String command \u003d userInput[0].toLowerCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"darryl-chan"},"content":" String taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"darryl-chan"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"darryl-chan"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"darryl-chan"},"content":" this.end();","lastModifiedDate":"2024-01-21"},{"lineNumber":62,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"darryl-chan"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"darryl-chan"},"content":" this.taskList.getList(this.printList);","lastModifiedDate":"2024-01-21"},{"lineNumber":65,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"darryl-chan"},"content":" case \"mark\": case \"unmark\": case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"darryl-chan"},"content":" if (userInput.length !\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"A number is required after writing this command\");","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"darryl-chan"},"content":" taskNumber \u003d userInput[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"darryl-chan"},"content":" this.taskList.markOrDelete(command, taskNumber, this.printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"darryl-chan"},"content":" case \"todo\": case \"deadline\": case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"darryl-chan"},"content":" if (userInput.length !\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Event description cannot be empty\");","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"darryl-chan"},"content":" String task \u003d userInput[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"darryl-chan"},"content":" this.taskList.addTask(command, task, this.printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"darryl-chan"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Sorry I don\u0027t recognize that command :/\");","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":85,"author":{"gitId":"darryl-chan"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"darryl-chan"},"content":" printList.add(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"darryl-chan"},"content":" } finally {","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"darryl-chan"},"content":" this.printList.print();","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":92,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":93,"author":{"gitId":"darryl-chan"},"content":" private void greeting() {","lastModifiedDate":"2024-01-21"},{"lineNumber":94,"author":{"gitId":"darryl-chan"},"content":" String greeting \u003d String.format(\"Hello I\u0027m %s\", this.NAME);","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"darryl-chan"},"content":" String request \u003d \"What can I do for you?\";","lastModifiedDate":"2024-01-21"},{"lineNumber":96,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(greeting);","lastModifiedDate":"2024-01-21"},{"lineNumber":97,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(request);","lastModifiedDate":"2024-01-21"},{"lineNumber":98,"author":{"gitId":"darryl-chan"},"content":" this.printList.print();","lastModifiedDate":"2024-01-21"},{"lineNumber":99,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":100,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":101,"author":{"gitId":"darryl-chan"},"content":" private void end() {","lastModifiedDate":"2024-01-21"},{"lineNumber":102,"author":{"gitId":"darryl-chan"},"content":" File file \u003d new File(\"./data/linus.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"darryl-chan"},"content":" taskList.saveList(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(\"Saving file!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(\"Goodbye. See you later!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"darryl-chan"},"content":" this.running \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":107,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":108,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":108}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" protected Boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"[%s] %s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" this.description);","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":34}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"// import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" public TaskList() {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" public void printListAddNewTask(Task task, PrintList printList) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Okay! added this task:\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Now you have %d tasks in the list.\", this.list.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" public void addTask(String task, String fullDescription, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" switch (task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" this.addTodo(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" this.addDeadline(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" this.addEvent(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure your /from/to/by is correct\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"darryl-chan"},"content":" public void addTodo(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Todo cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new ToDo(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"darryl-chan"},"content":" public void addDeadline(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"darryl-chan"},"content":" String[] descriptionList \u003d description.split(\"/by\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Deadline cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"darryl-chan"},"content":" String taskDescription \u003d descriptionList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"darryl-chan"},"content":" String by \u003d descriptionList[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new Deadline(taskDescription, by);","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure /by is written properly\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"darryl-chan"},"content":" public void addEvent(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Event cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"darryl-chan"},"content":" String[] descriptionList \u003d description.split(\"/from\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"darryl-chan"},"content":" String[] fromAndToList \u003d descriptionList[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"darryl-chan"},"content":" String taskDescription \u003d descriptionList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"darryl-chan"},"content":" String from \u003d fromAndToList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"darryl-chan"},"content":" String to \u003d fromAndToList[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new Event(taskDescription, from, to);","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure /from and /to is written properly\");","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"darryl-chan"},"content":" public void markOrDelete(String command, String taskNumberString, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"darryl-chan"},"content":" int taskNumber \u003d Integer.parseInt(taskNumberString);","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"darryl-chan"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"darryl-chan"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"darryl-chan"},"content":" this.mark(taskNumber, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"darryl-chan"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"darryl-chan"},"content":" this.unmark(taskNumber, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":98,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"darryl-chan"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"darryl-chan"},"content":" this.delete(taskNumber, printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"darryl-chan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"The number given is unrecognizable\");","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"The number is not in this list!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"darryl-chan"},"content":" public void delete(int taskNumber, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"darryl-chan"},"content":" Task removedTask \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"darryl-chan"},"content":" this.list.remove(taskNumber - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"This task is now removed:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"darryl-chan"},"content":" printList.add(removedTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Now you have %d tasks in the list.\", this.list.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"darryl-chan"},"content":" public void mark(int taskNumber, PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":119,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-21"},{"lineNumber":120,"author":{"gitId":"darryl-chan"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":121,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Great! I will mark this as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":122,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":123,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":124,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":125,"author":{"gitId":"darryl-chan"},"content":" public void unmark(int taskNumber, PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":126,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-21"},{"lineNumber":127,"author":{"gitId":"darryl-chan"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":128,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Alright! this task is now unmarked:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":130,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":131,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":132,"author":{"gitId":"darryl-chan"},"content":" public void getList(PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":133,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":134,"author":{"gitId":"darryl-chan"},"content":" for (int i \u003d 0; i \u003c this.list.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":135,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"%d. %s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":136,"author":{"gitId":"darryl-chan"},"content":" i + 1,","lastModifiedDate":"2024-01-21"},{"lineNumber":137,"author":{"gitId":"darryl-chan"},"content":" this.list.get(i)));","lastModifiedDate":"2024-01-21"},{"lineNumber":138,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"darryl-chan"},"content":" public void textToTask(String line) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"darryl-chan"},"content":" String taskType \u003d line.substring(1,2);","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"darryl-chan"},"content":" boolean isDone \u003d (line.substring(4,5).equals(\"X\")) ? true : false;","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"darryl-chan"},"content":" String fullDescription \u003d line.substring(7);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"darryl-chan"},"content":" String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"darryl-chan"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"darryl-chan"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"darryl-chan"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"darryl-chan"},"content":" task \u003d new ToDo(fullDescription, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"darryl-chan"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"darryl-chan"},"content":" String[] splitBy \u003d fullDescription.split(\" \\\\(by: \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"darryl-chan"},"content":" description \u003d splitBy[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"darryl-chan"},"content":" String byString \u003d splitBy[1].substring(0, splitBy[1].length()-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"darryl-chan"},"content":" task \u003d new Deadline(description, byString, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"darryl-chan"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"darryl-chan"},"content":" String[] splitFrom \u003d fullDescription.split(\" \\\\(from: \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"darryl-chan"},"content":" String[] splitTo \u003d splitFrom[1].split(\" to: \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"darryl-chan"},"content":" description \u003d splitFrom[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"darryl-chan"},"content":" String fromString \u003d splitTo[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"darryl-chan"},"content":" String toString \u003d splitTo[1].substring(0, splitTo[1].length()-1);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"darryl-chan"},"content":" task \u003d new Event(description, fromString, toString, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"darryl-chan"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"darryl-chan"},"content":" public void loadList(File file, PrintList printList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"darryl-chan"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"darryl-chan"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"darryl-chan"},"content":" this.textToTask(scanner.nextLine());","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"darryl-chan"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"File retrieved!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"darryl-chan"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"darryl-chan"},"content":" printList.add(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"darryl-chan"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"File is corrupted :/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Making new file instead\");","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"darryl-chan"},"content":" list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"darryl-chan"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"darryl-chan"},"content":" printList.print();","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"darryl-chan"},"content":" public void saveList(File file) {","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"darryl-chan"},"content":" FileWriter writer \u003d new FileWriter(file, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"darryl-chan"},"content":" for (Task line : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"darryl-chan"},"content":" writer.write(line.toString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"darryl-chan"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"darryl-chan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"darryl-chan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":200,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":202,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":203}},{"path":"src/main/java/Test.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Test {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" String testing \u003d \" (by: ABSCSD\";","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" System.out.println(testing.substring(2,3));","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" testing.split(\" (by: \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":7}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" public ToDo(String description){","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s%s\", \"[T]\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"todo return book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"deadline return book ","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"delete 5","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darryl-chan":9}},{"path":"text-ui-test/runtest1.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"@ECHO OFF","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"REM delete output from previous run","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"del ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" exit /b 1","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":")","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":"REM compare the output to the expected output","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":21}}] +[{"path":"data/linus - Copy.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"T;;0;;abs","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"D;;0;;absdasd;;19/2/2020 1900","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"E;;0;;fgssdf;;20/3/2000 2000;;27/3/2022 2200","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"darryl-chan":3}},{"path":"data/linus.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"D;;0;;ashd;;19/02/2020 1900","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"E;;1;;eat food;;20/03/2020 1900;;21/03/2020 2000","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"T;;0;;891238","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"D;;1;;cyryr;;20/09/2020 1900","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"D;;0;;crghfd;;02/09/2020 1900","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"darryl-chan":5}},{"path":"src/main/java/DateTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"public class DateTask {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" LocalDateTime localDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" DateTimeFormatter DATE_TIME_FORMATTER_PRINT \u003d DateTimeFormatter.ofPattern(\"\u0027Date:\u0027 d MMM yyyy \u0027Time:\u0027 h:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" DateTimeFormatter DATE_TIME_FORMATTER_SAVE_AND_READ \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" public DateTask(LocalDateTime localDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" this.localDateTime \u003d localDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" public DateTask(String dateString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" LocalDateTime parsedDateTime \u003d LocalDateTime.parse(dateString, DATE_TIME_FORMATTER_SAVE_AND_READ);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" this.localDateTime \u003d parsedDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" return localDateTime.format(DATE_TIME_FORMATTER_SAVE_AND_READ);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" return localDateTime.format(DATE_TIME_FORMATTER_PRINT);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"darryl-chan":28}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected DateTask by;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" this(description, by, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" public Deadline(String description, String by, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" this.by \u003d new DateTask(by);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s;;%s;;%s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" \"D\",super.saveFormat(), by.saveFormat());","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s%s%s\",","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" \"[D]\",","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" super.toString(),","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" \" (by: \" + by + \")\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":27}},{"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":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" String logo \u003d \" __ _ \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" + \" / / (_)___ __ _______\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" + \" / / / / __ \\\\/ / / / ___/\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" + \" / /___/ / / / / /_/ (__ ) \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" + \"/_____/_/_/ /_/\\\\__,_/____/ \\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" Program program \u003d new Program();","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" program.start();","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darryl-chan":11,"-":5}},{"path":"src/main/java/DukeCeption.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class DukeCeption extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public DukeCeption(String error) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" super(error);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":5}},{"path":"src/main/java/EmptyMessegeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class EmptyMessegeException extends DukeCeption {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" public EmptyMessegeException(String error) {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" super(error);","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected DateTask from;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" protected DateTask to;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" this(description, from, to , false);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" public Event(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" this.from \u003d new DateTask(from);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" this.to \u003d new DateTask(to);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s;;%s;;%s;;%s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" \"E\", super.saveFormat(), from.saveFormat(), to.saveFormat());","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" return \"[E]\" + super.toString() + ","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" String.format(\" (from: %s to: %s)\", from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":26}},{"path":"src/main/java/PrintList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"public class PrintList {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" private final String BORDER \u003d \"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\";","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" private ArrayList\u003cString\u003e printList;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" public PrintList() {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" this.printList \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" public void add(String print) {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(print);","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" public void print() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" String finalString \u003d \"\";","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" for (int i \u003d 0; i \u003c this.printList.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" if (i \u003d\u003d this.printList.size() - 1) {","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" finalString +\u003d String.format(\"\\t%s\", this.printList.get(i));","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" finalString +\u003d String.format(\"\\t%s\\n\", this.printList.get(i));","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" this.printList.clear();","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"\\t%s\\n%s\\n\\t%s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" this.BORDER,","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" finalString,","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" this.BORDER);","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":36}},{"path":"src/main/java/Program.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"public class Program {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" private final String NAME \u003d \"Linus\";","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" private Boolean running;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" private Scanner userInputScanner;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" private PrintList printList;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" public Program() {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" this.running \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" this.userInputScanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" this.printList \u003d new PrintList();","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" public void start() {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" File f \u003d this.retrieveFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" taskList.loadList(f, printList);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" this.greeting();","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" while (this.running) {","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" String userInput \u003d this.userInputScanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" this.readUserInput(userInput);","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" public File retrieveFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" File file \u003d new File(\"./data/linus.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" File parentDir \u003d file.getParentFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":" parentDir.mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Created data folder as none was found\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"darryl-chan"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Created linus.txt to read files from\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Retrieving file...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"darryl-chan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Could not create file :/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"darryl-chan"},"content":" printList.print();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"darryl-chan"},"content":" return file;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"darryl-chan"},"content":" private void readUserInput(String input) {","lastModifiedDate":"2024-01-21"},{"lineNumber":53,"author":{"gitId":"darryl-chan"},"content":" String[] userInput \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"darryl-chan"},"content":" String command \u003d userInput[0].toLowerCase();","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"darryl-chan"},"content":" String taskNumber;","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"darryl-chan"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"darryl-chan"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"darryl-chan"},"content":" this.end();","lastModifiedDate":"2024-01-21"},{"lineNumber":61,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"darryl-chan"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"darryl-chan"},"content":" this.taskList.getList(this.printList);","lastModifiedDate":"2024-01-21"},{"lineNumber":64,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"darryl-chan"},"content":" case \"mark\": case \"unmark\": case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"darryl-chan"},"content":" if (userInput.length !\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"A number is required after writing this command\");","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"darryl-chan"},"content":" taskNumber \u003d userInput[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"darryl-chan"},"content":" this.taskList.markOrDelete(command, taskNumber, this.printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"darryl-chan"},"content":" case \"todo\": case \"deadline\": case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"darryl-chan"},"content":" if (userInput.length !\u003d 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Event description cannot be empty\");","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"darryl-chan"},"content":" String task \u003d userInput[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"darryl-chan"},"content":" this.taskList.addTask(command, task, this.printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"darryl-chan"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Sorry I don\u0027t recognize that command :/\");","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":84,"author":{"gitId":"darryl-chan"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"darryl-chan"},"content":" printList.add(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"darryl-chan"},"content":" } finally {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"darryl-chan"},"content":" this.printList.print();","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":91,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":92,"author":{"gitId":"darryl-chan"},"content":" private void greeting() {","lastModifiedDate":"2024-01-21"},{"lineNumber":93,"author":{"gitId":"darryl-chan"},"content":" String greeting \u003d String.format(\"Hello I\u0027m %s\", this.NAME);","lastModifiedDate":"2024-01-21"},{"lineNumber":94,"author":{"gitId":"darryl-chan"},"content":" String request \u003d \"What can I do for you?\";","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(greeting);","lastModifiedDate":"2024-01-21"},{"lineNumber":96,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(request);","lastModifiedDate":"2024-01-21"},{"lineNumber":97,"author":{"gitId":"darryl-chan"},"content":" this.printList.print();","lastModifiedDate":"2024-01-21"},{"lineNumber":98,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":99,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":100,"author":{"gitId":"darryl-chan"},"content":" private void end() {","lastModifiedDate":"2024-01-21"},{"lineNumber":101,"author":{"gitId":"darryl-chan"},"content":" File file \u003d new File(\"./data/linus.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"darryl-chan"},"content":" taskList.saveList(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(\"Saving file!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"darryl-chan"},"content":" this.printList.add(\"Goodbye. See you later!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"darryl-chan"},"content":" this.running \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":106,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":107,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":107}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" protected Boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" String isDoneSave \u003d (isDone ? \"1\" : \"0\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s;;%s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" isDoneSave, description);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"[%s] %s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":" this.getStatusIcon(),","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"darryl-chan"},"content":" this.description);","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":40}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" public TaskList() {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":" public void printListAddNewTask(Task task, PrintList printList) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Okay! added this task:\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Now you have %d tasks in the list.\", this.list.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":" public void addTask(String task, String fullDescription, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"darryl-chan"},"content":" switch (task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"darryl-chan"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"darryl-chan"},"content":" this.addTodo(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"darryl-chan"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"darryl-chan"},"content":" this.addDeadline(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"darryl-chan"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"darryl-chan"},"content":" this.addEvent(fullDescription, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"darryl-chan"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure your /from/to/by is correct\");","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"darryl-chan"},"content":" public void addTodo(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Todo cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new ToDo(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"darryl-chan"},"content":" public void addDeadline(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"darryl-chan"},"content":" String[] descriptionList \u003d description.split(\"/by\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Deadline cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"darryl-chan"},"content":" String taskDescription \u003d descriptionList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"darryl-chan"},"content":" String by \u003d descriptionList[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new Deadline(taskDescription, by);","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure /by is written properly\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"darryl-chan"},"content":" public void addEvent(String description, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"darryl-chan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Event cannot be empty!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"darryl-chan"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"darryl-chan"},"content":" String[] descriptionList \u003d description.split(\"/from\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"darryl-chan"},"content":" String[] fromAndToList \u003d descriptionList[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"darryl-chan"},"content":" String taskDescription \u003d descriptionList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"darryl-chan"},"content":" String from \u003d fromAndToList[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"darryl-chan"},"content":" String to \u003d fromAndToList[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d new Event(taskDescription, from, to);","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"darryl-chan"},"content":" this.list.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"darryl-chan"},"content":" this.printListAddNewTask(task, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"Make sure /from and /to is written properly\");","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"darryl-chan"},"content":" public void markOrDelete(String command, String taskNumberString, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"darryl-chan"},"content":" int taskNumber \u003d Integer.parseInt(taskNumberString);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"darryl-chan"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"darryl-chan"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"darryl-chan"},"content":" this.mark(taskNumber, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"darryl-chan"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"darryl-chan"},"content":" this.unmark(taskNumber, printList);","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"darryl-chan"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"darryl-chan"},"content":" this.delete(taskNumber, printList);","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"darryl-chan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"The number given is unrecognizable\");","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"darryl-chan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"darryl-chan"},"content":" throw new DukeCeption(\"The number is not in this list!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"darryl-chan"},"content":" public void delete(int taskNumber, PrintList printList) throws DukeCeption {","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"darryl-chan"},"content":" Task removedTask \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"darryl-chan"},"content":" this.list.remove(taskNumber - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"This task is now removed:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"darryl-chan"},"content":" printList.add(removedTask.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"Now you have %d tasks in the list.\", this.list.size()));","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"darryl-chan"},"content":" public void mark(int taskNumber, PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":118,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-21"},{"lineNumber":119,"author":{"gitId":"darryl-chan"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":120,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Great! I will mark this as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":122,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":123,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":124,"author":{"gitId":"darryl-chan"},"content":" public void unmark(int taskNumber, PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":125,"author":{"gitId":"darryl-chan"},"content":" Task task \u003d this.list.get(taskNumber - 1);","lastModifiedDate":"2024-01-21"},{"lineNumber":126,"author":{"gitId":"darryl-chan"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":127,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Alright! this task is now unmarked:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"darryl-chan"},"content":" printList.add(task.toString());","lastModifiedDate":"2024-01-21"},{"lineNumber":129,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":130,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":131,"author":{"gitId":"darryl-chan"},"content":" public void getList(PrintList printList) {","lastModifiedDate":"2024-01-21"},{"lineNumber":132,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":133,"author":{"gitId":"darryl-chan"},"content":" for (int i \u003d 0; i \u003c this.list.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":134,"author":{"gitId":"darryl-chan"},"content":" printList.add(String.format(\"%d. %s\",","lastModifiedDate":"2024-01-21"},{"lineNumber":135,"author":{"gitId":"darryl-chan"},"content":" i + 1,","lastModifiedDate":"2024-01-21"},{"lineNumber":136,"author":{"gitId":"darryl-chan"},"content":" this.list.get(i)));","lastModifiedDate":"2024-01-21"},{"lineNumber":137,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"darryl-chan"},"content":" public void textToTask(String line) {","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"darryl-chan"},"content":" String[] separate \u003d line.split(\";;\");","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"darryl-chan"},"content":" String taskType \u003d separate[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"darryl-chan"},"content":" boolean isDone \u003d separate[1].equals(\"1\") ? true : false;","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"darryl-chan"},"content":" String description \u003d separate[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"darryl-chan"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"darryl-chan"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"darryl-chan"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"darryl-chan"},"content":" task \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"darryl-chan"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"darryl-chan"},"content":" String by \u003d separate[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"darryl-chan"},"content":" task \u003d new Deadline(description, by, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"darryl-chan"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"darryl-chan"},"content":" String from \u003d separate[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"darryl-chan"},"content":" String to \u003d separate[4];","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"darryl-chan"},"content":" task \u003d new Event(description, from, to, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"darryl-chan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"darryl-chan"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"darryl-chan"},"content":" public void loadList(File file, PrintList printList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"darryl-chan"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"darryl-chan"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"darryl-chan"},"content":" this.textToTask(scanner.nextLine());","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"darryl-chan"},"content":" scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"File retrieved!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"darryl-chan"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"darryl-chan"},"content":" printList.add(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"darryl-chan"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"File is corrupted :/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"darryl-chan"},"content":" printList.add(\"Making new file instead\");","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"darryl-chan"},"content":" list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"darryl-chan"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"darryl-chan"},"content":" printList.print();","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"darryl-chan"},"content":" public void saveList(File file) {","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"darryl-chan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"darryl-chan"},"content":" FileWriter writer \u003d new FileWriter(file, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"darryl-chan"},"content":" for (Task line : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"darryl-chan"},"content":" writer.write(line.saveFormat() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"darryl-chan"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"darryl-chan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"darryl-chan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":194,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"darryl-chan"},"content":" } ","lastModifiedDate":"2024-01-21"},{"lineNumber":196,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"darryl-chan":197}},{"path":"src/main/java/Test.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"public class Test {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":" String dateString \u003d \"19/2/2020 1900\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" LocalDateTime parsedDateTime \u003d LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":" System.out.println(\"Parsed LocalDateTime: \" + parsedDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":12}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":" ","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":" public ToDo(String description){","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" public String saveFormat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s;;%s\",","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":" \"T\", super.saveFormat());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":" return String.format(\"%s%s\", \"[T]\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"darryl-chan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"todo return book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"deadline return book ","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"delete 5","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"darryl-chan":9}},{"path":"text-ui-test/runtest1.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"darryl-chan"},"content":"@ECHO OFF","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"darryl-chan"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"darryl-chan"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"darryl-chan"},"content":"REM delete output from previous run","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"darryl-chan"},"content":"del ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"darryl-chan"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"darryl-chan"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"darryl-chan"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"darryl-chan"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"darryl-chan"},"content":" exit /b 1","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"darryl-chan"},"content":")","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"darryl-chan"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"darryl-chan"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"darryl-chan"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"darryl-chan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"darryl-chan"},"content":"REM compare the output to the expected output","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"darryl-chan"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"darryl-chan":21}}] diff --git a/darryl-chan_ip_master/commits.json b/darryl-chan_ip_master/commits.json index 210b37e3..09bd7324 100644 --- a/darryl-chan_ip_master/commits.json +++ b/darryl-chan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"darryl-chan":[{"date":"2024-01-20","commitResults":[{"hash":"de298e871ba90627c52192be28a8436bdfe866b3","isMergeCommit":false,"messageTitle":"Testing git","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]},{"date":"2024-01-21","commitResults":[{"hash":"e795097a97d877663b4f819fa9db929917e47570","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"39dce874c5f851c0265732123d2a7c92b6a52ff7","isMergeCommit":false,"messageTitle":"Added greet and goodbye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"f66c3460363381f3eb2a745b29850baa022d004f","isMergeCommit":false,"messageTitle":"Added background program for chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"c72db1e402d09bb8c321d2fa686b1fc93595b05f","isMergeCommit":false,"messageTitle":"Added echoing","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":5}}},{"hash":"eacab1763ce769cd1f967658c45f8ee04f2b19b2","isMergeCommit":false,"messageTitle":"Added List and its functions","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":10}}},{"hash":"26d57bbd4acced734dd4eb2f2eabb8155f77c0d8","isMergeCommit":false,"messageTitle":"Added tasks and task markers","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}}]},{"date":"2024-01-22","commitResults":[{"hash":"dd5c42938b9b06f96d8337b499ba7299c68bb063","isMergeCommit":false,"messageTitle":"Added Todo, event, deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":6}}},{"hash":"cb74a9b52bf04bf4e70341f114f0cf517aa27ab6","isMergeCommit":false,"messageTitle":"Fixed display bugs for tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":11}}},{"hash":"61ba503d6c77369bf98c25480c9025bc50c9b532","isMergeCommit":false,"messageTitle":"Added I/O testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"bat":{"insertions":21,"deletions":0}}},{"hash":"e865f363b74afa641985fc0600b9f278a0e9fe96","isMergeCommit":false,"messageTitle":"Added some exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":30}}},{"hash":"4be75490af2aaa2083e44bd6cbf0de2678fe0b81","isMergeCommit":false,"messageTitle":"Added a delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}}]},{"date":"2024-01-25","commitResults":[{"hash":"3ac916c414a98a6ac001faffa5e13fd3eed3d76e","isMergeCommit":false,"messageTitle":"Updated Linus logo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}},{"hash":"195bb8f81e07ccaf98f265974de81e0705b88514","isMergeCommit":false,"messageTitle":"Added switch cases and refined error messeges","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":42}}},{"hash":"6869dcafc3058bd4dbc291f367ac56a5ba53ecf8","isMergeCommit":false,"messageTitle":"Updated I/O","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1}}},{"hash":"badd85553e6b65996274830f2f9d8ea743c8e9bf","isMergeCommit":false,"messageTitle":"combined mark and delete functions and cleaned code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":25}}},{"hash":"aeab9107c78ffe0344ae7376bccf391418e5ebe5","isMergeCommit":false,"messageTitle":"Added switch cases for event creation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":37}}},{"hash":"e06eb9901396af60372b7153e1ec52e259cb36c1","isMergeCommit":true,"messageTitle":"Merge pull request #1 from darryl-chan/better-user-input-function","messageBody":"Added switch cases and better exception handling","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"4eb14da504dd4416a7292f1a408012186e52f158","isMergeCommit":false,"messageTitle":"Added saving file function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":52,"deletions":2}}},{"hash":"4aeb47d118a547e59f8c347fcea012b701ec32cc","isMergeCommit":false,"messageTitle":"Added string split","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":4}}},{"hash":"4e314cffeca4e3433bee167857f6915caad34e29","isMergeCommit":false,"messageTitle":"Added load file function and dealing with corrupted file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":19,"deletions":22}}},{"hash":"740dc5a1a3f8c8e42f344c1fda6699c39b74e578","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"darryl-chan":{"java":470,"md":0,"fxml":0,"sh":0,"bat":21,"gradle":0,"txt":12}},"authorContributionVariance":{"darryl-chan":12857.5205},"authorDisplayNameMap":{"darryl-chan":"DARR..CHAN"}} +{"authorDailyContributionsMap":{"darryl-chan":[{"date":"2024-01-20","commitResults":[{"hash":"de298e871ba90627c52192be28a8436bdfe866b3","isMergeCommit":false,"messageTitle":"Testing git","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]},{"date":"2024-01-21","commitResults":[{"hash":"e795097a97d877663b4f819fa9db929917e47570","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"39dce874c5f851c0265732123d2a7c92b6a52ff7","isMergeCommit":false,"messageTitle":"Added greet and goodbye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"f66c3460363381f3eb2a745b29850baa022d004f","isMergeCommit":false,"messageTitle":"Added background program for chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"c72db1e402d09bb8c321d2fa686b1fc93595b05f","isMergeCommit":false,"messageTitle":"Added echoing","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":5}}},{"hash":"eacab1763ce769cd1f967658c45f8ee04f2b19b2","isMergeCommit":false,"messageTitle":"Added List and its functions","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":10}}},{"hash":"26d57bbd4acced734dd4eb2f2eabb8155f77c0d8","isMergeCommit":false,"messageTitle":"Added tasks and task markers","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}}]},{"date":"2024-01-22","commitResults":[{"hash":"dd5c42938b9b06f96d8337b499ba7299c68bb063","isMergeCommit":false,"messageTitle":"Added Todo, event, deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":6}}},{"hash":"cb74a9b52bf04bf4e70341f114f0cf517aa27ab6","isMergeCommit":false,"messageTitle":"Fixed display bugs for tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":11}}},{"hash":"61ba503d6c77369bf98c25480c9025bc50c9b532","isMergeCommit":false,"messageTitle":"Added I/O testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"bat":{"insertions":21,"deletions":0}}},{"hash":"e865f363b74afa641985fc0600b9f278a0e9fe96","isMergeCommit":false,"messageTitle":"Added some exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":30}}},{"hash":"4be75490af2aaa2083e44bd6cbf0de2678fe0b81","isMergeCommit":false,"messageTitle":"Added a delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}}]},{"date":"2024-01-25","commitResults":[{"hash":"3ac916c414a98a6ac001faffa5e13fd3eed3d76e","isMergeCommit":false,"messageTitle":"Updated Linus logo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}},{"hash":"195bb8f81e07ccaf98f265974de81e0705b88514","isMergeCommit":false,"messageTitle":"Added switch cases and refined error messeges","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":42}}},{"hash":"6869dcafc3058bd4dbc291f367ac56a5ba53ecf8","isMergeCommit":false,"messageTitle":"Updated I/O","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1}}},{"hash":"badd85553e6b65996274830f2f9d8ea743c8e9bf","isMergeCommit":false,"messageTitle":"combined mark and delete functions and cleaned code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":25}}},{"hash":"aeab9107c78ffe0344ae7376bccf391418e5ebe5","isMergeCommit":false,"messageTitle":"Added switch cases for event creation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":37}}},{"hash":"e06eb9901396af60372b7153e1ec52e259cb36c1","isMergeCommit":true,"messageTitle":"Merge pull request #1 from darryl-chan/better-user-input-function","messageBody":"Added switch cases and better exception handling","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"4eb14da504dd4416a7292f1a408012186e52f158","isMergeCommit":false,"messageTitle":"Added saving file function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":52,"deletions":2}}},{"hash":"4aeb47d118a547e59f8c347fcea012b701ec32cc","isMergeCommit":false,"messageTitle":"Added string split","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":4}}},{"hash":"4e314cffeca4e3433bee167857f6915caad34e29","isMergeCommit":false,"messageTitle":"Added load file function and dealing with corrupted file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":19,"deletions":22}}},{"hash":"740dc5a1a3f8c8e42f344c1fda6699c39b74e578","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"72b0ce977ee4a5ac1fd3455cfe637e275763f7ab","isMergeCommit":false,"messageTitle":"Added date time functions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":44,"deletions":15}}},{"hash":"f641ec2f7f1d0d6b6c9f511a969338fd2052316e","isMergeCommit":false,"messageTitle":"added save format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":2}}},{"hash":"ec67f7f423e8aa0986e775fca05d8178c9a068c9","isMergeCommit":false,"messageTitle":"Created save file format in tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":4}}},{"hash":"eace114416d77b1afb8f4ef2ef5325b10ace771f","isMergeCommit":false,"messageTitle":"Edited saving file format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":27,"deletions":26}}},{"hash":"1c9c2efb8e1a3d8837587296357ff2799114bc3e","isMergeCommit":false,"messageTitle":"Moved duplicated codes in deadline and event to datetask","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":13,"deletions":20}}},{"hash":"3d26ac16f0b501e49ff22a86cb7edcc1bb8b33ca","isMergeCommit":false,"messageTitle":"Changed the format of how the dates printed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"7c9b05be01b8380fa76b9a48d7f07365fa6e164d","isMergeCommit":false,"messageTitle":"edited linus.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":3}}},{"hash":"f4ad884ddc96eb664632f16964dc558becf993cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"darryl-chan":{"java":516,"md":0,"fxml":0,"sh":0,"bat":21,"gradle":0,"txt":17}},"authorContributionVariance":{"darryl-chan":19464.889},"authorDisplayNameMap":{"darryl-chan":"DARR..CHAN"}} diff --git a/dillontkh_ip_master/authorship.json b/dillontkh_ip_master/authorship.json index 77b4e037..4032b765 100644 --- a/dillontkh_ip_master/authorship.json +++ b/dillontkh_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" ui.sendGoodbyeMessage();","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":" System.exit(0);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":7}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" protected static final LocalTime DEFAULT_TIME \u003d LocalTime.of(0, 0);","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter SAVE_FORMAT \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter DATE_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter DATE_OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter TIME_FORMAT \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" protected static final String USAGE_HINT \u003d \"Usage: deadline [task description] /by [d/m/yyyy] {hh:mm 24hr format}\";","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" public LocalDateTime getDeadline() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" return this.deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" public String getDeadlineString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" return this.deadline.format(DATE_OUTPUT_FORMAT) + \" \" + this.deadline.format(TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.getDeadlineString() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"dillontkh":33}},{"path":"src/main/java/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" public DeadlineCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" int byIndex \u003d this.argsList.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" if (this.argsList.size() \u003d\u003d 1 || byIndex \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Deadline description cannot be empty!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" + Deadline.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" if (byIndex \u003d\u003d this.argsList.size() - 1 || byIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please input a deadline!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" + Deadline.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" StringBuilder taskDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d 1; i \u003c byIndex; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d byIndex - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(this.argsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(this.argsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" StringBuilder deadlineString \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d byIndex + 1; i \u003c this.argsList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d this.argsList.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" deadlineString.append(this.argsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" deadlineString.append(this.argsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" LocalDateTime deadline \u003d Task.getLocalDateTimeFromString(deadlineString.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" Deadline task \u003d new Deadline(taskDescription.toString(), deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" String message \u003d \"Alright, added:\\n\" + \"\\t\" + task + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" message +\u003d tasks.summary();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Unrecognized deadline format\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" + Deadline.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":57}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" public DeleteCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" // This means that the user has not supplied any number with the command","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" if (this.argsList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter the task you wish to delete!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" + \"Usage: delete [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" int taskIndex \u003d Integer.parseInt(this.argsList.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" String message \u003d \"Alright, the following task has been removed:\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" + \"\\t\" + tasks.remove(taskIndex - 1).toString() + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" message +\u003d tasks.summary();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter a number for the delete command.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" + \"Usage: delete [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Are you sure that\u0027s a valid task number? (Tip: use \u0027list\u0027 to check the \"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" + \"number of your task!)\\n\" + \"Usage: delete [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":36}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" protected static final LocalTime DEFAULT_TIME \u003d LocalTime.of(0, 0);","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter SAVE_FORMAT \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter DATE_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter DATE_OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter TIME_FORMAT \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" protected static final String USAGE_HINT \u003d \"Usage: event [task description] /from [d/m/yyyy] {hh:mm 24hr format} \"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" + \"/to [d/m/yyyy] {hh:mm 24hr format}\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" * Creates new Event with specified description, start, and end time.","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" * @throws NollidException if end time is before start time.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" if (from.isAfter(to)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Start time and date must be before end time and date.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" return this.from;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" return this.to;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" public String getFromString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" return this.from.format(DATE_OUTPUT_FORMAT) + \" \" + this.from.format(TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" public String getToString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" return this.to.format(DATE_OUTPUT_FORMAT) + \" \" + this.to.format(TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.getFromString() + \" to: \" + this.getToString() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"dillontkh":52}},{"path":"src/main/java/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" public EventCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" int fromIndex \u003d this.argsList.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" int toIndex \u003d this.argsList.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" if (this.argsList.size() \u003d\u003d 1 || fromIndex \u003d\u003d 1 || toIndex \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Event description cannot be empty!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" + Event.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" if (fromIndex \u003d\u003d -1 || fromIndex \u003d\u003d this.argsList.size() - 1 || fromIndex \u003d\u003d toIndex - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter the start of your event!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" + Event.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" if (toIndex \u003d\u003d -1 || toIndex \u003d\u003d this.argsList.size() - 1 || toIndex \u003d\u003d fromIndex - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter the end of your event!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" + Event.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" StringBuilder taskDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" StringBuilder from \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" StringBuilder to \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" // Deal with the user sending \"/from\" before \"/to\" or vice versa","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" if (fromIndex \u003c toIndex) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" extractEventInfo(this.argsList, fromIndex, toIndex, taskDescription, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" extractEventInfo(this.argsList, toIndex, fromIndex, taskDescription, to, from);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" LocalDateTime fromDateTime \u003d Task.getLocalDateTimeFromString(from.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" LocalDateTime toDateTime \u003d Task.getLocalDateTimeFromString(to.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" Event task \u003d new Event(taskDescription.toString(), fromDateTime, toDateTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" String message \u003d \"Alright, added:\\n\" + \"\\t\" + task + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" message +\u003d tasks.summary();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Unrecognized start/end format\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" + Event.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"dillontkh"},"content":" * Saves the appropriate data in the supplied StringBuilders, given the index of the \u0027/from\u0027 and \u0027/to\u0027 arguments","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"dillontkh"},"content":" * in the user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"dillontkh"},"content":" private void extractEventInfo(ArrayList\u003cString\u003e userInputAsList, int fromIndex, int toIndex,","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"dillontkh"},"content":" StringBuilder taskDescription, StringBuilder from, StringBuilder to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d 1; i \u003c fromIndex; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d fromIndex - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(userInputAsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(userInputAsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d fromIndex + 1; i \u003c toIndex; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d toIndex - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"dillontkh"},"content":" from.append(userInputAsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"dillontkh"},"content":" from.append(userInputAsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d toIndex + 1; i \u003c userInputAsList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d userInputAsList.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"dillontkh"},"content":" to.append(userInputAsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"dillontkh"},"content":" to.append(userInputAsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":89}},{"path":"src/main/java/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" String message \u003d \"Available commands:\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":" + \"list \\t\\t- Lists all your tasks\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" + \"todo \\t\\t- Create a new todo task.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" + \"deadline \\t- Create a new task with a deadline.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" + \"event \\t\\t- Create a new task with a starting and ending time.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" + \"mark \\t\\t- Mark a task as completed.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" + \"unmark \\t\\t- Mark a task as not completed.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" + \"delete \\t\\t- Delete a task.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":15}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":" public InvalidCommandException(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":5}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" // List items in to-do list","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":" StringBuilder response \u003d new StringBuilder(\"Here are the tasks in your list: \\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" response \u003d new StringBuilder(\"Your list is empty!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" if (i \u003c tasks.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" response.append(i + 1).append(\".\").append(tasks.get(i).toString()).append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" response.append(i + 1).append(\".\").append(tasks.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(response.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":19}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" public MarkCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" // This means that the user has not supplied any number with the command","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" if (argsList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter the task you wish to mark as done!\\n\" + \"Usage: mark [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" int taskIndex \u003d Integer.parseInt(argsList.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" tasks.setDone(taskIndex, true);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" String response \u003d \"Good job! I\u0027ve marked this task as done: \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" + \"\\t \" + tasks.get(taskIndex - 1).toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(response);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter a number for the mark command.\\n\" + \"Usage: mark [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Are you sure that\u0027s a valid task number? (Tip: use \u0027list\u0027 to check the \"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" + \"number of your task!)\\n\" + \"Usage: mark [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":33}},{"path":"src/main/java/Nollid.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"public class Nollid {","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" public Nollid(Path filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" this.tasks \u003d new TaskList(this.storage.load());","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" new Nollid(Storage.DEFAULT_FILEPATH).run();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" this.ui.sendWelcomeMessage();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" while (true) {","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" String fullCommand \u003d this.ui.readCommand(scanner);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" Command command;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" this.ui.sendMessage(\"Invalid command! Type \u0027help\u0027 to view a list of commands.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" continue;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" command.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" } catch (NollidException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" this.ui.sendMessage(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":2,"dillontkh":38}},{"path":"src/main/java/NollidException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"public class NollidException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":" public NollidException(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":5}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":" public static Command parse(String fullCommand) throws InvalidCommandException {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" if (fullCommand.isBlank()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" throw new InvalidCommandException(\"Command is blank.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" // Split user input into individual words","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" // e.g. \"i am user input\" -\u003e [\"i\", \"am\", \"user\", \"input\"]","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" ArrayList\u003cString\u003e argsList \u003d new ArrayList\u003c\u003e(Arrays.asList(fullCommand.split(\" \")));","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" String commandKeyword \u003d argsList.get(0);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" if (commandKeyword.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" return new MarkCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" return new UnmarkCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" return new TodoCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" return new DeadlineCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" return new EventCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" return new DeleteCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"help\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" return new HelpCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" throw new InvalidCommandException(\"No valid command detected.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dillontkh":36}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" * Unicode character U+2605 unlikely to be entered by user.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" protected static final String DELIMITER \u003d \"\\u2605\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" protected static final Path DEFAULT_FILEPATH \u003d Paths.get(\".\", \"data\", \"nollid.data\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" private final Path filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" public Storage(Path filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" * Returns a List of Tasks from the Storage\u0027s file path.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" if (Files.notExists(this.filePath)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" if (Files.notExists(this.filePath.getParent())) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" Files.createDirectories(this.filePath.getParent());","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" Files.createFile(this.filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" for (String line : Files.readAllLines(this.filePath)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" String[] lineArray \u003d line.split(DELIMITER);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" Task taskToAdd;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" String taskDescription;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" taskDescription \u003d lineArray[2];","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" // Line that doesn\u0027t follow the format","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" continue;","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" switch (lineArray[0]) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" taskToAdd \u003d new ToDo(taskDescription);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" String deadlineString \u003d lineArray[3];","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" LocalDateTime deadline \u003d Task.getLocalDateTimeFromString(deadlineString);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":" taskToAdd \u003d new Deadline(taskDescription, deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"dillontkh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"dillontkh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"dillontkh"},"content":" continue;","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"dillontkh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"dillontkh"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"dillontkh"},"content":" String from \u003d lineArray[3];","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"dillontkh"},"content":" String to \u003d lineArray[4];","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"dillontkh"},"content":" LocalDateTime fromDateTime \u003d Task.getLocalDateTimeFromString(from);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"dillontkh"},"content":" LocalDateTime toDateTime \u003d Task.getLocalDateTimeFromString(to);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"dillontkh"},"content":" taskToAdd \u003d new Event(taskDescription, fromDateTime, toDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"dillontkh"},"content":" } catch (DateTimeParseException | NollidException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"dillontkh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"dillontkh"},"content":" continue;","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"dillontkh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"dillontkh"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"dillontkh"},"content":" // Unknown first character, go to next line","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"dillontkh"},"content":" continue;","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"dillontkh"},"content":" String doneFlag \u003d lineArray[1];","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"dillontkh"},"content":" if (doneFlag.equals(\"1\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"dillontkh"},"content":" taskToAdd.setDone(true);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"dillontkh"},"content":" taskList.add(taskToAdd);","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"dillontkh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"dillontkh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"dillontkh"},"content":" return taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"dillontkh"},"content":" * Updates the storage on disk based on the current state of the given task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"dillontkh"},"content":" public void update(TaskList taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"dillontkh"},"content":" boolean isFirstLine \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"dillontkh"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"dillontkh"},"content":" Files.write(this.filePath, \"\".getBytes());","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"dillontkh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"dillontkh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"dillontkh"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"dillontkh"},"content":" String lineToWrite \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"dillontkh"},"content":" if (t instanceof ToDo) {","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"dillontkh"},"content":" lineToWrite \u003d \"T\" + DELIMITER + t.getStatusNumber() + DELIMITER + t.getDescription() + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"dillontkh"},"content":" } else if (t instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"dillontkh"},"content":" Deadline deadline \u003d (Deadline) t;","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"dillontkh"},"content":" lineToWrite \u003d \"D\" + DELIMITER + deadline.getStatusNumber() + DELIMITER + deadline.getDescription()","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"dillontkh"},"content":" + DELIMITER + deadline.getDeadline().format(Deadline.SAVE_FORMAT) + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"dillontkh"},"content":" } else if (t instanceof Event) {","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"dillontkh"},"content":" Event event \u003d (Event) t;","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"dillontkh"},"content":" lineToWrite \u003d \"E\" + DELIMITER + event.getStatusNumber() + DELIMITER + event.getDescription()","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"dillontkh"},"content":" + DELIMITER + event.getFrom().format(Event.SAVE_FORMAT)","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"dillontkh"},"content":" + DELIMITER + event.getTo().format(Event.SAVE_FORMAT) + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"dillontkh"},"content":" if (isFirstLine) {","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"dillontkh"},"content":" Files.write(this.filePath, lineToWrite.getBytes());","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"dillontkh"},"content":" isFirstLine \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"dillontkh"},"content":" Files.write(this.filePath, lineToWrite.getBytes(), StandardOpenOption.APPEND);","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"dillontkh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"dillontkh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dillontkh":134}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"// Adapted from partial solution provided on CS2103 website","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"public class Task {","lastModifiedDate":"2024-01-19"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" protected String description;","lastModifiedDate":"2024-01-19"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-19"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-19"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-19"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" public String getStatusNumber() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" return (this.isDone ? \"1\" : \"0\"); // mark done task with X","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" public void setDone(boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" return this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" * Returns a LocalDateTime object from a date (and time) string.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" * @throws DateTimeParseException if unable to retrieve a date (and time) from the string.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" public static LocalDateTime getLocalDateTimeFromString(String deadlineString) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" ArrayList\u003cString\u003e deadlineList \u003d new ArrayList\u003c\u003e(Arrays.asList(deadlineString.split(\" \")));","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" LocalDate deadlineDate \u003d LocalDate.parse(deadlineList.get(0), Deadline.DATE_INPUT_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" // If only date provided, use the default time","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" if (deadlineList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" return LocalDateTime.of(deadlineDate, Deadline.DEFAULT_TIME);","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" LocalTime deadlineTime \u003d LocalTime.parse(deadlineList.get(1), Deadline.TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" return LocalDateTime.of(deadlineDate, deadlineTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-19"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"dillontkh":58}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" return taskList.isEmpty();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" public void add(Task taskToAdd) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" this.taskList.add(taskToAdd);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" return this.taskList.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" public Task remove(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" return this.taskList.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" * Marks the task with the given index as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" public void setDone(int taskIndex, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" this.taskList.get(taskIndex - 1).setDone(isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" return taskList.iterator();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" public String summary() {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" int listSize \u003d this.taskList.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" // \"task\" for singular, \"tasks\" for plural","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" if (listSize \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" return \"You now have \" + listSize + \" task in your list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" return \"You now have \" + listSize + \" tasks in your list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dillontkh":57}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"dillontkh":10}},{"path":"src/main/java/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" public TodoCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" if (argsList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Todo description cannot be empty!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" + \"Usage: todo [task description]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" StringBuilder taskDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d 1; i \u003c argsList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d argsList.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(argsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(argsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" ToDo task \u003d new ToDo(taskDescription.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" String message \u003d \"Alright, added:\\n\" + \"\\t\" + task + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" message +\u003d tasks.summary();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":35}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" // Default length of line to be printed","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":" private static final int LINE_LENGTH \u003d 30;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" * Sends a welcome message upon starting the bot, with horizontal lines","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" * printed for visual separation.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" public void sendWelcomeMessage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" String welcomeMessage \u003d \"Hello! I\u0027m Nollid.\\n\" + \"What can I do for you?\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" sendMessage(welcomeMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" * Formats message that the bot will send.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" * @param message The message for the bot to send.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" public void sendMessage(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" printHorizontalLine(LINE_LENGTH);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" printHorizontalLine(LINE_LENGTH);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" * Sends a goodbye message upon exiting the bot, with horizontal lines","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" * printed for visual separation.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" public void sendGoodbyeMessage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" String goodbyeMessage \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" sendMessage(goodbyeMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" * Prints a horizontal line with unicode character U+2500.","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" * @param length Length of line in characters.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" public void printHorizontalLine(int length) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d 0; i \u003c length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" System.out.print(\"─\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" * Returns a String of the user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" public String readCommand(Scanner scanner) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" return scanner.nextLine().strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dillontkh":54}},{"path":"src/main/java/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" public UnmarkCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" // This means that the user has not supplied any number with the command","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" if (this.argsList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter the task you wish to mark as not done!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" + \"Usage: unmark [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" int taskIndex \u003d Integer.parseInt(this.argsList.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" tasks.setDone(taskIndex, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" String response \u003d \"Alright, I\u0027ve marked this task as not done yet: \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" + \"\\t \" + tasks.get(taskIndex - 1).toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(response);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter a number for the unmark command.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" + \"Usage: unmark [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Are you sure that\u0027s a valid task number? (Tip: use \u0027list\u0027 to check the \"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" + \"number of your task!)\\n\" + \"Usage: unmark [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":35}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"mark","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"mark a","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"unmark","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"unmark a","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"todo","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"todo test todo","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"deadline test deadline","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":"deadline test deadline /by","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"deadline test deadline /by now","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"deadline test deadline /by 23/6/2022 23:33","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":"event","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"event test event","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":"event test event /from now","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"event test event /from now /to later","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":"event test event /from 12/12/1212 12:34 /to 2/2/2222 11:11","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"mark 2","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":"mark 3","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":"unmark 2","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":"unmark 3","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":"help","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":"bye","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"dillontkh":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":"-"},"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":"dillontkh"},"content":"java -classpath ..\\bin Nollid \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-20"},{"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,"dillontkh":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":"dillontkh"},"content":"java -classpath ../bin Nollid \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-20"},{"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":"dillontkh"},"content":"#cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-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":"dillontkh"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-20"},{"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":{"-":34,"dillontkh":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":"dillontkh"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-30"},{"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":"dillontkh"},"content":" mainClass.set(\"nollid.Nollid\")","lastModifiedDate":"2024-01-30"},{"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,"dillontkh":2}},{"path":"src/main/java/nollid/Nollid.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" * Nollid class represents the main application class for Nollid task manager.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" * It initializes the UI, Storage, and TaskList, and runs the main loop to process user commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"public class Nollid {","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" * Constructs a Nollid object with the specified file path for data storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" * @param filePath The path to the file used for data storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" public Nollid(Path filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" this.tasks \u003d new TaskList(this.storage.load());","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" new Nollid(Storage.DEFAULT_FILEPATH).run();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" * Runs the main loop to process user commands and interact with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" this.ui.sendWelcomeMessage();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" while (true) {","lastModifiedDate":"2024-01-19"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" String fullCommand \u003d this.ui.readCommand(scanner);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" Command command;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" this.ui.sendMessage(\"Invalid command! Type \u0027help\u0027 to view a list of commands.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" continue;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" command.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" } catch (NollidException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" this.ui.sendMessage(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":2,"dillontkh":56}},{"path":"src/main/java/nollid/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.ByeCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.DeadlineCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.DeleteCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.EventCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.HelpCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.ListCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.MarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.TodoCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":"import nollid.commands.UnmarkCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" * Parser class provides a static method to parse user input and return the corresponding Command object.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" * Parses the full user command and returns the appropriate Command object.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" * @param fullCommand The full user command input.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" * @return The corresponding Command object based on the parsed input.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" * @throws InvalidCommandException If the user command is invalid or not recognized.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" public static Command parse(String fullCommand) throws InvalidCommandException {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" if (fullCommand.isBlank()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" throw new InvalidCommandException(\"Command is blank.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" // Split user input into individual words","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" // e.g. \"i am user input\" -\u003e [\"i\", \"am\", \"user\", \"input\"]","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" ArrayList\u003cString\u003e argsList \u003d new ArrayList\u003c\u003e(Arrays.asList(fullCommand.split(\" \")));","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" String commandKeyword \u003d argsList.get(0);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" if (commandKeyword.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" return new MarkCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" return new UnmarkCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" return new TodoCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" return new DeadlineCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" return new EventCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" return new DeleteCommand(argsList);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" } else if (commandKeyword.equalsIgnoreCase(\"help\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" return new HelpCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" throw new InvalidCommandException(\"No valid command detected.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dillontkh":60}},{"path":"src/main/java/nollid/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"import nollid.tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"import nollid.tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":"import nollid.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"import nollid.tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" * Storage class handles loading and updating tasks from/to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" * Unicode character U+2605 unlikely to be entered by user.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" protected static final String DELIMITER \u003d \"\\u2605\";","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" protected static final Path DEFAULT_FILEPATH \u003d Paths.get(\".\", \"data\", \"nollid.data\");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" private final Path filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" public Storage(Path filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" * Returns a List of Tasks from the nollid.Storage\u0027s file path.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" if (Files.notExists(this.filePath)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" if (Files.notExists(this.filePath.getParent())) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" Files.createDirectories(this.filePath.getParent());","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" Files.createFile(this.filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" for (String line : Files.readAllLines(this.filePath)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" String[] lineArray \u003d line.split(DELIMITER);","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" Task taskToAdd;","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" String taskDescription;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" taskDescription \u003d lineArray[2];","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" // Line that doesn\u0027t follow the format","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":" continue;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"dillontkh"},"content":" switch (lineArray[0]) {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"dillontkh"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"dillontkh"},"content":" taskToAdd \u003d new ToDo(taskDescription);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"dillontkh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"dillontkh"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"dillontkh"},"content":" String deadlineString \u003d lineArray[3];","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"dillontkh"},"content":" LocalDateTime deadline \u003d Task.getLocalDateTimeFromString(deadlineString);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"dillontkh"},"content":" taskToAdd \u003d new Deadline(taskDescription, deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"dillontkh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"dillontkh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"dillontkh"},"content":" continue;","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"dillontkh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"dillontkh"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"dillontkh"},"content":" String from \u003d lineArray[3];","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"dillontkh"},"content":" String to \u003d lineArray[4];","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"dillontkh"},"content":" LocalDateTime fromDateTime \u003d Task.getLocalDateTimeFromString(from);","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"dillontkh"},"content":" LocalDateTime toDateTime \u003d Task.getLocalDateTimeFromString(to);","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"dillontkh"},"content":" taskToAdd \u003d new Event(taskDescription, fromDateTime, toDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"dillontkh"},"content":" } catch (DateTimeParseException | NollidException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"dillontkh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"dillontkh"},"content":" continue;","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"dillontkh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"dillontkh"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"dillontkh"},"content":" // Unknown first character, go to next line","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"dillontkh"},"content":" continue;","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"dillontkh"},"content":" String doneFlag \u003d lineArray[1];","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"dillontkh"},"content":" if (doneFlag.equals(\"1\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"dillontkh"},"content":" taskToAdd.setDone(true);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"dillontkh"},"content":" taskList.add(taskToAdd);","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"dillontkh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"dillontkh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"dillontkh"},"content":" return taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"dillontkh"},"content":" * Updates the storage on disk based on the current state of the given task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"dillontkh"},"content":" public void update(TaskList taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"dillontkh"},"content":" boolean isFirstLine \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"dillontkh"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"dillontkh"},"content":" Files.write(this.filePath, \"\".getBytes());","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"dillontkh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"dillontkh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"dillontkh"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"dillontkh"},"content":" String lineToWrite \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"dillontkh"},"content":" if (t instanceof ToDo) {","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"dillontkh"},"content":" lineToWrite \u003d \"T\" + DELIMITER + t.getStatusNumber() + DELIMITER + t.getDescription() + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"dillontkh"},"content":" } else if (t instanceof Deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"dillontkh"},"content":" Deadline deadline \u003d (Deadline) t;","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"dillontkh"},"content":" lineToWrite \u003d \"D\" + DELIMITER + deadline.getStatusNumber() + DELIMITER + deadline.getDescription()","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"dillontkh"},"content":" + DELIMITER + deadline.getDeadline().format(Deadline.SAVE_FORMAT) + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"dillontkh"},"content":" } else if (t instanceof Event) {","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"dillontkh"},"content":" Event event \u003d (Event) t;","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"dillontkh"},"content":" lineToWrite \u003d \"E\" + DELIMITER + event.getStatusNumber() + DELIMITER + event.getDescription()","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"dillontkh"},"content":" + DELIMITER + event.getFrom().format(Event.SAVE_FORMAT)","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"dillontkh"},"content":" + DELIMITER + event.getTo().format(Event.SAVE_FORMAT) + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"dillontkh"},"content":" if (isFirstLine) {","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"dillontkh"},"content":" Files.write(this.filePath, lineToWrite.getBytes());","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"dillontkh"},"content":" isFirstLine \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"dillontkh"},"content":" Files.write(this.filePath, lineToWrite.getBytes(), StandardOpenOption.APPEND);","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"dillontkh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"dillontkh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dillontkh":145}},{"path":"src/main/java/nollid/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import nollid.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" * TaskList class represents a list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" return taskList.isEmpty();","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" public void add(Task taskToAdd) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" this.taskList.add(taskToAdd);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" return this.taskList.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" public Task remove(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" return this.taskList.remove(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" * Marks the task with the given index as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" public void setDone(int taskIndex, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" this.taskList.get(taskIndex - 1).setDone(isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" return taskList.iterator();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" * Provides a summary of the number of tasks in the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" * @return A summary string indicating the number of tasks in the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"dillontkh"},"content":" public String summary() {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"dillontkh"},"content":" int listSize \u003d this.taskList.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"dillontkh"},"content":" // \"task\" for singular, \"tasks\" for plural","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"dillontkh"},"content":" if (listSize \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"dillontkh"},"content":" return \"You now have \" + listSize + \" task in your list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"dillontkh"},"content":" return \"You now have \" + listSize + \" tasks in your list.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dillontkh":69}},{"path":"src/main/java/nollid/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" * Ui class handles user interface-related functionality, such as sending messages and reading user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" // Default length of line to be printed","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" private static final int LINE_LENGTH \u003d 30;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" * Sends a welcome message upon starting the bot, with horizontal lines","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" * printed for visual separation.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" public void sendWelcomeMessage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" String welcomeMessage \u003d \"Hello! I\u0027m Nollid.\\n\" + \"What can I do for you?\";","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" sendMessage(welcomeMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" * Formats message that the bot will send.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" * @param message The message for the bot to send.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" public void sendMessage(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" printHorizontalLine(LINE_LENGTH);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" printHorizontalLine(LINE_LENGTH);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" * Sends a goodbye message upon exiting the bot, with horizontal lines","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" * printed for visual separation.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" public void sendGoodbyeMessage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" String goodbyeMessage \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" sendMessage(goodbyeMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" * Prints a horizontal line with unicode character U+2500.","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" * @param length Length of line in characters.","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" public void printHorizontalLine(int length) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d 0; i \u003c length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" System.out.print(\"─\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" * Returns a String of the user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" public String readCommand(Scanner scanner) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" return scanner.nextLine().strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"dillontkh":59}},{"path":"src/main/java/nollid/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import nollid.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import nollid.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import nollid.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" * ByeCommand class represents a command for exiting the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" * It extends the Command class and implements the execute method to perform the exit logic.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" ui.sendGoodbyeMessage();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" System.exit(0);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":17}},{"path":"src/main/java/nollid/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import nollid.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import nollid.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import nollid.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" * Command class is an abstract class representing an executable command.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" * It defines the execute method that subclasses must implement to perform specific command logic.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"dillontkh":15}},{"path":"src/main/java/nollid/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import nollid.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import nollid.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"import nollid.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"import nollid.tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":"import nollid.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" * DeadlineCommand class represents a command for adding a Deadline task.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" * It extends the Command class and implements the execute method to perform the command logic.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" public DeadlineCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" int byIndex \u003d this.argsList.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" if (this.argsList.size() \u003d\u003d 1 || byIndex \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Deadline description cannot be empty!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" + Deadline.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" if (byIndex \u003d\u003d this.argsList.size() - 1 || byIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please input a deadline!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" + Deadline.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" StringBuilder taskDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d 1; i \u003c byIndex; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d byIndex - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(this.argsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(this.argsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" StringBuilder deadlineString \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d byIndex + 1; i \u003c this.argsList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d this.argsList.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" deadlineString.append(this.argsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" deadlineString.append(this.argsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" LocalDateTime deadline \u003d Task.getLocalDateTimeFromString(deadlineString.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":" Deadline task \u003d new Deadline(taskDescription.toString(), deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"dillontkh"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"dillontkh"},"content":" String message \u003d \"Alright, added:\\n\" + \"\\t\" + task + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"dillontkh"},"content":" message +\u003d tasks.summary();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"dillontkh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Unrecognized deadline format\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"dillontkh"},"content":" + Deadline.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":70}},{"path":"src/main/java/nollid/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import nollid.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import nollid.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import nollid.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" * DeleteCommand class represents a command for deleting a task.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" * It extends the Command class and implements the execute method to perform the command logic.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" public DeleteCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" // This means that the user has not supplied any number with the command","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" if (this.argsList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter the task you wish to delete!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" + \"Usage: delete [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" int taskIndex \u003d Integer.parseInt(this.argsList.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" String message \u003d \"Alright, the following task has been removed:\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" + \"\\t\" + tasks.remove(taskIndex - 1).toString() + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" message +\u003d tasks.summary();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter a number for the delete command.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" + \"Usage: delete [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Are you sure that\u0027s a valid task number? (Tip: use \u0027list\u0027 to check the \"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" + \"number of your task!)\\n\" + \"Usage: delete [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":47}},{"path":"src/main/java/nollid/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import nollid.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import nollid.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"import nollid.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"import nollid.tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":"import nollid.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" * EventCommand class represents a command for adding an Event task.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" * It extends the Command class and implements the execute method to perform the command logic.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" public EventCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" int fromIndex \u003d this.argsList.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" int toIndex \u003d this.argsList.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" if (this.argsList.size() \u003d\u003d 1 || fromIndex \u003d\u003d 1 || toIndex \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Event description cannot be empty!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" + Event.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" if (fromIndex \u003d\u003d -1 || fromIndex \u003d\u003d this.argsList.size() - 1 || fromIndex \u003d\u003d toIndex - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter the start of your event!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" + Event.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" if (toIndex \u003d\u003d -1 || toIndex \u003d\u003d this.argsList.size() - 1 || toIndex \u003d\u003d fromIndex - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter the end of your event!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" + Event.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" StringBuilder taskDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" StringBuilder from \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" StringBuilder to \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" // Deal with the user sending \"/from\" before \"/to\" or vice versa","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" if (fromIndex \u003c toIndex) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" extractEventInfo(this.argsList, fromIndex, toIndex, taskDescription, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" extractEventInfo(this.argsList, toIndex, fromIndex, taskDescription, to, from);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" LocalDateTime fromDateTime \u003d Task.getLocalDateTimeFromString(from.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":" LocalDateTime toDateTime \u003d Task.getLocalDateTimeFromString(to.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"dillontkh"},"content":" Event task \u003d new Event(taskDescription.toString(), fromDateTime, toDateTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"dillontkh"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"dillontkh"},"content":" String message \u003d \"Alright, added:\\n\" + \"\\t\" + task + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"dillontkh"},"content":" message +\u003d tasks.summary();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"dillontkh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Unrecognized start/end format\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"dillontkh"},"content":" + Event.USAGE_HINT);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"dillontkh"},"content":" * Saves the appropriate data in the supplied StringBuilders, given the index of the \u0027/from\u0027 and \u0027/to\u0027 arguments","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"dillontkh"},"content":" * in the user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"dillontkh"},"content":" private void extractEventInfo(ArrayList\u003cString\u003e userInputAsList, int fromIndex, int toIndex,","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"dillontkh"},"content":" StringBuilder taskDescription, StringBuilder from, StringBuilder to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d 1; i \u003c fromIndex; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d fromIndex - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(userInputAsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(userInputAsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d fromIndex + 1; i \u003c toIndex; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d toIndex - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"dillontkh"},"content":" from.append(userInputAsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"dillontkh"},"content":" from.append(userInputAsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d toIndex + 1; i \u003c userInputAsList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d userInputAsList.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"dillontkh"},"content":" to.append(userInputAsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"dillontkh"},"content":" to.append(userInputAsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":102}},{"path":"src/main/java/nollid/commands/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import nollid.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import nollid.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import nollid.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" * HelpCommand class represents a command for displaying a help message with available commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" * It extends the Command class and implements the execute method to perform the command logic.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" String message \u003d \"Available commands:\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" + \"list \\t\\t- Lists all your tasks\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" + \"todo \\t\\t- Create a new todo task.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" + \"deadline \\t- Create a new task with a deadline.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" + \"event \\t\\t- Create a new task with a starting and ending time.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" + \"mark \\t\\t- Mark a task as completed.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" + \"unmark \\t\\t- Mark a task as not completed.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" + \"delete \\t\\t- Delete a task.\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":25}},{"path":"src/main/java/nollid/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import nollid.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import nollid.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import nollid.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" * ListCommand class represents a command for listing all tasks in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" * It extends the Command class and implements the execute method to perform the command logic.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" // List items in to-do list","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" StringBuilder response \u003d new StringBuilder(\"Here are the tasks in your list: \\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" response \u003d new StringBuilder(\"Your list is empty!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" if (i \u003c tasks.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" response.append(i + 1).append(\".\").append(tasks.get(i).toString()).append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" response.append(i + 1).append(\".\").append(tasks.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(response.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":29}},{"path":"src/main/java/nollid/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import nollid.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import nollid.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import nollid.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" * MarkCommand class represents a command for marking a task as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" * It extends the Command class and implements the execute method to perform the command logic.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" public MarkCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" // This means that the user has not supplied any number with the command","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" if (argsList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter the task you wish to mark as done!\\n\" + \"Usage: mark [task \"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" + \"number]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" int taskIndex \u003d Integer.parseInt(argsList.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" tasks.setDone(taskIndex, true);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" String response \u003d \"Good job! I\u0027ve marked this task as done: \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" + \"\\t \" + tasks.get(taskIndex - 1).toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(response);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter a number for the mark command.\\n\" + \"Usage: mark [task \"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" + \"number]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Are you sure that\u0027s a valid task number? (Tip: use \u0027list\u0027 to check the \"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" + \"number of your task!)\\n\" + \"Usage: mark [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":46}},{"path":"src/main/java/nollid/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import nollid.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import nollid.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import nollid.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"import nollid.tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" * TodoCommand class represents a command to add a new ToDo task.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" public TodoCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" if (argsList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Todo description cannot be empty!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" + \"Usage: todo [task description]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" StringBuilder taskDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" for (int i \u003d 1; i \u003c argsList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" if (i !\u003d argsList.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(argsList.get(i)).append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" taskDescription.append(argsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" ToDo task \u003d new ToDo(taskDescription.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" String message \u003d \"Alright, added:\\n\" + \"\\t\" + task + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" message +\u003d tasks.summary();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":46}},{"path":"src/main/java/nollid/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import nollid.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import nollid.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import nollid.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" * UnmarkCommand class represents a command to mark a task as not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" private final ArrayList\u003cString\u003e argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" public UnmarkCommand(ArrayList\u003cString\u003e argsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" this.argsList \u003d argsList;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" // This means that the user has not supplied any number with the command","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" if (this.argsList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter the task you wish to mark as not done!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" + \"Usage: unmark [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" int taskIndex \u003d Integer.parseInt(this.argsList.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" tasks.setDone(taskIndex, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" String response \u003d \"Alright, I\u0027ve marked this task as not done yet: \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" + \"\\t \" + tasks.get(taskIndex - 1).toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" ui.sendMessage(response);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" storage.update(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Please enter a number for the unmark command.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" + \"Usage: unmark [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Are you sure that\u0027s a valid task number? (Tip: use \u0027list\u0027 to check the \"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" + \"number of your task!)\\n\" + \"Usage: unmark [task number]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":45}},{"path":"src/main/java/nollid/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" * InvalidCommandException class represents an exception for invalid commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":" * It extends the Exception class and includes a constructor to set the error message.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" public InvalidCommandException(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":11}},{"path":"src/main/java/nollid/exceptions/NollidException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" * NollidException class represents a custom exception for the Nollid application.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":" * It extends the Exception class and includes a constructor to set the error message.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"public class NollidException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" public NollidException(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"dillontkh":11}},{"path":"src/main/java/nollid/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" * Deadline class represents a task with a specified deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" * It extends the Task class and includes additional functionality for handling deadlines.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" public static final String USAGE_HINT \u003d \"Usage: deadline [task description] /by [d/m/yyyy] {hh:mm 24hr format}\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" public static final DateTimeFormatter SAVE_FORMAT \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" protected static final LocalTime DEFAULT_TIME \u003d LocalTime.of(0, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter DATE_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter DATE_OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter TIME_FORMAT \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" * Constructs a Deadline object with a description and a deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" * @param deadline The deadline of the task represented as LocalDateTime.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" public LocalDateTime getDeadline() {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" return this.deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" public String getDeadlineString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" return this.deadline.format(DATE_OUTPUT_FORMAT) + \" \" + this.deadline.format(TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.getDeadlineString() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"dillontkh":43}},{"path":"src/main/java/nollid/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import nollid.exceptions.NollidException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":" * Event class represents a task with a specified start and end time.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" * It extends the Task class and includes additional functionality for handling events.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" public static final DateTimeFormatter SAVE_FORMAT \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" public static final String USAGE_HINT \u003d \"Usage: event [task description] /from [d/m/yyyy] {hh:mm 24hr format} \"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":" + \"/to [d/m/yyyy] {hh:mm 24hr \" + \"format}\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" protected static final LocalTime DEFAULT_TIME \u003d LocalTime.of(0, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter DATE_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter DATE_OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" protected static final DateTimeFormatter TIME_FORMAT \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":" * Creates new Event with specified description, start, and end time.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" * @throws NollidException if end time is before start time.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) throws NollidException {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" if (from.isAfter(to)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":" throw new NollidException(\"Start time and date must be before end time and date.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-20"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" return this.from;","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" return this.to;","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" public String getFromString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" return this.from.format(DATE_OUTPUT_FORMAT) + \" \" + this.from.format(TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":" public String getToString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" return this.to.format(DATE_OUTPUT_FORMAT) + \" \" + this.to.format(TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.getFromString() + \" to: \" + this.getToString() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":60,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"dillontkh":60}},{"path":"src/main/java/nollid/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" * Task class represents a generic task with a description and completion status.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"public class Task { // Adapted from partial solution provided on CS2103 website","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" protected String description;","lastModifiedDate":"2024-01-19"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-19"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":" * Constructs a Task object with the specified description.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-19"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-19"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-19"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-19"},{"lineNumber":28,"author":{"gitId":"dillontkh"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"dillontkh"},"content":" public String getStatusNumber() {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"dillontkh"},"content":" return (this.isDone ? \"1\" : \"0\"); // mark done task with X","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":34,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":35,"author":{"gitId":"dillontkh"},"content":" public void setDone(boolean isDone) {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"dillontkh"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":38,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":39,"author":{"gitId":"dillontkh"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"dillontkh"},"content":" return this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"dillontkh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"dillontkh"},"content":" * Returns a LocalDateTime object from a date (and time) string.","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"dillontkh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"dillontkh"},"content":" * @throws DateTimeParseException if unable to retrieve a date (and time) from the string.","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"dillontkh"},"content":" public static LocalDateTime getLocalDateTimeFromString(String deadlineString) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"dillontkh"},"content":" ArrayList\u003cString\u003e deadlineList \u003d new ArrayList\u003c\u003e(Arrays.asList(deadlineString.split(\" \")));","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"dillontkh"},"content":" LocalDate deadlineDate \u003d LocalDate.parse(deadlineList.get(0), Deadline.DATE_INPUT_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"dillontkh"},"content":" // If only date provided, use the default time","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"dillontkh"},"content":" if (deadlineList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"dillontkh"},"content":" return LocalDateTime.of(deadlineDate, Deadline.DEFAULT_TIME);","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"dillontkh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"dillontkh"},"content":" LocalTime deadlineTime \u003d LocalTime.parse(deadlineList.get(1), Deadline.TIME_FORMAT);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"dillontkh"},"content":" return LocalDateTime.of(deadlineDate, deadlineTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-19"},{"lineNumber":64,"author":{"gitId":"dillontkh"},"content":" public String toString() {","lastModifiedDate":"2024-01-19"},{"lineNumber":65,"author":{"gitId":"dillontkh"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-19"},{"lineNumber":66,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":67,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-19"}],"authorContributionMap":{"dillontkh":67}},{"path":"src/main/java/nollid/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"package nollid.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":" * ToDo class represents a task without a specific deadline or duration.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":" super(description);","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":" @Override","lastModifiedDate":"2024-01-20"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":" public String toString() {","lastModifiedDate":"2024-01-20"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"dillontkh":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dillontkh"},"content":"mark","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"dillontkh"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"dillontkh"},"content":"mark a","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"dillontkh"},"content":"unmark","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"dillontkh"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"dillontkh"},"content":"unmark a","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"dillontkh"},"content":"todo","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"dillontkh"},"content":"todo test todo","lastModifiedDate":"2024-01-20"},{"lineNumber":9,"author":{"gitId":"dillontkh"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"dillontkh"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"dillontkh"},"content":"deadline test deadline","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"dillontkh"},"content":"deadline test deadline /by","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"dillontkh"},"content":"deadline test deadline /by now","lastModifiedDate":"2024-01-20"},{"lineNumber":14,"author":{"gitId":"dillontkh"},"content":"deadline test deadline /by 23/6/2022 23:33","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"dillontkh"},"content":"event","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"dillontkh"},"content":"event test event","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"dillontkh"},"content":"event test event /from now","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"dillontkh"},"content":"event test event /from now /to later","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"dillontkh"},"content":"event test event /from 12/12/1212 12:34 /to 2/2/2222 11:11","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"dillontkh"},"content":"mark 2","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"dillontkh"},"content":"mark 3","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"dillontkh"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"dillontkh"},"content":"unmark 2","lastModifiedDate":"2024-01-20"},{"lineNumber":24,"author":{"gitId":"dillontkh"},"content":"unmark 3","lastModifiedDate":"2024-01-20"},{"lineNumber":25,"author":{"gitId":"dillontkh"},"content":"list","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"dillontkh"},"content":"help","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":"bye","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"dillontkh":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":"-"},"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":"dillontkh"},"content":"java -classpath ..\\bin Nollid \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-20"},{"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,"dillontkh":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":"dillontkh"},"content":"java -classpath ../bin Nollid \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-20"},{"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":"dillontkh"},"content":"#cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"dillontkh"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-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":"dillontkh"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-20"},{"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":{"-":34,"dillontkh":4}}] diff --git a/dillontkh_ip_master/commits.json b/dillontkh_ip_master/commits.json index a7d6c7ea..077a37ac 100644 --- a/dillontkh_ip_master/commits.json +++ b/dillontkh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"dillontkh":[{"date":"2024-01-19","commitResults":[{"hash":"8bff9cfd536f0b09142360329d38d83a49f83d76","isMergeCommit":false,"messageTitle":"Added welcome and goodbye messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":6}}},{"hash":"938b88a9733abdd0eddb0cbe46c6d0a85c2f64bc","isMergeCommit":false,"messageTitle":"Bot now echoes user until \u0027bye\u0027 is received","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":13}}},{"hash":"f8f8e0760cbb641eeea74372a325aa2e603b7184","isMergeCommit":false,"messageTitle":"Bot can now store and list messages","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":10}}},{"hash":"88552627c85e21260b8e695c5354fcbe58d90766","isMergeCommit":false,"messageTitle":"Tasks are stored as objects instead of strings","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":7}}},{"hash":"14a39c7c21353f3a66425fc00e79624e17687c13","isMergeCommit":false,"messageTitle":"Added ability to mark/unmark tasks as done.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}}]},{"date":"2024-01-20","commitResults":[{"hash":"d836087ac2e609a3c05c68d2b8608e9ba842494d","isMergeCommit":false,"messageTitle":"Classified Task into ToDos, Deadlines, and Events","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"dc8ca835a7fdd8cbcff54446560968a6a2639a61","isMergeCommit":false,"messageTitle":"Added support for tracking three types of tasks: ToDos, Events, and Deadlines.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":10}}},{"hash":"0d8e426485aa2b2492c21751a9e63aaff3832eeb","isMergeCommit":false,"messageTitle":"Implemented automated text UI testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":1,"deletions":9},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":4,"deletions":4},"md":{"insertions":2,"deletions":2}}},{"hash":"699576e711b47b66df854ff9883023c28892695a","isMergeCommit":false,"messageTitle":"Implemented automated text UI testing.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":1,"deletions":9},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":4,"deletions":4},"md":{"insertions":2,"deletions":2}}},{"hash":"927d04ebf5533c9644580385c25a00e0db001521","isMergeCommit":false,"messageTitle":"Renamed readme header back to Duke","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"53f1aac38447d53fdf328a4a6cf0668928965264","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/dillontkh/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a248aa18d9ef9167a459af7fdef11dcfa4a2f8e","isMergeCommit":false,"messageTitle":"Renamed readme header back to Duke","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"0c800d73caf3577993e9c18096158c61ee6aad23","isMergeCommit":false,"messageTitle":"Added error handling for invalid user inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":214,"deletions":102}}},{"hash":"723c0050a5ed17795ffc0508f063034e79603c82","isMergeCommit":false,"messageTitle":"Converted error checking to use Exceptions + More tests","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":57,"deletions":40}}},{"hash":"ad309ae2bee542b2247b89865f7dc24ae86a7f03","isMergeCommit":false,"messageTitle":"Added support for deleting tasks from the list.","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":14}}}]},{"date":"2024-01-23","commitResults":[{"hash":"9695482880305a2e6e55763c33a69567cb8f6e27","isMergeCommit":false,"messageTitle":"Added help command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2024-01-24","commitResults":[{"hash":"9992e0290c1af1a42185d5f7be48130dd0f72455","isMergeCommit":false,"messageTitle":"Added test for help menu. Used enums for commands","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"5daed3b6e13fada56dcedfd99d5c2c74ac9ba030","isMergeCommit":false,"messageTitle":"Fixed more references to my bot from README. Used enums for commands (for real this time, forgot to stage the file in the last commit)","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":10},"md":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"d00ccfff98b2299ceaa201a59894a8bb163fcee1","isMergeCommit":false,"messageTitle":"Change phrasing of bot responses for greater clarity","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":47}}},{"hash":"cb320fb4fd4dfbf280bb063080a36830cbd2bc2a","isMergeCommit":false,"messageTitle":"Implement initializing task list from file.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":13},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"fe8b10d834b0ade4c875fa17ac02256fe7e70538","isMergeCommit":false,"messageTitle":"Save tasks in hard disk whenever task list changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":178,"deletions":62}}},{"hash":"c41af25e774f3d5274b688b94659ef1973cddc0d","isMergeCommit":false,"messageTitle":"Give run permission to runtest.sh","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":0,"deletions":0}}},{"hash":"86c8ad9e6dcfe8dba0f34ed6d6e68950425d34d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"de72a71548d123ca7686e472443be136fbef1ee4","isMergeCommit":false,"messageTitle":"Update switch-case indentation to follow standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":17}}}]},{"date":"2024-01-28","commitResults":[{"hash":"23fa6688a8b0a8d795b018bb2fb212abfe88ad44","isMergeCommit":false,"messageTitle":"Store Deadline task deadlines as LocalDateTime instead of String","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":38}}},{"hash":"989fda4df1c174241d50433293c82f472a0fca2f","isMergeCommit":false,"messageTitle":"Use LocalDateTime to store time in Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":15}}},{"hash":"a0f2d8fec2149fdd41bbfa64a38b93d1b3cf95b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"1cc9b2311a0f700ce1d7fa8db5e96356aa59aee2","isMergeCommit":false,"messageTitle":"Remove completed TODO comment","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"42bc07d750728a1ece4baa93a0879d23bcc7b033","isMergeCommit":false,"messageTitle":"Extract TaskList and Storage to their own classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":259,"deletions":185}}}]},{"date":"2024-01-29","commitResults":[{"hash":"d40174d9f55e4a4bf39990bb230f860e88bb6f32","isMergeCommit":false,"messageTitle":"Hide recoverable errors from user","messageBody":"When loading the task storage from disk, some lines may not follow the\nappropriate format. In those cases, skip the lines without\nshowing any error message to the user.\n","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":35}}},{"hash":"8c52e4facf0f031d8b9069d4219c2a0b7fbbcf6f","isMergeCommit":false,"messageTitle":"Extract Ui, Parser, and Commands to classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":471,"deletions":448}}},{"hash":"76bee5324a0d2a2e3109f32691d9f25fe0f168ce","isMergeCommit":false,"messageTitle":"Make Ui line length a constant","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"def30764d39ced91917c10bbc390f8e32ed4b4ea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"a6daff9eb577d696f291a870b6dccc6e562cb018","isMergeCommit":false,"messageTitle":"Update .gitignore and fix reading input for tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"202d8609c51c3049595554eaa00d4d76bded7c1f","isMergeCommit":false,"messageTitle":"Add more test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"dillontkh":{"java":811,"md":0,"fxml":0,"sh":4,"bat":1,"gradle":0,"txt":27}},"authorContributionVariance":{"dillontkh":88529.72},"authorDisplayNameMap":{"dillontkh":"CS2103T-T17-3 TAN ..LLON"}} +{"authorDailyContributionsMap":{"dillontkh":[{"date":"2024-01-19","commitResults":[{"hash":"8bff9cfd536f0b09142360329d38d83a49f83d76","isMergeCommit":false,"messageTitle":"Added welcome and goodbye messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":6}}},{"hash":"938b88a9733abdd0eddb0cbe46c6d0a85c2f64bc","isMergeCommit":false,"messageTitle":"Bot now echoes user until \u0027bye\u0027 is received","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":13}}},{"hash":"f8f8e0760cbb641eeea74372a325aa2e603b7184","isMergeCommit":false,"messageTitle":"Bot can now store and list messages","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":10}}},{"hash":"88552627c85e21260b8e695c5354fcbe58d90766","isMergeCommit":false,"messageTitle":"Tasks are stored as objects instead of strings","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":7}}},{"hash":"14a39c7c21353f3a66425fc00e79624e17687c13","isMergeCommit":false,"messageTitle":"Added ability to mark/unmark tasks as done.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}}]},{"date":"2024-01-20","commitResults":[{"hash":"d836087ac2e609a3c05c68d2b8608e9ba842494d","isMergeCommit":false,"messageTitle":"Classified Task into ToDos, Deadlines, and Events","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"dc8ca835a7fdd8cbcff54446560968a6a2639a61","isMergeCommit":false,"messageTitle":"Added support for tracking three types of tasks: ToDos, Events, and Deadlines.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":10}}},{"hash":"0d8e426485aa2b2492c21751a9e63aaff3832eeb","isMergeCommit":false,"messageTitle":"Implemented automated text UI testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":1,"deletions":9},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":4,"deletions":4},"md":{"insertions":2,"deletions":2}}},{"hash":"699576e711b47b66df854ff9883023c28892695a","isMergeCommit":false,"messageTitle":"Implemented automated text UI testing.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":1,"deletions":9},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":4,"deletions":4},"md":{"insertions":2,"deletions":2}}},{"hash":"927d04ebf5533c9644580385c25a00e0db001521","isMergeCommit":false,"messageTitle":"Renamed readme header back to Duke","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"53f1aac38447d53fdf328a4a6cf0668928965264","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/dillontkh/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a248aa18d9ef9167a459af7fdef11dcfa4a2f8e","isMergeCommit":false,"messageTitle":"Renamed readme header back to Duke","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"0c800d73caf3577993e9c18096158c61ee6aad23","isMergeCommit":false,"messageTitle":"Added error handling for invalid user inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":214,"deletions":102}}},{"hash":"723c0050a5ed17795ffc0508f063034e79603c82","isMergeCommit":false,"messageTitle":"Converted error checking to use Exceptions + More tests","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":57,"deletions":40}}},{"hash":"ad309ae2bee542b2247b89865f7dc24ae86a7f03","isMergeCommit":false,"messageTitle":"Added support for deleting tasks from the list.","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":14}}}]},{"date":"2024-01-23","commitResults":[{"hash":"9695482880305a2e6e55763c33a69567cb8f6e27","isMergeCommit":false,"messageTitle":"Added help command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2024-01-24","commitResults":[{"hash":"9992e0290c1af1a42185d5f7be48130dd0f72455","isMergeCommit":false,"messageTitle":"Added test for help menu. Used enums for commands","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"5daed3b6e13fada56dcedfd99d5c2c74ac9ba030","isMergeCommit":false,"messageTitle":"Fixed more references to my bot from README. Used enums for commands (for real this time, forgot to stage the file in the last commit)","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":10},"md":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"d00ccfff98b2299ceaa201a59894a8bb163fcee1","isMergeCommit":false,"messageTitle":"Change phrasing of bot responses for greater clarity","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":47}}},{"hash":"cb320fb4fd4dfbf280bb063080a36830cbd2bc2a","isMergeCommit":false,"messageTitle":"Implement initializing task list from file.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":13},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"fe8b10d834b0ade4c875fa17ac02256fe7e70538","isMergeCommit":false,"messageTitle":"Save tasks in hard disk whenever task list changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":178,"deletions":62}}},{"hash":"c41af25e774f3d5274b688b94659ef1973cddc0d","isMergeCommit":false,"messageTitle":"Give run permission to runtest.sh","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":0,"deletions":0}}},{"hash":"86c8ad9e6dcfe8dba0f34ed6d6e68950425d34d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"de72a71548d123ca7686e472443be136fbef1ee4","isMergeCommit":false,"messageTitle":"Update switch-case indentation to follow standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":17}}}]},{"date":"2024-01-28","commitResults":[{"hash":"23fa6688a8b0a8d795b018bb2fb212abfe88ad44","isMergeCommit":false,"messageTitle":"Store Deadline task deadlines as LocalDateTime instead of String","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":38}}},{"hash":"989fda4df1c174241d50433293c82f472a0fca2f","isMergeCommit":false,"messageTitle":"Use LocalDateTime to store time in Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":15}}},{"hash":"a0f2d8fec2149fdd41bbfa64a38b93d1b3cf95b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"1cc9b2311a0f700ce1d7fa8db5e96356aa59aee2","isMergeCommit":false,"messageTitle":"Remove completed TODO comment","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"42bc07d750728a1ece4baa93a0879d23bcc7b033","isMergeCommit":false,"messageTitle":"Extract TaskList and Storage to their own classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":259,"deletions":185}}}]},{"date":"2024-01-29","commitResults":[{"hash":"d40174d9f55e4a4bf39990bb230f860e88bb6f32","isMergeCommit":false,"messageTitle":"Hide recoverable errors from user","messageBody":"When loading the task storage from disk, some lines may not follow the\nappropriate format. In those cases, skip the lines without\nshowing any error message to the user.\n","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":35}}},{"hash":"8c52e4facf0f031d8b9069d4219c2a0b7fbbcf6f","isMergeCommit":false,"messageTitle":"Extract Ui, Parser, and Commands to classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":471,"deletions":448}}},{"hash":"76bee5324a0d2a2e3109f32691d9f25fe0f168ce","isMergeCommit":false,"messageTitle":"Make Ui line length a constant","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"def30764d39ced91917c10bbc390f8e32ed4b4ea","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"a6daff9eb577d696f291a870b6dccc6e562cb018","isMergeCommit":false,"messageTitle":"Update .gitignore and fix reading input for tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"202d8609c51c3049595554eaa00d4d76bded7c1f","isMergeCommit":false,"messageTitle":"Add more test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"0f757b9248e9273ac4f7f09d9c49e04eb8207ff5","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":9}}},{"hash":"95e797e10bc867eec8df069ca89fa78ccdedd7cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"6e5ee29b3dc0f6237aaa333fd10ac5869791f52c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a5fec7b73ece48cf281c62b9261ae2a2c4e098df","isMergeCommit":false,"messageTitle":"Set up gradle to run Nollid and checkstyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2}}},{"hash":"0f205602ae61e39e0b5e8532338ea573b90cf1ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"eb7962168f6e615eeca0412e3aa16decdc8606b2","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":165,"deletions":50}}}]}]},"authorFileTypeContributionMap":{"dillontkh":{"java":1038,"md":0,"fxml":0,"sh":4,"bat":1,"gradle":2,"txt":27}},"authorContributionVariance":{"dillontkh":83090.13},"authorDisplayNameMap":{"dillontkh":"CS2103T-T17-3 TAN ..LLON"}} diff --git a/doyelee0313_ip_master/authorship.json b/doyelee0313_ip_master/authorship.json index 6c5c3911..c3f5b348 100644 --- a/doyelee0313_ip_master/authorship.json +++ b/doyelee0313_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":" * The Deadline class represents a task with a deadline.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * It has information about the deadline and it is a subclass of the Task class.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" * Constructor for Deadline class.","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" * Returns a string format of the Deadline object.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Deadline object.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":30}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"import java.util.*;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" * The main method for the Duke program.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":" * Reads user commands and actions until the user enters \"bye\"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" * @param args The command-line","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Hello! I\u0027m Doye\\n\" + \"What can I do for you?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" List\u003cTask\u003e array \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" String order \u003d sc.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" if (order.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" } else if (order.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" for (int i \u003d 0; i \u003c array.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" Task addTask \u003d array.get(i);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" System.out.println((i + 1) + \".\" + addTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" } else if (order.contains(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" String[] tokens \u003d order.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(tokens[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d array.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" t.markAsUnDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" } else if (order.contains(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" String[] tokens \u003d order.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(tokens[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d array.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" } else if(order.contains(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" String task \u003d order.substring(4).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d new Todo(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" array.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Now you have \" + array.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" } else if (order.contains(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":" int byIndex \u003d order.indexOf(\"/by\");","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" String task \u003d order.substring(9, byIndex - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" String due \u003d order.substring(byIndex + 4);","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d new Deadline(task, due);","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" array.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Now you have \" + array.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" } else if (order.contains(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" int fromIndex \u003d order.indexOf(\"/from\");","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" int toIndex \u003d order.indexOf(\"/to\");","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" String task \u003d order.substring(6, fromIndex - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" String from \u003d order.substring(fromIndex + 6, toIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" String to \u003d order.substring(toIndex + 4);","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d new Event(task, from, to);","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" array.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Now you have \" + array.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" } else if (order.contains(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":" String[] tokens \u003d order.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(tokens[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d array.get(number - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"doyelee0313"},"content":" array.remove(number - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Now you have \" + array.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":111,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":" * DukeException is a custom exception class for errors.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * It extends the Exception class and prints a message for each error case.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" * sends the error message according to the error type","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" * @param message The error message about the exception","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"doyelee0313":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":" * The Event class represents a event, starting date and ending date.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * It has information about the event and it is a subclass of the Task class.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" * Constructor for Event class.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" * @param from The starting date or time of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" * @param to The ending date or time of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" * Returns a string format of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":32}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":" * The Task class contains the task with a description and a status.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" * Constructs a new Task with the description.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" * Gets the status icon representing the completion status of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" * @return A string containing \"X\" if the task is done, or a space if the task is not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" * Mark the task as done.","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" * Unmark the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" public void markAsUnDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" * Returns a string of the Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Task object.","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":49}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":" * The Todo class represents a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * It has description about the task and it is a subclass of the Task class.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" * Constructor for Todo class.","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" * Returns a string format of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":25}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"doyelee0313":2}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":" * The Deadline class represents a task with a deadline.","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" * It has information about the deadline and it is a subclass of the Task class.","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" * Constructor for Deadline class.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" this.deadline \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" * Returns a string format of the Deadline object.","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Deadline object.","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadline + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":34}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"//merge commit","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.util.*;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.io.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" * The main method for the Duke program.","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" * Reads user commands and actions until the user enters \"bye\"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" * @param args The command-line","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Hello! I\u0027m Doye\\n\" + \"What can I do for you?\");","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" List\u003cTask\u003e array \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" array \u003d load();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" String order \u003d sc.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" if (order.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" save(array);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" } else if (order.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" for (int i \u003d 0; i \u003c array.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" Task addTask \u003d array.get(i);","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" System.out.println((i + 1) + \".\" + addTask.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" } else if (order.contains(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" String[] tokens \u003d order.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(tokens[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d array.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" t.markAsUnDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" } else if (order.contains(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" String[] tokens \u003d order.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(tokens[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d array.get(number - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" } else if(order.contains(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" String task \u003d order.substring(4).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" if (task.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d new Todo(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" array.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" save(array);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Now you have \" + array.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" } else if (order.contains(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" int byIndex \u003d order.indexOf(\"/by\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" String task \u003d order.substring(9, byIndex - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" String due \u003d order.substring(byIndex + 4);","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d new Deadline(task, due);","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" array.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" save(array);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Now you have \" + array.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" } else if (order.contains(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" int fromIndex \u003d order.indexOf(\"/from\");","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" int toIndex \u003d order.indexOf(\"/to\");","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" String task \u003d order.substring(6, fromIndex - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" String from \u003d order.substring(fromIndex + 6, toIndex);","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" String to \u003d order.substring(toIndex + 4);","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d new Event(task, from, to);","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":" array.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" save(array);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Now you have \" + array.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"doyelee0313"},"content":" } else if (order.contains(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"doyelee0313"},"content":" String[] tokens \u003d order.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(tokens[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d array.get(number - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"doyelee0313"},"content":" array.remove(number - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"doyelee0313"},"content":" save(array);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Now you have \" + array.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":121,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"doyelee0313"},"content":" private static void save(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"doyelee0313"},"content":" try (ObjectOutputStream output \u003d new ObjectOutputStream(new FileOutputStream(\"/Users/leedoye/ip/src/data/duke_tasks.txt\"))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"doyelee0313"},"content":" output.writeObject(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"doyelee0313"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"doyelee0313"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"doyelee0313"},"content":" private static List\u003cTask\u003e load() {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"doyelee0313"},"content":" try (ObjectInputStream intput \u003d new ObjectInputStream(new FileInputStream(\"/Users/leedoye/ip/src/data/duke_tasks.txt\"))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"doyelee0313"},"content":" return (List\u003cTask\u003e) intput.readObject();","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"doyelee0313"},"content":" } catch (IOException | ClassNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"No existing tasks or file.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"doyelee0313"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":136,"-":6}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":" * DukeException is a custom exception class for errors.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * It extends the Exception class and prints a message for each error case.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" * sends the error message according to the error type","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" * @param message The error message about the exception","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"doyelee0313":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":" * The Event class represents a event, starting date and ending date.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * It has information about the event and it is a subclass of the Task class.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" * Constructor for Event class.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" * @param from The starting date or time of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" * @param to The ending date or time of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" * Returns a string format of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":32}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" * The Task class contains the task with a description and a status.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"public class Task implements Serializable{","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" * Constructs a new Task with the description.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" * Gets the status icon representing the completion status of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" * @return A string containing \"X\" if the task is done, or a space if the task is not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" * Mark the task as done.","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" * Unmark the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" public void markAsUnDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" * Returns a string of the Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Task object.","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":51}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":" * The Todo class represents a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * It has description about the task and it is a subclass of the Task class.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" * Constructor for Todo class.","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" * Returns a string format of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":25}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"doyelee0313":2}},{"path":"src/data/duke_tasks.txt","fileType":"txt","isBinary":true,"lines":[],"authorContributionMap":{"doyelee0313":0}}] diff --git a/doyelee0313_ip_master/commits.json b/doyelee0313_ip_master/commits.json index 9c7541ae..395cbf25 100644 --- a/doyelee0313_ip_master/commits.json +++ b/doyelee0313_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"doyelee0313":[{"date":"2024-01-22","commitResults":[{"hash":"b53b207c285a472d9220748e58d4c558cf290ea1","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"3ef142c9675e987ecd2d5f8e5254a567562cd5de","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":4}}},{"hash":"8af24765ba7001b1f2795e3d6038766a6c2ec10d","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}}]},{"date":"2024-01-23","commitResults":[{"hash":"76980587c1a9d083db4638d2c344520466aa278d","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":20}}},{"hash":"f620e27e01ffefda51e9a6d9068da3c7740ab265","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":10}}}]},{"date":"2024-01-24","commitResults":[{"hash":"d6f63f4cf2bbdee369b4399bb8ca62eacc2b3fff","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":24,"deletions":18},"sh":{"insertions":0,"deletions":0}}},{"hash":"56d6cebd0b5be6dc2d6abdb202dcfca996f2223b","isMergeCommit":false,"messageTitle":"A-Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":18}}},{"hash":"c4fac569a15d1b1554bd043129e655da75d66322","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]},{"date":"2024-01-25","commitResults":[{"hash":"bc34fd74c6e340f42a29f7558931d220938bb80c","isMergeCommit":false,"messageTitle":"javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":11}}}]}]},"authorFileTypeContributionMap":{"doyelee0313":{"java":261,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":2}},"authorContributionVariance":{"doyelee0313":4069.6328},"authorDisplayNameMap":{"doyelee0313":"CS2103T-W10-4 LEE ..DOYE"}} +{"authorDailyContributionsMap":{"doyelee0313":[{"date":"2024-01-22","commitResults":[{"hash":"b53b207c285a472d9220748e58d4c558cf290ea1","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"3ef142c9675e987ecd2d5f8e5254a567562cd5de","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":4}}},{"hash":"8af24765ba7001b1f2795e3d6038766a6c2ec10d","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}}]},{"date":"2024-01-23","commitResults":[{"hash":"76980587c1a9d083db4638d2c344520466aa278d","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":20}}},{"hash":"f620e27e01ffefda51e9a6d9068da3c7740ab265","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":10}}}]},{"date":"2024-01-24","commitResults":[{"hash":"d6f63f4cf2bbdee369b4399bb8ca62eacc2b3fff","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":24,"deletions":18},"sh":{"insertions":0,"deletions":0}}},{"hash":"56d6cebd0b5be6dc2d6abdb202dcfca996f2223b","isMergeCommit":false,"messageTitle":"A-Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":18}}},{"hash":"c4fac569a15d1b1554bd043129e655da75d66322","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]},{"date":"2024-01-25","commitResults":[{"hash":"bc34fd74c6e340f42a29f7558931d220938bb80c","isMergeCommit":false,"messageTitle":"javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":11}}}]},{"date":"2024-01-29","commitResults":[{"hash":"47305a7558a015e507de8cf369d5398f945d6009","isMergeCommit":false,"messageTitle":"add-intro","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"f300a032651948740abaf8135a94a3b7641a83b4","isMergeCommit":false,"messageTitle":"Revert \"add-intro\"","messageBody":"This reverts commit 47305a7558a015e507de8cf369d5398f945d6009.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}}]},{"date":"2024-01-30","commitResults":[{"hash":"203ffd42ae417770c3e7b48d1835f67dd8f72219","isMergeCommit":false,"messageTitle":"branch-Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":1}}},{"hash":"64925e5db3617a2b112644d245df3aeeed835e8a","isMergeCommit":false,"messageTitle":"merge commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"98459120325fe0f7d0d711909bbd6ff91f800240","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"afb5cc3f53f179a57beaa863f6e8086ff3cd7300","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"doyelee0313":{"java":292,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":2}},"authorContributionVariance":{"doyelee0313":3159.9714},"authorDisplayNameMap":{"doyelee0313":"CS2103T-W10-4 LEE ..DOYE"}} diff --git a/eunrcn_ip_master/authorship.json b/eunrcn_ip_master/authorship.json index 2134f780..ce148fea 100644 --- a/eunrcn_ip_master/authorship.json +++ b/eunrcn_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/Git.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"1. Create and Switch to the Branch:","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"git checkout -b *branch name*","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"2. Make the necessary change. During this process, commit your changes regularly.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"git add .","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"git commit -m \"Commit message\"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"git push origin *branch name*","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"3. Switch to Master Branch:","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"git checkout master","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"4. Merge new branch to Master with a Merge Commit:","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"git merge --no-ff *branch name* -m \"Merge branch-Level-8 for Level 8 implementation\"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"This will create a merge commit even if it\u0027s a fast-forward merge.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"5. Tag the Merge Commit:","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"git tag *branch name*","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"6. git push","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"git push origin master","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"git push origin *branch name*","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"git push origin --tags","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":23}},{"path":"data/Skyler.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"[T][X] yuh","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":1}},{"path":"src/main/java/skyler/exception/SkylerException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"public class SkylerException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":" public SkylerException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":7}},{"path":"src/main/java/skyler/main/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import skyler.task.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" public static void processUserInput(String userInput) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" TaskList.listTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" TaskList.addTask(new ToDo(getTaskDescription(userInput, 4), false));","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" String[] parts \u003d userInput.split(\"/by\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" if (parts.length !\u003d 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" \"Invalid \u0027deadline\u0027 command. Please provide a valid description and deadline.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" String description \u003d parts[0].substring(9).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" LocalDate byDate \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" TaskList.addTask(new Deadline(description, byDate, false));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" String[] parts \u003d userInput.split(\"/from\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" if (parts.length !\u003d 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid \u0027event\u0027 command. Please provide a valid description and timeframe.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" String description \u003d parts[0].substring(6).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" String from \u003d parts[1].split(\"/to\")[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":" String to \u003d parts[1].split(\"/to\")[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" LocalDate fromDate \u003d LocalDate.parse(from, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" LocalDate toDate \u003d LocalDate.parse(to, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" TaskList.addTask(new Event(description, fromDate, toDate, false));","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" TaskList.deleteTask(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" TaskList.markTask(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" TaskList.unmarkTask(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"view\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" TaskList.viewTasksOnDate(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"I\u0027m sorry, I don\u0027t understand that command.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" public static String getTaskDescription(String userInput, int startIndex, String... keywords)","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"eunrcn"},"content":" String description \u003d userInput.substring(startIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":" for (String keyword : keywords) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"eunrcn"},"content":" if (description.startsWith(keyword)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"eunrcn"},"content":" description \u003d description.substring(keyword.length()).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"eunrcn"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"eunrcn"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"The description of a task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" return description;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":68}},{"path":"src/main/java/skyler/main/Skyler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"public class Skyler {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":" private static final String CHATBOT_NAME \u003d \"Skyler\";","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":" Ui.printGreeting(CHATBOT_NAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" Storage.loadTasksFromFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" String userInput \u003d Ui.getUserInput(scanner);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" Ui.printByeMessage();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" Storage.saveTasksToFile(); // Save tasks before exiting","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" Parser.processUserInput(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" } catch (SkylerException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" Ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":34}},{"path":"src/main/java/skyler/main/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"import skyler.task.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" private static final String FILE_PATH \u003d \"./data/Skyler.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" private static List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" public static void loadTasksFromFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" Task task \u003d parseTaskFromFile(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" tasks.add(task); // Add the task to the common list","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" } catch (IOException | SkylerException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"An error occurred while loading tasks.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":" public static Task parseTaskFromFile(String data) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" String taskType \u003d data.substring(1, 2); // Extracting task type (T, D, E)","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" boolean isDone \u003d data.charAt(4) \u003d\u003d \u0027X\u0027; // Assuming \u0027x\u0027 represents a completed task","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" String details \u003d data.substring(7).trim(); // Extracting task details","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" return new ToDo(details, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" int byIndex \u003d details.indexOf(\"(by:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" String descriptionD \u003d details.substring(0, byIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" String byString \u003d details.substring(byIndex + 4, details.length() - 1).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":" LocalDate byDate \u003d LocalDate.parse(byString, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" return new Deadline(descriptionD, byDate, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" int fromIndex \u003d details.indexOf(\"(from:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" int toIndex \u003d details.indexOf(\"to:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" String descriptionE \u003d details.substring(0, fromIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" String fromString \u003d details.substring(fromIndex + 6, toIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"eunrcn"},"content":" String toString \u003d details.substring(toIndex + 3, details.length() - 1).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":" LocalDate fromDate \u003d LocalDate.parse(fromString, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"eunrcn"},"content":" LocalDate toDate \u003d LocalDate.parse(toString, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"eunrcn"},"content":" return new Event(descriptionE, fromDate, toDate, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"eunrcn"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Unknown task type in the file: \" + data);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"eunrcn"},"content":" public static void saveTasksToFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" FileWriter writer \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":" writer.write(task.toString() + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" writer.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"eunrcn"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"An error occurred while saving tasks.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"eunrcn"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" // Add this method to get the common tasks list for TaskList.java","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" public static List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":82}},{"path":"src/main/java/skyler/main/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" private static List\u003cTask\u003e tasks \u003d Storage.getTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" ","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" static void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" Storage.saveTasksToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" static void listTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" public static void deleteTask(String userInput) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" int taskId \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" if (isValidTaskId(taskId)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" Task removedTask \u003d tasks.remove(taskId - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" Storage.saveTasksToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid task number. Please provide a valid task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid command. Please use \u0027delete \u003ctask number\u003e\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" public static void markTask(String userInput) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" int taskId \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" if (isValidTaskId(taskId)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" Task task \u003d tasks.get(taskId - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"eunrcn"},"content":" Storage.saveTasksToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"eunrcn"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid task number. Please provide a valid task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"eunrcn"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid command. Please use \u0027mark \u003ctask number\u003e\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" public static void unmarkTask(String userInput) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" int taskId \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" if (isValidTaskId(taskId)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"eunrcn"},"content":" Task task \u003d tasks.get(taskId - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"eunrcn"},"content":" task.markAsUndone();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":" Storage.saveTasksToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid task number. Please provide a valid task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid command. Please use \u0027unmark \u003ctask number\u003e\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" public static boolean isValidTaskId(int taskId) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" return taskId \u003e 0 \u0026\u0026 taskId \u003c\u003d tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":" public static void viewTasksOnDate(String userInput) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"eunrcn"},"content":" String dateString \u003d userInput.split(\" \")[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"eunrcn"},"content":" LocalDate dateToView \u003d LocalDate.parse(dateString, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Here are the tasks for \"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":" + dateToView.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \":\");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"eunrcn"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" LocalDate deadlineDate \u003d ((Deadline) task).getBy();","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":" if (deadlineDate.equals(dateToView)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"eunrcn"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"eunrcn"},"content":" LocalDate fromDate \u003d ((Event) task).getFrom();","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"eunrcn"},"content":" LocalDate toDate \u003d ((Event) task).getTo();","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" if ((dateToView.isEqual(fromDate) || dateToView.isAfter(fromDate)) \u0026\u0026","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" (dateToView.isEqual(toDate) || dateToView.isBefore(toDate))) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"eunrcn"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid \u0027view\u0027 command. Please provide a valid date in yyyy-MM-dd format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":120}},{"path":"src/main/java/skyler/main/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":" private static final String LINE \u003d \"------------------------------------------------------------\";","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":" public static void printGreeting(String chatbotName) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" /\\\\_/\\\\\");","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" ( o.o ) Hello! I\u0027m \" + chatbotName);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \u003e ^ \u003c What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" public static String getUserInput(Scanner scanner) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" System.out.print(\"You: \");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" return userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" public static void printByeMessage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" public static void printErrorMessage(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Woof, \" + message);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":30}},{"path":"src/main/java/skyler/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" public Deadline(String description, LocalDate by, boolean isDone) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" public LocalDate getBy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" return by;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":24}},{"path":"src/main/java/skyler/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":" private LocalDate from;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" private LocalDate to;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" public Event(String description, LocalDate from, LocalDate to, boolean isDone) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" public LocalDate getFrom() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" return from;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" public LocalDate getTo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" return to;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) +","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":30}},{"path":"src/main/java/skyler/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"public class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" return getStatusIcon() + \" \" + description;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":28}},{"path":"src/main/java/skyler/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"todo read a book","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":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":"eunrcn"},"content":"java -classpath ../bin Skyler \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"eunrcn":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":"eunrcn"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-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":"-"},"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":"eunrcn"},"content":"checkstyle {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" toolVersion \u003d \u00278.23\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"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":"eunrcn"},"content":" mainClass.set(\"skyler.main.Skyler\")","lastModifiedDate":"2024-01-30"},{"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":"eunrcn"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"eunrcn":8,"-":41}},{"path":"data/Git.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"1. Create and Switch to the Branch:","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"git checkout -b *branch name*","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"2. Make the necessary change. During this process, commit your changes regularly.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"git add .","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"git commit -m \"Commit message\"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"git push origin *branch name*","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"3. Switch to Master Branch:","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"git checkout master","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"4. Merge new branch to Master with a Merge Commit:","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"git merge --no-ff *branch name* -m \"Merge branch-Level-8 for Level 8 implementation\"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"This will create a merge commit even if it\u0027s a fast-forward merge.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"5. Tag the Merge Commit:","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"git tag *branch name*","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"6. git push","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"git push origin master","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"git push origin *branch name*","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"git push origin --tags","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":23}},{"path":"data/Skyler.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"[E][ ] Team meeting (from: Jan 20 2022 to: Jan 21 2022)","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"eunrcn":1}},{"path":"src/main/java/skyler/exception/SkylerException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"public class SkylerException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":" public SkylerException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":7}},{"path":"src/main/java/skyler/main/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import skyler.task.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" public static void processUserInput(String userInput) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" TaskList.listTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" TaskList.addTask(new ToDo(getTaskDescription(userInput, 4), false));","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" String[] parts \u003d userInput.split(\"/by\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" if (parts.length !\u003d 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" \"Invalid \u0027deadline\u0027 command. Please provide a valid description and deadline.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" String description \u003d parts[0].substring(9).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" LocalDate byDate \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" TaskList.addTask(new Deadline(description, byDate, false));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" String[] parts \u003d userInput.split(\"/from\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" if (parts.length !\u003d 2 || parts[0].trim().isEmpty() || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid \u0027event\u0027 command. Please provide a valid description and timeframe.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" String description \u003d parts[0].substring(6).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" String from \u003d parts[1].split(\"/to\")[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":" String to \u003d parts[1].split(\"/to\")[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" LocalDate fromDate \u003d LocalDate.parse(from, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" LocalDate toDate \u003d LocalDate.parse(to, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" TaskList.addTask(new Event(description, fromDate, toDate, false));","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" TaskList.deleteTask(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" TaskList.markTask(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" TaskList.unmarkTask(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" } else if (userInput.startsWith(\"view\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" TaskList.viewTasksOnDate(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"I\u0027m sorry, I don\u0027t understand that command.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" public static String getTaskDescription(String userInput, int startIndex, String... keywords)","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"eunrcn"},"content":" String description \u003d userInput.substring(startIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":" for (String keyword : keywords) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"eunrcn"},"content":" if (description.startsWith(keyword)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"eunrcn"},"content":" description \u003d description.substring(keyword.length()).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"eunrcn"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"eunrcn"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"The description of a task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" return description;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":68}},{"path":"src/main/java/skyler/main/Skyler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"public class Skyler {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":" private static final String CHATBOT_NAME \u003d \"Skyler\";","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":" Ui.printGreeting(CHATBOT_NAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" Storage.loadTasksFromFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" String userInput \u003d Ui.getUserInput(scanner);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" Ui.printByeMessage();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" Storage.saveTasksToFile(); // Save tasks before exiting","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" Parser.processUserInput(userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" } catch (SkylerException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" Ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":34}},{"path":"src/main/java/skyler/main/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"import skyler.task.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" private static final String FILE_PATH \u003d \"./data/Skyler.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" private static List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" public static void loadTasksFromFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" String data \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" Task task \u003d parseTaskFromFile(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" tasks.add(task); // Add the task to the common list","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" } catch (IOException | SkylerException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"An error occurred while loading tasks.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":" public static Task parseTaskFromFile(String data) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" String taskType \u003d data.substring(1, 2); // Extracting task type (T, D, E)","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" boolean isDone \u003d data.charAt(4) \u003d\u003d \u0027X\u0027; // Assuming \u0027x\u0027 represents a completed task","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" String details \u003d data.substring(7).trim(); // Extracting task details","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" return new ToDo(details, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" int byIndex \u003d details.indexOf(\"(by:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" String descriptionD \u003d details.substring(0, byIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" String byString \u003d details.substring(byIndex + 4, details.length() - 1).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":" LocalDate byDate \u003d LocalDate.parse(byString, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" return new Deadline(descriptionD, byDate, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" int fromIndex \u003d details.indexOf(\"(from:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" int toIndex \u003d details.indexOf(\"to:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" String descriptionE \u003d details.substring(0, fromIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" String fromString \u003d details.substring(fromIndex + 6, toIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"eunrcn"},"content":" String toString \u003d details.substring(toIndex + 3, details.length() - 1).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":" LocalDate fromDate \u003d LocalDate.parse(fromString, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"eunrcn"},"content":" LocalDate toDate \u003d LocalDate.parse(toString, DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"eunrcn"},"content":" return new Event(descriptionE, fromDate, toDate, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"eunrcn"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Unknown task type in the file: \" + data);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"eunrcn"},"content":" public static void saveTasksToFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" FileWriter writer \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":" writer.write(task.toString() + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" writer.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"eunrcn"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"An error occurred while saving tasks.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"eunrcn"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" // Add this method to get the common tasks list for TaskList.java","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" public static List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":82}},{"path":"src/main/java/skyler/main/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import skyler.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" private static List\u003cTask\u003e tasks \u003d Storage.getTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" static void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" Storage.saveTasksToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" static void listTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" public static void deleteTask(String userInput) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" int taskId \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" if (isValidTaskId(taskId)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" Task removedTask \u003d tasks.remove(taskId - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + removedTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" Storage.saveTasksToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid task number. Please provide a valid task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid command. Please use \u0027delete \u003ctask number\u003e\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" public static void markTask(String userInput) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" int taskId \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" if (isValidTaskId(taskId)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" Task task \u003d tasks.get(taskId - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"eunrcn"},"content":" Storage.saveTasksToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"eunrcn"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid task number. Please provide a valid task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"eunrcn"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid command. Please use \u0027mark \u003ctask number\u003e\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" public static void unmarkTask(String userInput) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" int taskId \u003d Integer.parseInt(userInput.split(\" \")[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" if (isValidTaskId(taskId)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"eunrcn"},"content":" Task task \u003d tasks.get(taskId - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"eunrcn"},"content":" task.markAsUndone();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":" Storage.saveTasksToFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid task number. Please provide a valid task number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid command. Please use \u0027unmark \u003ctask number\u003e\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" public static boolean isValidTaskId(int taskId) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" return taskId \u003e 0 \u0026\u0026 taskId \u003c\u003d tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":" public static void viewTasksOnDate(String userInput) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"eunrcn"},"content":" String dateString \u003d userInput.split(\" \")[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"eunrcn"},"content":" LocalDate dateToView \u003d LocalDate.parse(dateString, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Here are the tasks for \"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":" + dateToView.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \":\");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"eunrcn"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" LocalDate deadlineDate \u003d ((Deadline) task).getBy();","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":" if (deadlineDate.equals(dateToView)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"eunrcn"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"eunrcn"},"content":" LocalDate fromDate \u003d ((Event) task).getFrom();","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"eunrcn"},"content":" LocalDate toDate \u003d ((Event) task).getTo();","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" if ((dateToView.isEqual(fromDate) || dateToView.isAfter(fromDate)) \u0026\u0026","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" (dateToView.isEqual(toDate) || dateToView.isBefore(toDate))) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"------------------------------------------------------------\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"eunrcn"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"eunrcn"},"content":" throw new SkylerException(\"Invalid \u0027view\u0027 command. Please provide a valid date in yyyy-MM-dd format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"eunrcn":121}},{"path":"src/main/java/skyler/main/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":" private static final String LINE \u003d \"------------------------------------------------------------\";","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":" public static void printGreeting(String chatbotName) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" /\\\\_/\\\\\");","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" ( o.o ) Hello! I\u0027m \" + chatbotName);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":" System.out.println(\" \u003e ^ \u003c What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" public static String getUserInput(Scanner scanner) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" System.out.print(\"You: \");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" return userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" public static void printByeMessage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" public static void printErrorMessage(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Skyler: Woof, \" + message);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"eunrcn":30}},{"path":"src/main/java/skyler/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" public Deadline(String description, LocalDate by, boolean isDone) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" public LocalDate getBy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" return by;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":24}},{"path":"src/main/java/skyler/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":" private LocalDate from;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" private LocalDate to;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" public Event(String description, LocalDate from, LocalDate to, boolean isDone) throws SkylerException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" public LocalDate getFrom() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" return from;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" public LocalDate getTo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" return to;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) +","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":30}},{"path":"src/main/java/skyler/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"public class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" return getStatusIcon() + \" \" + description;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":28}},{"path":"src/main/java/skyler/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":12}},{"path":"src/test/java/skyler/main/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.main;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":" public void processUserInput_eventCommand_addsEventTask() throws SkylerException {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" String userInput \u003d \"event Team meeting /from 2022-01-20 /to 2022-01-21\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" Parser.processUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" assertEquals(\"[E][ ] Team meeting (from: Jan 20 2022 to: Jan 21 2022)\", Storage.getTasks().get(0).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" public void processUserInput_invalidCommand_throwsSkylerException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" String userInput \u003d \"invalidCommand\";","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" assertThrows(SkylerException.class, () -\u003e Parser.processUserInput(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"eunrcn":24}},{"path":"src/test/java/skyler/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package skyler.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import skyler.exception.SkylerException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"public class EventTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" public void testEventToString() throws SkylerException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" LocalDate from \u003d LocalDate.of(2022, 2, 10);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" LocalDate to \u003d LocalDate.of(2022, 2, 15);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":" Event event \u003d new Event(\"Test Event\", from, to, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" String expectedString \u003d \"[E][ ] Test Event (from: Feb 10 2022 to: Feb 15 2022)\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedString, event.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"eunrcn":23}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"todo read a book","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"eunrcn":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":"eunrcn"},"content":"java -classpath ../bin Skyler \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"eunrcn":1,"-":37}}] diff --git a/eunrcn_ip_master/commits.json b/eunrcn_ip_master/commits.json index dbe9f9a7..35996e00 100644 --- a/eunrcn_ip_master/commits.json +++ b/eunrcn_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"eunrcn":[{"date":"2024-01-23","commitResults":[{"hash":"5e5ba625cddfb75b10925a1fc3dde7b12f768334","isMergeCommit":false,"messageTitle":"Base Version: Level 0 - Rename, Greet, Exit","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"af6b276a17829917c914a1a0f2d5f3349fa614bc","isMergeCommit":false,"messageTitle":"Level 1: Echo","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":10}}},{"hash":"36e08536a8178e5cd6017b78a4b9ebc9ed9fd186","isMergeCommit":false,"messageTitle":"Level 2: Add, List","messageBody":"","tags":["level-3","level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"5c4386e48d6282a5786685884e5c4b51ad21486d","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":10}}},{"hash":"653bf865c9c2fb1d76512f7d6ea9b59129ef93ed","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":21}}},{"hash":"c371a1b2c92bce8dc8ec42f5eb611e2bb62359c8","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated TextD UI Testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"8b191c89799da5322e9eb8a3f38ced37b0cd87a8","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["level-6","level-5"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":52}}},{"hash":"376a6ae55edfd500187f878e0e712347b6c5124c","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}}]},{"date":"2024-01-28","commitResults":[{"hash":"36660445eb006425d56cbb260173356a7769f84f","isMergeCommit":false,"messageTitle":"branch-level-7","messageBody":"","tags":["release-branch-level-7"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":24}}}]},{"date":"2024-01-29","commitResults":[{"hash":"89c981c0aedd48f721840efeaa8fd6b5a49ab4fe","isMergeCommit":false,"messageTitle":"branch-level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":79,"deletions":11}}},{"hash":"e6fabd87fbf77500485c5b941a8d6aa23f4be132","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"8e94d5850d5d677a69c20b9c0017847459a4188e","isMergeCommit":false,"messageTitle":"branch-level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":25,"deletions":10}}},{"hash":"1a4da02aaf069e2cc98222ecb1143237d9acd375","isMergeCommit":false,"messageTitle":"Teaching the chatbot to understand dates and times","messageBody":"Dates and times are crucial for accurate task management. Implementing Level 8 by storing deadline dates as java.time.LocalDate objects and accepting dates in yyyy-mm-dd format. Print dates in a more readable format (MMM dd yyyy). Additionally, added a command to view deadlines/events on a specific date. This improves the overall functionality and user experience of the chatbot.\n\nLevel 8. Dates and Times\n- Implemented storage of deadline dates as java.time.LocalDate.\n- Accepted dates in yyyy-mm-dd format and printed in MMM dd yyyy format.\n- Added a command to view deadlines/events on a specific date.\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":65,"deletions":26}}},{"hash":"b86fa0bb73631ba271783364ff8d8fdedfbb7dcb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5404c4e058448cb85293bddd9f4d2bd3ca16a529","isMergeCommit":false,"messageTitle":"phew","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":289,"deletions":248}}},{"hash":"7444cd0aafa944f99a879731b75a4b8e8637eadc","isMergeCommit":false,"messageTitle":"Refactor the code to extract out closely related code as classes","messageBody":"Extract the following classes:\n- Ui: Handles user interactions\n- Storage: Manages loading and saving tasks from/to the file\n- Parser: Processes user commands\n- TaskList: Manages the task list with add/delete operations\n\nThe code needs restructuring to improve modularity and readability. Each class now has a clear responsibility, making the code more maintainable.\n\nImplemented the extraction of related code into separate classes to enhance code organization and maintainability.\n\nEach class is designed to handle a specific aspect of the application, improving code cohesion and clarity.\n\nThe extraction is done to follow a more object-oriented design, promoting better code organization and ease of maintenance.\n\nAdditional info: The class names and responsibilities align with standard design principles, enhancing code understanding for future development.\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":45,"deletions":9}}},{"hash":"302a38fd1b65508dbd747a0da78875b304541db0","isMergeCommit":true,"messageTitle":"Merge A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"a9596a7b1e556c2df5bcdfa8c6ca04466d16bdd0","isMergeCommit":false,"messageTitle":"Added Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":0}}},{"hash":"01d18f17c6040734ca5b46cf66aee022f86ef389","isMergeCommit":false,"messageTitle":"Added Git.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}},{"hash":"3df37cf8f70e0a7bf42050b16d5282c09c049dd2","isMergeCommit":true,"messageTitle":"Merge A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"94e30f5220b40e00d48a21fb2beba730edcc8a45","isMergeCommit":true,"messageTitle":"Merge add-gradle-support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"eunrcn":{"java":435,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":25}},"authorContributionVariance":{"eunrcn":66426.59},"authorDisplayNameMap":{"eunrcn":"CS2103T-F14-1 EUNI..NING"}} +{"authorDailyContributionsMap":{"eunrcn":[{"date":"2024-01-23","commitResults":[{"hash":"5e5ba625cddfb75b10925a1fc3dde7b12f768334","isMergeCommit":false,"messageTitle":"Base Version: Level 0 - Rename, Greet, Exit","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"af6b276a17829917c914a1a0f2d5f3349fa614bc","isMergeCommit":false,"messageTitle":"Level 1: Echo","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":10}}},{"hash":"36e08536a8178e5cd6017b78a4b9ebc9ed9fd186","isMergeCommit":false,"messageTitle":"Level 2: Add, List","messageBody":"","tags":["level-3","level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"5c4386e48d6282a5786685884e5c4b51ad21486d","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":10}}},{"hash":"653bf865c9c2fb1d76512f7d6ea9b59129ef93ed","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":21}}},{"hash":"c371a1b2c92bce8dc8ec42f5eb611e2bb62359c8","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated TextD UI Testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"8b191c89799da5322e9eb8a3f38ced37b0cd87a8","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["level-6","level-5"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":52}}},{"hash":"376a6ae55edfd500187f878e0e712347b6c5124c","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}}]},{"date":"2024-01-28","commitResults":[{"hash":"36660445eb006425d56cbb260173356a7769f84f","isMergeCommit":false,"messageTitle":"branch-level-7","messageBody":"","tags":["release-branch-level-7"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":24}}}]},{"date":"2024-01-29","commitResults":[{"hash":"89c981c0aedd48f721840efeaa8fd6b5a49ab4fe","isMergeCommit":false,"messageTitle":"branch-level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":79,"deletions":11}}},{"hash":"e6fabd87fbf77500485c5b941a8d6aa23f4be132","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"8e94d5850d5d677a69c20b9c0017847459a4188e","isMergeCommit":false,"messageTitle":"branch-level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":25,"deletions":10}}},{"hash":"1a4da02aaf069e2cc98222ecb1143237d9acd375","isMergeCommit":false,"messageTitle":"Teaching the chatbot to understand dates and times","messageBody":"Dates and times are crucial for accurate task management. Implementing Level 8 by storing deadline dates as java.time.LocalDate objects and accepting dates in yyyy-mm-dd format. Print dates in a more readable format (MMM dd yyyy). Additionally, added a command to view deadlines/events on a specific date. This improves the overall functionality and user experience of the chatbot.\n\nLevel 8. Dates and Times\n- Implemented storage of deadline dates as java.time.LocalDate.\n- Accepted dates in yyyy-mm-dd format and printed in MMM dd yyyy format.\n- Added a command to view deadlines/events on a specific date.\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":65,"deletions":26}}},{"hash":"b86fa0bb73631ba271783364ff8d8fdedfbb7dcb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5404c4e058448cb85293bddd9f4d2bd3ca16a529","isMergeCommit":false,"messageTitle":"phew","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":289,"deletions":248}}},{"hash":"7444cd0aafa944f99a879731b75a4b8e8637eadc","isMergeCommit":false,"messageTitle":"Refactor the code to extract out closely related code as classes","messageBody":"Extract the following classes:\n- Ui: Handles user interactions\n- Storage: Manages loading and saving tasks from/to the file\n- Parser: Processes user commands\n- TaskList: Manages the task list with add/delete operations\n\nThe code needs restructuring to improve modularity and readability. Each class now has a clear responsibility, making the code more maintainable.\n\nImplemented the extraction of related code into separate classes to enhance code organization and maintainability.\n\nEach class is designed to handle a specific aspect of the application, improving code cohesion and clarity.\n\nThe extraction is done to follow a more object-oriented design, promoting better code organization and ease of maintenance.\n\nAdditional info: The class names and responsibilities align with standard design principles, enhancing code understanding for future development.\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":45,"deletions":9}}},{"hash":"302a38fd1b65508dbd747a0da78875b304541db0","isMergeCommit":true,"messageTitle":"Merge A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"a9596a7b1e556c2df5bcdfa8c6ca04466d16bdd0","isMergeCommit":false,"messageTitle":"Added Packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":0}}},{"hash":"01d18f17c6040734ca5b46cf66aee022f86ef389","isMergeCommit":false,"messageTitle":"Added Git.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}},{"hash":"3df37cf8f70e0a7bf42050b16d5282c09c049dd2","isMergeCommit":true,"messageTitle":"Merge A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"94e30f5220b40e00d48a21fb2beba730edcc8a45","isMergeCommit":true,"messageTitle":"Merge add-gradle-support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"eedc18868d0c1b260a600afcd15239575fa95a7a","isMergeCommit":false,"messageTitle":"Added JUnit tests that can be run with ./gradlew test","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":8,"deletions":1},"txt":{"insertions":1,"deletions":1},"java":{"insertions":49,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"eunrcn":{"java":483,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":8,"txt":25}},"authorContributionVariance":{"eunrcn":61160.24},"authorDisplayNameMap":{"eunrcn":"CS2103T-F14-1 EUNI..NING"}} diff --git a/fy17ohhh_ip_master/authorship.json b/fy17ohhh_ip_master/authorship.json index dfc32455..3bd48ecc 100644 --- a/fy17ohhh_ip_master/authorship.json +++ b/fy17ohhh_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/jade/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public enum Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" todo,","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" deadline,","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" event,","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" list,","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" mark,","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" unmark,","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" delete,","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" bye","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"fy17ohhh":12}},{"path":"src/main/java/jade/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" protected String deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" public Deadline(String description, String deadlineDate) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" this.deadlineDate \u003d deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),this.deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":" public String taskFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"D | %s | %s | %s\\n\", statusFormatter(), description, deadlineDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":20}},{"path":"src/main/java/jade/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" protected String startDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" protected String endDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" public Event(String description, String startDate, String endDate) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),this.startDate, this.endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" public String taskFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"E | %s | %s | %s - %s\\n\", statusFormatter(), description, startDate, endDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":22}},{"path":"src/main/java/jade/Jade.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"public class Jade {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" public String line \u003d \"\\t——————————————————————————————————————————\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" public String logo \u003d \"\\t ____ ___ ____ ______\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | / _ \\\\ | ___ \\\\ / |____/\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | | | | | | | | | | |____\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | | |_| | | | | | | |____|\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t|\\\\| | | ___ | | |__| | | |____\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t \\\\___| |_| |_| |_____/ \\\\_|____\\\\\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" private boolean exitProg \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":" private List\u003cTask\u003e userList;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":" Jade() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"fy17ohhh"},"content":" this.userList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"fy17ohhh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"fy17ohhh"},"content":" Jade myJade \u003d new Jade();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"fy17ohhh"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"fy17ohhh"},"content":" myJade.launch(scanner);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"fy17ohhh"},"content":" private void launch(Scanner scanner) {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s%s\\tHello, I\u0027m Jade\\n\\twhat can I do for you?\\n%s\", logo, line, line);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"fy17ohhh"},"content":" while(!this.exitProg) {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"fy17ohhh"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"fy17ohhh"},"content":" echo(command);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"fy17ohhh"},"content":" public void echo(String inputCommand) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"fy17ohhh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"fy17ohhh"},"content":" String[] command \u003d inputCommand.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"fy17ohhh"},"content":" Command commandHeader \u003d Command.valueOf(command[0]);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"fy17ohhh"},"content":" if (commandHeader.equals(Command.todo)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Sorry, your task to do cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"fy17ohhh"},"content":" addTodo(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.deadline)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"fy17ohhh"},"content":" addDeadline(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.event)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"fy17ohhh"},"content":" addEvent(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.list)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"fy17ohhh"},"content":" printList();","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.mark)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to mark Done.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"fy17ohhh"},"content":" markDone(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.unmark)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to unmark Done.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"fy17ohhh"},"content":" unmarkDone(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.delete)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to delete the task.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"fy17ohhh"},"content":" deleteTask(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.bye)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"fy17ohhh"},"content":" goodbye();","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"fy17ohhh"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Sorry, I don\u0027t have this command currently.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"fy17ohhh"},"content":" } catch (JadeException je) {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\t%s\\n%s\", line, je.getMessage(), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"fy17ohhh"},"content":" } catch (IllegalArgumentException iae) {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tInput is invalid, please retry. \\n%s\", line, line);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"fy17ohhh"},"content":" public void addTodo(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"fy17ohhh"},"content":" String todoDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, command.length));","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"fy17ohhh"},"content":" Task todoT \u003d new Todo(todoDescription);","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"fy17ohhh"},"content":" userList.add(todoT);","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, todoT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"fy17ohhh"},"content":" public void addDeadline(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"fy17ohhh"},"content":" String deadlineDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, Arrays.asList(command).indexOf(\"/by\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"fy17ohhh"},"content":" String deadlineDate \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/by\") + 1, command.length));","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"fy17ohhh"},"content":" Task deadlineT \u003d new Deadline(deadlineDescription, deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"fy17ohhh"},"content":" userList.add(deadlineT);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, deadlineT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"fy17ohhh"},"content":" public void addEvent(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"fy17ohhh"},"content":" String eventDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, Arrays.asList(command).indexOf(\"/from\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"fy17ohhh"},"content":" String startDate \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/from\") + 1, Arrays.asList(command).indexOf(\"/to\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"fy17ohhh"},"content":" String endDate \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/to\") + 1, command.length));","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"fy17ohhh"},"content":" Task eventT \u003d new Event(eventDescription, startDate, endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"fy17ohhh"},"content":" userList.add(eventT);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, eventT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"fy17ohhh"},"content":" public void printList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"fy17ohhh"},"content":" System.out.println(line + \"\\tHere are the task(s) in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"fy17ohhh"},"content":" for (int i \u003d 1; i \u003c\u003d userList.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"\\t%d. %s\\n\", i, userList.get(i-1));","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"fy17ohhh"},"content":" System.out.print(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"fy17ohhh"},"content":" public void markDone(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"fy17ohhh"},"content":" int indexMark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"fy17ohhh"},"content":" userList.get(indexMark-1).mark();","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tNice, I\u0027ve marked this task as done:\\n\\t %s\\n%s\", line, userList.get(indexMark-1), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"fy17ohhh"},"content":" public void unmarkDone(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"fy17ohhh"},"content":" int indexUnmark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"fy17ohhh"},"content":" userList.get(indexUnmark-1).unMark();","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tOK, I\u0027ve marked this task as not done yet:\\n\\t %s\\n%s\", line, userList.get(indexUnmark-1), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"fy17ohhh"},"content":" public void deleteTask(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"fy17ohhh"},"content":" int indexUnmark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"fy17ohhh"},"content":" Task deletedTask \u003d userList.get(indexUnmark-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"fy17ohhh"},"content":" userList.remove(indexUnmark-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tOK, I\u0027ve deleted this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, deletedTask, userList.size(), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"fy17ohhh"},"content":" public void goodbye() {","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tBye. Hope to see you again soon.\\n%s\",line,line);","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"fy17ohhh"},"content":" exitProg \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"fy17ohhh"},"content":" public String listFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"fy17ohhh"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"fy17ohhh"},"content":" for (Task task : userList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"fy17ohhh"},"content":" sb.append(task.taskFormatter());","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"fy17ohhh"},"content":" return sb.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"fy17ohhh"},"content":" private void saveChange() {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"fy17ohhh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"fy17ohhh"},"content":" Path dataDir \u003d java.nio.file.Paths.get(System.getProperty(\"user.dir\"), \"data\");","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"fy17ohhh"},"content":" File jadeDir \u003d new File(dataDir.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"fy17ohhh"},"content":" if (!jadeDir.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"fy17ohhh"},"content":" jadeDir.mkdir();","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"fy17ohhh"},"content":" Path dataFilePath \u003d java.nio.file.Paths.get(System.getProperty(\"user.dir\"), \"data\", \"jadeList.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"fy17ohhh"},"content":" File jadeList \u003d new File(dataFilePath.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"fy17ohhh"},"content":" if (!jadeList.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"fy17ohhh"},"content":" jadeList.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"fy17ohhh"},"content":" FileWriter jadeListWriter \u003d new FileWriter(jadeList);","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"fy17ohhh"},"content":" jadeListWriter.write(listFormatter());","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"fy17ohhh"},"content":" jadeListWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"fy17ohhh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"fy17ohhh"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":172}},{"path":"src/main/java/jade/JadeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class JadeException extends Exception{","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" public JadeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"fy17ohhh":7}},{"path":"src/main/java/jade/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":" protected String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" protected String statusFormatter() { return (isDone ? \"1\" : \"0\"); }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" protected void mark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":" protected void unMark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"fy17ohhh"},"content":" protected String taskFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"T | %s | %s\\n\", statusFormatter(), description);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[%s] %s\",this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":34}},{"path":"src/main/java/jade/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"todo read a book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"deadline complete assignment 2 /by tomorrow","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"event visit family /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"todo write homework 2","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":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":"fy17ohhh"},"content":"javac -cp ..\\src\\main\\java\\jade -Xlint:none -d ..\\bin ..\\src\\main\\java\\jade\\*.java","lastModifiedDate":"2024-01-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":"fy17ohhh"},"content":"java -classpath ..\\bin jade.Jade \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"fy17ohhh":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":"fy17ohhh"},"content":"if ! javac -cp ../src/main/java/jade -Xlint:none -d ../bin ../src/main/java/jade/*.java","lastModifiedDate":"2024-01-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":"fy17ohhh"},"content":"java -classpath ../bin jade.Jade \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"fy17ohhh":2,"-":36}}] +[{"path":"src/main/java/jade/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public enum Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" todo,","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" deadline,","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" event,","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" list,","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" mark,","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" unmark,","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" delete,","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" bye","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"fy17ohhh":12}},{"path":"src/main/java/jade/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" protected LocalDate deadlineDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" public Deadline(String description, LocalDate deadlineDate) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" this.deadlineDate \u003d deadlineDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" public String dateFormatter(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" public boolean isSameDate(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" return date.equals(deadlineDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), dateFormatter(deadlineDate));","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"fy17ohhh"},"content":" public String taskFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"D | %s | %s | %s\\n\", statusFormatter(), description, dateFormatter(deadlineDate));","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":32}},{"path":"src/main/java/jade/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" protected LocalDate startDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" protected LocalDate endDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" public Event(String description, LocalDate startDate, LocalDate endDate) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" public String dateFormatter(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":" public boolean isSameDate(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":" return (date.isBefore(endDate) \u0026\u0026 date.isAfter(startDate) || date.equals(startDate) || date.equals(endDate));","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), dateFormatter(startDate), dateFormatter(endDate));","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"fy17ohhh"},"content":" public String taskFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"E | %s | %s | %s - %s\\n\", statusFormatter(), description, dateFormatter(startDate), dateFormatter(endDate));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":34}},{"path":"src/main/java/jade/Jade.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":"public class Jade {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":" public String line \u003d \"\\t——————————————————————————————————————————\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":" public String logo \u003d \"\\t ____ ___ ____ ______\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | / _ \\\\ | ___ \\\\ / |____/\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | | | | | | | | | | |____\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t | | | |_| | | | | | | |____|\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t|\\\\| | | ___ | | |__| | | |____\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":" + \"\\t \\\\___| |_| |_| |_____/ \\\\_|____\\\\\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"fy17ohhh"},"content":" private boolean exitProg \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"fy17ohhh"},"content":" private List\u003cTask\u003e userList;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"fy17ohhh"},"content":" Jade() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"fy17ohhh"},"content":" this.userList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"fy17ohhh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"fy17ohhh"},"content":" Jade myJade \u003d new Jade();","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"fy17ohhh"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"fy17ohhh"},"content":" myJade.launch(scanner);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"fy17ohhh"},"content":" private void launch(Scanner scanner) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s%s\\tHello, I\u0027m Jade, your task manager.\\n\\tFeel free to set reminders for your task by entering text using the following format:\\n\\t\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"fy17ohhh"},"content":" \"1. todo {Task Description} -\u003e e.g. todo read a book\\n\\t\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"fy17ohhh"},"content":" \"2. deadline {Task Description} /by {yyyy-mm-dd} -\u003e e.g. deadline read a book /by 2024-12-31\\n\\t\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"fy17ohhh"},"content":" \"3. event {Task Description} /from {yyyy-mm-dd} /to {yyyy-mm-dd} -\u003e e.g. read a book /from 2024-12-30 /to 2024-12-31\\n%s\", logo, line, line);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"fy17ohhh"},"content":" while(!this.exitProg) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"fy17ohhh"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"fy17ohhh"},"content":" echo(command);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"fy17ohhh"},"content":" public void echo(String inputCommand) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"fy17ohhh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"fy17ohhh"},"content":" String[] command \u003d inputCommand.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"fy17ohhh"},"content":" Command commandHeader \u003d Command.valueOf(command[0]);","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"fy17ohhh"},"content":" if (commandHeader.equals(Command.todo)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Sorry, your task to do cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"fy17ohhh"},"content":" addTodo(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.deadline)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"fy17ohhh"},"content":" addDeadline(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.event)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"fy17ohhh"},"content":" addEvent(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.list)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"fy17ohhh"},"content":" String selectedDate \u003d command.length \u003d\u003d 1 ? \"\" : command[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"fy17ohhh"},"content":" printList(selectedDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.mark)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to mark Done.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"fy17ohhh"},"content":" markDone(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.unmark)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to unmark Done.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"fy17ohhh"},"content":" unmarkDone(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.delete)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"fy17ohhh"},"content":" if (command.length \u003d\u003d 1 || Integer.parseInt(command[1]) \u003e userList.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Please input a valid number to delete the task.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"fy17ohhh"},"content":" deleteTask(command[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"fy17ohhh"},"content":" } else if (commandHeader.equals(Command.bye)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"fy17ohhh"},"content":" goodbye();","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"fy17ohhh"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"fy17ohhh"},"content":" throw new JadeException(\"Sorry, I don\u0027t have this command currently.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"fy17ohhh"},"content":" } catch (JadeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\t%s\\n%s\", line, e.getMessage(), line);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"fy17ohhh"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tInput is invalid, please retry. \\n%s\", line, line);","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"fy17ohhh"},"content":" // System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"fy17ohhh"},"content":" public void addTodo(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"fy17ohhh"},"content":" String todoDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, command.length));","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"fy17ohhh"},"content":" Task todoT \u003d new Todo(todoDescription);","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"fy17ohhh"},"content":" userList.add(todoT);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, todoT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"fy17ohhh"},"content":" public void addDeadline(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"fy17ohhh"},"content":" String deadlineDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, Arrays.asList(command).indexOf(\"/by\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"fy17ohhh"},"content":" String deadline \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/by\") + 1, command.length));","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"fy17ohhh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"fy17ohhh"},"content":" LocalDate deadlineDate \u003d LocalDate.parse(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"fy17ohhh"},"content":" Task deadlineT \u003d new Deadline(deadlineDescription, deadlineDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"fy17ohhh"},"content":" userList.add(deadlineT);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, deadlineT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"fy17ohhh"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tPlease reenter the date in valid format!\\n%s\", line, line);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"fy17ohhh"},"content":" // System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"fy17ohhh"},"content":" public void addEvent(String[] command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"fy17ohhh"},"content":" String eventDescription \u003d String.join(\" \", Arrays.copyOfRange(command, 1, Arrays.asList(command).indexOf(\"/from\")));","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"fy17ohhh"},"content":" String start \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/from\") + 1, Arrays.asList(command).indexOf(\"/to\")));","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"fy17ohhh"},"content":" String end \u003d String.join(\" \", Arrays.copyOfRange(command, Arrays.asList(command).indexOf(\"/to\") + 1, command.length));","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"fy17ohhh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"fy17ohhh"},"content":" LocalDate startDate \u003d LocalDate.parse(start);","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"fy17ohhh"},"content":" LocalDate endDate \u003d LocalDate.parse(end);","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"fy17ohhh"},"content":" Task eventT \u003d new Event(eventDescription, startDate, endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"fy17ohhh"},"content":" userList.add(eventT);","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tGot it. I\u0027ve added this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, eventT, userList.size(), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"fy17ohhh"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%sPlease reenter the date in valid format!\\n%s\", line, line);","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"fy17ohhh"},"content":" // System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"fy17ohhh"},"content":" public void printList(String selectedDate) {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"fy17ohhh"},"content":" if (userList.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tYou have no tasks now :-|\\n%s\", line, line);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"fy17ohhh"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"fy17ohhh"},"content":" int count \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"fy17ohhh"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"fy17ohhh"},"content":" String dateString \u003d selectedDate.equals(\"\") ? \"\" : \" on \" + selectedDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"fy17ohhh"},"content":" sb.append(String.format(\"%s\\tHere are the task(s) in your list%s:\\n\", line, dateString));","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"fy17ohhh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"fy17ohhh"},"content":" for (int i \u003d 1; i \u003c\u003d userList.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"fy17ohhh"},"content":" if (!selectedDate.equals(\"\")) { // print tasks on a specific date","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"fy17ohhh"},"content":" // to identify the situation when user enters an invalid date","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"fy17ohhh"},"content":" LocalDate date \u003d LocalDate.parse(selectedDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"fy17ohhh"},"content":" if (userList.get(i-1).isSameDate(date)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"fy17ohhh"},"content":" sb.append(String.format(\"\\t%d. %s\\n\", i, userList.get(i-1)));","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"fy17ohhh"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"fy17ohhh"},"content":" } else { // print all tasks in list","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"fy17ohhh"},"content":" sb.append(String.format(\"\\t%d. %s\\n\", i, userList.get(i-1)));","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"fy17ohhh"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"fy17ohhh"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tThere are no tasks on %s\\n%s\", line, LocalDate.parse(selectedDate).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")), line);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"fy17ohhh"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"fy17ohhh"},"content":" sb.append(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"fy17ohhh"},"content":" System.out.print(sb.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"fy17ohhh"},"content":" } catch (DateTimeException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tPlease reenter the date in valid format!\\n%s\", line, line);","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"fy17ohhh"},"content":" public void markDone(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"fy17ohhh"},"content":" int indexMark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"fy17ohhh"},"content":" userList.get(indexMark-1).mark();","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tNice, I\u0027ve marked this task as done:\\n\\t %s\\n%s\", line, userList.get(indexMark-1), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"fy17ohhh"},"content":" public void unmarkDone(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"fy17ohhh"},"content":" int indexUnmark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"fy17ohhh"},"content":" userList.get(indexUnmark-1).unMark();","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tOK, I\u0027ve marked this task as not done yet:\\n\\t %s\\n%s\", line, userList.get(indexUnmark-1), line);","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"fy17ohhh"},"content":" public void deleteTask(String inputIndex) {","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"fy17ohhh"},"content":" int indexUnmark \u003d Integer.parseInt(inputIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"fy17ohhh"},"content":" Task deletedTask \u003d userList.get(indexUnmark-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"fy17ohhh"},"content":" userList.remove(indexUnmark-1);","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"fy17ohhh"},"content":" saveChange();","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tOK, I\u0027ve deleted this task:\\n\\t %s\\n\\tNow you have %d task(s) in the list.\\n%s\", line, deletedTask, userList.size(), line);","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"fy17ohhh"},"content":" public void goodbye() {","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"fy17ohhh"},"content":" System.out.printf(\"%s\\tBye. Hope to see you again soon.\\n%s\",line,line);","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"fy17ohhh"},"content":" exitProg \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"fy17ohhh"},"content":" public String listFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"fy17ohhh"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"fy17ohhh"},"content":" for (Task task : userList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"fy17ohhh"},"content":" sb.append(task.taskFormatter());","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"fy17ohhh"},"content":" return sb.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"fy17ohhh"},"content":" private void saveChange() {","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"fy17ohhh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"fy17ohhh"},"content":" Path dataDir \u003d java.nio.file.Paths.get(System.getProperty(\"user.dir\"), \"data\");","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"fy17ohhh"},"content":" File jadeDir \u003d new File(dataDir.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"fy17ohhh"},"content":" if (!jadeDir.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"fy17ohhh"},"content":" jadeDir.mkdir();","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"fy17ohhh"},"content":" Path dataFilePath \u003d java.nio.file.Paths.get(System.getProperty(\"user.dir\"), \"data\", \"jadeList.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"fy17ohhh"},"content":" File jadeList \u003d new File(dataFilePath.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"fy17ohhh"},"content":" if (!jadeList.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"fy17ohhh"},"content":" jadeList.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"fy17ohhh"},"content":" FileWriter jadeListWriter \u003d new FileWriter(jadeList);","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"fy17ohhh"},"content":" jadeListWriter.write(listFormatter());","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"fy17ohhh"},"content":" jadeListWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"fy17ohhh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"fy17ohhh"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":220}},{"path":"src/main/java/jade/JadeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class JadeException extends Exception{","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" public JadeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"fy17ohhh":7}},{"path":"src/main/java/jade/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"fy17ohhh"},"content":" protected String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"fy17ohhh"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"fy17ohhh"},"content":" protected String statusFormatter() { return (isDone ? \"1\" : \"0\"); }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"fy17ohhh"},"content":" protected void mark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"fy17ohhh"},"content":" protected void unMark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"fy17ohhh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"fy17ohhh"},"content":" public boolean isSameDate(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"fy17ohhh"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"fy17ohhh"},"content":" public String taskFormatter() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"T | %s | %s\\n\", statusFormatter(), description);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[%s] %s\",this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":41}},{"path":"src/main/java/jade/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"package jade;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"fy17ohhh"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"fy17ohhh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"fy17ohhh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"fy17ohhh"},"content":"todo read a book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"fy17ohhh"},"content":"deadline complete assignment 2 /by tomorrow","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"fy17ohhh"},"content":"event visit family /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"fy17ohhh"},"content":"todo write homework 2","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"fy17ohhh"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"fy17ohhh"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"fy17ohhh"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"fy17ohhh"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"fy17ohhh"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"fy17ohhh":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":"fy17ohhh"},"content":"javac -cp ..\\src\\main\\java\\jade -Xlint:none -d ..\\bin ..\\src\\main\\java\\jade\\*.java","lastModifiedDate":"2024-01-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":"fy17ohhh"},"content":"java -classpath ..\\bin jade.Jade \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"fy17ohhh":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":"fy17ohhh"},"content":"if ! javac -cp ../src/main/java/jade -Xlint:none -d ../bin ../src/main/java/jade/*.java","lastModifiedDate":"2024-01-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":"fy17ohhh"},"content":"java -classpath ../bin jade.Jade \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"fy17ohhh":2,"-":36}}] diff --git a/fy17ohhh_ip_master/commits.json b/fy17ohhh_ip_master/commits.json index c7c86264..9ee5e528 100644 --- a/fy17ohhh_ip_master/commits.json +++ b/fy17ohhh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"fy17ohhh":[{"date":"2024-01-23","commitResults":[{"hash":"35373e385dfb39a454dd7fdbf38c3487197760c5","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"11c0b4a3d515dfe7a87d22e74aa1fcb45a26f17d","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"94fa549f34239e99fd256efc80baa3c68dfea759","isMergeCommit":false,"messageTitle":"Add,List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"2dec2a08b3ff1814befdf4e9159b8e5ca4a09b1f","isMergeCommit":false,"messageTitle":"Use a class to represent tasks","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":46}}},{"hash":"e2b59ce6f09488a9e96ec0ddddc0882590a97262","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":0}}},{"hash":"0ffd67bc2e236231d9d8f2efe31dbcfa45b9ca91","isMergeCommit":false,"messageTitle":"Use Inheritance to support multiple task types","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0}}},{"hash":"78be716e221792128cad184258c6c50dd7b59f49","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"40f69e9b79547b371f8a918a35c83fb4b64adc44","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"78086ceeb808c40af0d87be902bb9bf39217f2db","isMergeCommit":false,"messageTitle":"update Class Name and Test Files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}},{"hash":"732f6a3f0cd7925a1f201cb0a9c5cb826166fb41","isMergeCommit":false,"messageTitle":"Added custom exception class","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"ee4b6cd7464759f563fa4d987315949c5a2d3f79","isMergeCommit":false,"messageTitle":"Refactored code and add new feature to handle incorrect inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":63}}},{"hash":"5efa42385899102a5dd8dfaf378503ecd32dcda1","isMergeCommit":false,"messageTitle":"Add support for deleting tasks","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"1330325fded3171d811f933cc22bf3bf9244da01","isMergeCommit":false,"messageTitle":"Use Enums for Commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":9}}}]},{"date":"2024-01-30","commitResults":[{"hash":"35d77ccf0138c0cbaf107c0e7ac534b983310484","isMergeCommit":false,"messageTitle":"Add feature to save change in harddisk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":9}}},{"hash":"a97ad9586b03528e85166ef3b3e23a44ca35b37c","isMergeCommit":true,"messageTitle":"Merge Level-7 to master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"fy17ohhh":{"java":279,"md":0,"fxml":0,"sh":2,"bat":2,"gradle":0,"txt":9}},"authorContributionVariance":{"fy17ohhh":7760.8335},"authorDisplayNameMap":{"fy17ohhh":"SHAN..YANG"}} +{"authorDailyContributionsMap":{"fy17ohhh":[{"date":"2024-01-23","commitResults":[{"hash":"35373e385dfb39a454dd7fdbf38c3487197760c5","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"11c0b4a3d515dfe7a87d22e74aa1fcb45a26f17d","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":7}}}]},{"date":"2024-01-24","commitResults":[{"hash":"94fa549f34239e99fd256efc80baa3c68dfea759","isMergeCommit":false,"messageTitle":"Add,List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"2dec2a08b3ff1814befdf4e9159b8e5ca4a09b1f","isMergeCommit":false,"messageTitle":"Use a class to represent tasks","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":46}}},{"hash":"e2b59ce6f09488a9e96ec0ddddc0882590a97262","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":0}}},{"hash":"0ffd67bc2e236231d9d8f2efe31dbcfa45b9ca91","isMergeCommit":false,"messageTitle":"Use Inheritance to support multiple task types","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0}}},{"hash":"78be716e221792128cad184258c6c50dd7b59f49","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"40f69e9b79547b371f8a918a35c83fb4b64adc44","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"78086ceeb808c40af0d87be902bb9bf39217f2db","isMergeCommit":false,"messageTitle":"update Class Name and Test Files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}},{"hash":"732f6a3f0cd7925a1f201cb0a9c5cb826166fb41","isMergeCommit":false,"messageTitle":"Added custom exception class","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"ee4b6cd7464759f563fa4d987315949c5a2d3f79","isMergeCommit":false,"messageTitle":"Refactored code and add new feature to handle incorrect inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":63}}},{"hash":"5efa42385899102a5dd8dfaf378503ecd32dcda1","isMergeCommit":false,"messageTitle":"Add support for deleting tasks","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"1330325fded3171d811f933cc22bf3bf9244da01","isMergeCommit":false,"messageTitle":"Use Enums for Commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":9}}}]},{"date":"2024-01-30","commitResults":[{"hash":"35d77ccf0138c0cbaf107c0e7ac534b983310484","isMergeCommit":false,"messageTitle":"Add feature to save change in harddisk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":9}}},{"hash":"a97ad9586b03528e85166ef3b3e23a44ca35b37c","isMergeCommit":true,"messageTitle":"Merge Level-7 to master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"d0e7da85d1e42f1fe6355f28424513b3dbd6edd3","isMergeCommit":false,"messageTitle":"Use LocalDate for dates in tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":11}}},{"hash":"4e3089f9a9625712268341be067264e8e3f40f6f","isMergeCommit":false,"messageTitle":"Print dates in format and tasks on a specific date","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":21}}},{"hash":"9aa55d992802399881fbc37450e8deed4e0c8f8f","isMergeCommit":true,"messageTitle":"Merge Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"fy17ohhh":{"java":358,"md":0,"fxml":0,"sh":2,"bat":2,"gradle":0,"txt":9}},"authorContributionVariance":{"fy17ohhh":9871.075},"authorDisplayNameMap":{"fy17ohhh":"SHAN..YANG"}} diff --git a/guohuang88_ip_master/commits.json b/guohuang88_ip_master/commits.json index e9ce70c0..b57bf3a1 100644 --- a/guohuang88_ip_master/commits.json +++ b/guohuang88_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"guohuang88":[{"date":"2024-01-23","commitResults":[{"hash":"4a3badda30c4a7f09e69b0984e5e2ec48077a92d","isMergeCommit":false,"messageTitle":"Completed Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}}]},{"date":"2024-01-24","commitResults":[{"hash":"14ff4a822c05e7d32e2dc0fd32e51248ea35c7c1","isMergeCommit":false,"messageTitle":"Completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"1c2e439f233eded71015b827a0d041eb6f131424","isMergeCommit":false,"messageTitle":"Completed Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"318e002d4c059046cb4830463629715ec523ecf2","isMergeCommit":false,"messageTitle":"Completed Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":5}}}]},{"date":"2024-01-25","commitResults":[{"hash":"521b86adbf1c96dfd7cf089366c6cf2e18caed64","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":130,"deletions":4}}},{"hash":"8e9b51d460d75b675637898af0290c771a090d1a","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"b40b5302cb62700afa2ad28b665a5eb6833695b1","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":42}}},{"hash":"462cc0085cb1ad96fba3efa23490a59edd0d81ac","isMergeCommit":false,"messageTitle":"Completed Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"e5b41cd92771f7e43b642fcce393a7a6fbd85747","isMergeCommit":false,"messageTitle":"Completed A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":22}}}]},{"date":"2024-01-28","commitResults":[{"hash":"cb91dc6401b8ee4104267b6ce0d7c5804983d6cf","isMergeCommit":false,"messageTitle":"Add save task ability, load data ability and update javadoc","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":134,"deletions":26}}},{"hash":"931f810a1d1580c134d29b838da421626cbded05","isMergeCommit":false,"messageTitle":"Add JavaDoc for DukeException class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"add0b3189aed7c219fb88f466c3447d944562a18","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"guohuang88":{"java":380,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"guohuang88":11953.041},"authorDisplayNameMap":{"guohuang88":"LI G..UANG"}} +{"authorDailyContributionsMap":{"guohuang88":[{"date":"2024-01-23","commitResults":[{"hash":"4a3badda30c4a7f09e69b0984e5e2ec48077a92d","isMergeCommit":false,"messageTitle":"Completed Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}}]},{"date":"2024-01-24","commitResults":[{"hash":"14ff4a822c05e7d32e2dc0fd32e51248ea35c7c1","isMergeCommit":false,"messageTitle":"Completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"1c2e439f233eded71015b827a0d041eb6f131424","isMergeCommit":false,"messageTitle":"Completed Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"318e002d4c059046cb4830463629715ec523ecf2","isMergeCommit":false,"messageTitle":"Completed Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":5}}}]},{"date":"2024-01-25","commitResults":[{"hash":"521b86adbf1c96dfd7cf089366c6cf2e18caed64","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":130,"deletions":4}}},{"hash":"8e9b51d460d75b675637898af0290c771a090d1a","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"b40b5302cb62700afa2ad28b665a5eb6833695b1","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":42}}},{"hash":"462cc0085cb1ad96fba3efa23490a59edd0d81ac","isMergeCommit":false,"messageTitle":"Completed Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"e5b41cd92771f7e43b642fcce393a7a6fbd85747","isMergeCommit":false,"messageTitle":"Completed A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":22}}}]},{"date":"2024-01-28","commitResults":[{"hash":"cb91dc6401b8ee4104267b6ce0d7c5804983d6cf","isMergeCommit":false,"messageTitle":"Add save task ability, load data ability and update javadoc","messageBody":"","tags":["branch-Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":134,"deletions":26}}},{"hash":"931f810a1d1580c134d29b838da421626cbded05","isMergeCommit":false,"messageTitle":"Add JavaDoc for DukeException class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"add0b3189aed7c219fb88f466c3447d944562a18","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"guohuang88":{"java":380,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"guohuang88":11953.041},"authorDisplayNameMap":{"guohuang88":"LI G..UANG"}} diff --git a/hiivan_ip_master/authorship.json b/hiivan_ip_master/authorship.json index 03265d56..ee439c97 100644 --- a/hiivan_ip_master/authorship.json +++ b/hiivan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/huyang_tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"D | 1 | read NGT readings | 2024-01-31T14:00:00","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"T | 0 | Read a book","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"E | 0 | Project meeting | 2023-03-20T14:00:00 to 2023-03-20T16:00:00","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"hiivan":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" public Deadline(String taskName, LocalDateTime by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" private String getTypeIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" return \"[D]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + taskName + \" | \" + by.format(formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" public static Deadline fromFileFormat(String fileFormat) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" String[] parts \u003d fileFormat.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" throw TaskException.forInvalidTaskFormat(\"ToDo\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" LocalDateTime byTime \u003d LocalDateTime.parse(parts[3], DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" Deadline deadline \u003d new Deadline(parts[2], byTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" deadline.check();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" return deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" return getTypeIcon() + super.getStatusIcon() + \" \" + taskName","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"hiivan":40}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" public Event(String taskName, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" private String getTypeIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" return \"[E]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + taskName + \" | \" + start.format(formatter) + \" to \" + end.format(formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" public static Event fromFileFormat(String fileFormat) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" String[] parts \u003d fileFormat.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" String[] times \u003d parts[3].split(\" to \"); // Split by \" to \"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" LocalDateTime start \u003d LocalDateTime.parse(times[0], DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" LocalDateTime end \u003d LocalDateTime.parse(times[1], DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" Event event \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" event.check();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" return event;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" return getTypeIcon() + super.getStatusIcon() + \" \" + taskName +","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":" \" (from: \" + start.format(formatter) + \" to: \" + end.format(formatter) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hiivan":44}},{"path":"src/main/java/Huyang.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"public class Huyang {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" private Parser parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" public Huyang() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" this.storage \u003d new Storage(\"./data/huyang_tasks.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" this.tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" } catch (IOException | TaskException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" ui.printErrorMessage(\"Error initializing tasks: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" this.tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" ui.greet();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" Parser.CommandType command \u003d parser.parseCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" boolean isChanged \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" switch (command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" case LIST:","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" ui.showTasks(tasks.getTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" case MARK:","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" case UNMARK:","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" isChanged \u003d tasks.markOrUnmarkTask(input, command, ui);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":" case TODO:","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" case EVENT:","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" isChanged \u003d tasks.addTask(input, command, ui);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" case DELETE:","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" isChanged \u003d tasks.deleteTask(input, ui);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" case BYE:","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" isExit \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" case UNKNOWN:","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" ui.printUnknownCommandMessage();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" } catch (TaskException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"hiivan"},"content":" if (isChanged) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"hiivan"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"hiivan"},"content":" } catch (IOException | TaskException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"hiivan"},"content":" ui.printErrorMessage(\"Error saving tasks: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"hiivan"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"hiivan"},"content":" ui.farewell();","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"hiivan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"hiivan"},"content":" new Huyang().run();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"hiivan":78}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":" public enum CommandType {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":" LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, BYE, UNKNOWN;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":" public CommandType parseCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" return CommandType.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" return CommandType.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" return CommandType.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"todo \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" return CommandType.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"deadline \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" return CommandType.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"event \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" return CommandType.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"delete \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" return CommandType.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" return CommandType.BYE;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" return CommandType.UNKNOWN;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"hiivan":27}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" private String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws IOException, TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" try (BufferedReader br \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" String line;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" tasks.add(parseLineToTask(line));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) throws IOException, TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" try (BufferedWriter bw \u003d new BufferedWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" bw.write(task.toFileFormat());","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" bw.newLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":" private Task parseLineToTask(String line) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" String type \u003d line.substring(0, 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" switch (type) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" return ToDo.fromFileFormat(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" return Deadline.fromFileFormat(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" return Event.fromFileFormat(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Unknown task type in file: \" + type);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"hiivan":56}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":" protected String taskName;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" public void check() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" public void uncheck() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" return getStatusIcon() + \" \" + taskName;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" public abstract String toFileFormat();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"hiivan":28}},{"path":"src/main/java/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"public class TaskException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":" public TaskException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":" public static TaskException forEmptyTaskDescription() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" return new TaskException(\"A task description is required. Please try adding a task with a description.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" public static TaskException forInvalidTaskFormat(String taskType) {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" return new TaskException(\"The format for the \" + taskType + \" task is incorrect. Please check and try again.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" public static TaskException forUnknownCommand() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" return new TaskException(\"Sorry, invalid command. Please try again.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" public static TaskException forInvalidTaskNumber() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" return new TaskException(\"Invalid task number. Please check and try again.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hiivan":22}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" public boolean addTask(String input, Parser.CommandType commandType, Ui ui) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" task \u003d createTodoTask(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" task \u003d createDeadlineTask(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" task \u003d createEventTask(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" ui.printAddedTask(task, tasks.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" public boolean markOrUnmarkTask(String input, Parser.CommandType commandType, Ui ui) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" int taskNumber \u003d parseTaskNumber(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" if (commandType \u003d\u003d Parser.CommandType.MARK) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":" task.check();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" ui.printMarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" task.uncheck();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" ui.printUnmarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" public boolean deleteTask(String input, Ui ui) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" int taskNumber \u003d parseTaskNumber(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" Task removedTask \u003d tasks.remove(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" ui.printDeletedTask(removedTask, tasks.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" private int parseTaskNumber(String input) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"hiivan"},"content":" int taskNumber \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"hiivan"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Invalid task number. Please check and try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"hiivan"},"content":" return taskNumber;","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"hiivan"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Invalid task number format. Please enter a valid number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"hiivan"},"content":" private ToDo createTodoTask(String input) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"hiivan"},"content":" if (input.strip().length() \u003c\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"hiivan"},"content":" throw TaskException.forEmptyTaskDescription();","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"hiivan"},"content":" return new ToDo(input.substring(5).trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"hiivan"},"content":" private Deadline createDeadlineTask(String input) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"hiivan"},"content":" if (input.strip().length() \u003c\u003d 9) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"hiivan"},"content":" throw TaskException.forEmptyTaskDescription();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"hiivan"},"content":" int byIndex \u003d input.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"hiivan"},"content":" if (byIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"hiivan"},"content":" throw TaskException.forInvalidTaskFormat(\"deadline\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"hiivan"},"content":" String description \u003d input.substring(9, byIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"hiivan"},"content":" String by \u003d input.substring(byIndex + 4).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"hiivan"},"content":" LocalDateTime byTime \u003d LocalDateTime.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"hiivan"},"content":" return new Deadline(description, byTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"hiivan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Invalid date format. Please use YYYY-MM-DD HHMM, e.g., 2020-12-02 1800.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"hiivan"},"content":" private Event createEventTask(String input) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"hiivan"},"content":" if (input.strip().length() \u003c\u003d 6) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"hiivan"},"content":" throw TaskException.forEmptyTaskDescription();","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"hiivan"},"content":" int fromIndex \u003d input.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"hiivan"},"content":" int toIndex \u003d input.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"hiivan"},"content":" if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"hiivan"},"content":" throw TaskException.forInvalidTaskFormat(\"event\");","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"hiivan"},"content":" String description \u003d input.substring(6, fromIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"hiivan"},"content":" String start \u003d input.substring(fromIndex + 6, toIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"hiivan"},"content":" String end \u003d input.substring(toIndex + 4).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"hiivan"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(start, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"hiivan"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(end, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"hiivan"},"content":" return new Event(description, startTime, endTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"hiivan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Invalid date format. Please use YYYY-MM-DD HHMM, e.g., 2020-12-02 1800.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"hiivan"},"content":" private void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"hiivan"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"hiivan"},"content":" // Other utility methods as needed...","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"hiivan":121}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":" public ToDo(String taskName) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":" private String getTypeIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" return \"[T]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" public static ToDo fromFileFormat(String fileFormat) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" String[] parts \u003d fileFormat.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" throw TaskException.forInvalidTaskFormat(\"ToDo\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" ToDo todo \u003d new ToDo(parts[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" todo.check();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" return todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" return getTypeIcon() + super.getStatusIcon() + \" \" + taskName;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hiivan":31}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" public Ui() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" public void greet() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Hello! I\u0027m Huyang\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" public void printErrorMessage(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" System.err.println(\"Error: \" + message);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" public void printUnknownCommandMessage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" System.out.println(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" public void farewell() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" public void printAddedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" public void printMarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" public void printUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" public void printDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" public void showTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" System.out.println(\"You have no tasks in your list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"hiivan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"hiivan"},"content":" System.out.println((i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"hiivan":64}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"delete 2","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"invalid command","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"delete 6","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"deadline nothing","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hiivan":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":"hiivan"},"content":"java -classpath ..\\bin Huyang \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"hiivan":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":"hiivan"},"content":"java -classpath ../bin Huyang \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"hiivan":1,"-":37}}] +[{"path":"data/huyang_tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"D | 1 | read NGT readings | 2024-01-31T14:00:00","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"T | 0 | Read a book","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"E | 0 | Project meeting | 2023-03-20T14:00:00 to 2023-03-20T16:00:00","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"hiivan":3}},{"path":"src/main/java/huyang/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" public Deadline(String taskName, LocalDateTime by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" private String getTypeIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" return \"[D]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" public LocalDateTime getTime() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + taskName + \" | \" + by.format(formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" public static Deadline fromFileFormat(String fileFormat) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" String[] parts \u003d fileFormat.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" throw TaskException.forInvalidTaskFormat(\"ToDo\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" LocalDateTime byTime \u003d LocalDateTime.parse(parts[3], DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" Deadline deadline \u003d new Deadline(parts[2], byTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" deadline.check();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" return deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" return getTypeIcon() + super.getStatusIcon() + \" \" + taskName","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"hiivan":46}},{"path":"src/main/java/huyang/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" public Event(String taskName, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" public LocalDateTime getStart() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" return start;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" public LocalDateTime getEnd() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" return end;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" private String getTypeIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" return \"[E]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ISO_LOCAL_DATE_TIME;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + taskName + \" | \" + start.format(formatter) + \" to \" + end.format(formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" public static Event fromFileFormat(String fileFormat) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" String[] parts \u003d fileFormat.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" String[] times \u003d parts[3].split(\" to \"); // Split by \" to \"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" LocalDateTime start \u003d LocalDateTime.parse(times[0], DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":" LocalDateTime end \u003d LocalDateTime.parse(times[1], DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" Event event \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" event.check();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" return event;","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Invalid date format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" return getTypeIcon() + super.getStatusIcon() + \" \" + taskName +","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" \" (from: \" + start.format(formatter) + \" to: \" + end.format(formatter) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hiivan":59}},{"path":"src/main/java/huyang/Huyang.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"public class Huyang {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" private Parser parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" public Huyang() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" this.storage \u003d new Storage(\"./data/huyang_tasks.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" this.tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" } catch (IOException | TaskException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" ui.printErrorMessage(\"Error initializing tasks: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" this.tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" ui.greet();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" Parser.CommandType command \u003d parser.parseCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" boolean isChanged \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" switch (command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" case LIST:","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" ui.showTasks(tasks.getTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" case MARK:","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" case UNMARK:","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":" isChanged \u003d tasks.markOrUnmarkTask(input, command, ui);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" case TODO:","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" case EVENT:","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" isChanged \u003d tasks.addTask(input, command, ui);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" case DELETE:","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" isChanged \u003d tasks.deleteTask(input, ui);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" case BYE:","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" isExit \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" case UNKNOWN:","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" ui.printUnknownCommandMessage();","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"hiivan"},"content":" } catch (TaskException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"hiivan"},"content":" ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"hiivan"},"content":" if (isChanged) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"hiivan"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"hiivan"},"content":" } catch (IOException | TaskException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"hiivan"},"content":" ui.printErrorMessage(\"Error saving tasks: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"hiivan"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"hiivan"},"content":" ui.farewell();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"hiivan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"hiivan"},"content":" new Huyang().run();","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"hiivan":80}},{"path":"src/main/java/huyang/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":" public enum CommandType {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":" LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, BYE, UNKNOWN;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" public CommandType parseCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" input \u003d input.toLowerCase();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" return CommandType.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" return CommandType.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" return CommandType.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"todo \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" return CommandType.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"deadline \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" return CommandType.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"event \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" return CommandType.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" } else if (input.startsWith(\"delete \")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" return CommandType.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" return CommandType.BYE;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" return CommandType.UNKNOWN;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"hiivan":30}},{"path":"src/main/java/huyang/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" private String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" public ArrayList\u003cTask\u003e loadTasks() throws IOException, TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" try (BufferedReader br \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" String line;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" tasks.add(parseLineToTask(line));","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) throws IOException, TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" try (BufferedWriter bw \u003d new BufferedWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" bw.write(task.toFileFormat());","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" bw.newLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" private Task parseLineToTask(String line) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" String type \u003d line.substring(0, 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" switch (type) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" return ToDo.fromFileFormat(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" return Deadline.fromFileFormat(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" return Event.fromFileFormat(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Unknown task type in file: \" + type);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"hiivan":57}},{"path":"src/main/java/huyang/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":" protected String taskName;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" public void check() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" public void uncheck() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" return this.isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" return this.taskName;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" return getStatusIcon() + \" \" + taskName;","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" public abstract String toFileFormat();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"hiivan":40}},{"path":"src/main/java/huyang/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"public class TaskException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":" public TaskException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" public static TaskException forEmptyTaskDescription() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" return new TaskException(\"A task description is required. Please try adding a task with a description.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" public static TaskException forInvalidTaskFormat(String taskType) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" return new TaskException(\"The format for the \" + taskType + \" task is incorrect. Please check and try again.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" public static TaskException forUnknownCommand() { ","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" return new TaskException(\"Sorry, invalid command. Please try again.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" public static TaskException forInvalidTaskNumber() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" return new TaskException(\"Invalid task number. Please check and try again.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hiivan":24}},{"path":"src/main/java/huyang/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" public boolean addTask(String input, Parser.CommandType commandType, Ui ui) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" task \u003d createTodoTask(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" task \u003d createDeadlineTask(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" task \u003d createEventTask(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" ui.printAddedTask(task, tasks.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" public boolean markOrUnmarkTask(String input, Parser.CommandType commandType, Ui ui) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" int taskNumber \u003d parseTaskNumber(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" Task task \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" if (commandType \u003d\u003d Parser.CommandType.MARK) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" task.check();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" ui.printMarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" task.uncheck();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" ui.printUnmarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" public boolean deleteTask(String input, Ui ui) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" int taskNumber \u003d parseTaskNumber(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" Task removedTask \u003d tasks.remove(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" ui.printDeletedTask(removedTask, tasks.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"hiivan"},"content":" private int parseTaskNumber(String input) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"hiivan"},"content":" int taskNumber \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"hiivan"},"content":" if (taskNumber \u003c 1 || taskNumber \u003e tasks.size()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Invalid task number. Please check and try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"hiivan"},"content":" return taskNumber;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"hiivan"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Invalid task number format. Please enter a valid number.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"hiivan"},"content":" private ToDo createTodoTask(String input) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"hiivan"},"content":" if (input.strip().length() \u003c\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"hiivan"},"content":" throw TaskException.forEmptyTaskDescription();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"hiivan"},"content":" return new ToDo(input.substring(5).trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"hiivan"},"content":" private Deadline createDeadlineTask(String input) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"hiivan"},"content":" if (input.strip().length() \u003c\u003d 9) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"hiivan"},"content":" throw TaskException.forEmptyTaskDescription();","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"hiivan"},"content":" int byIndex \u003d input.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"hiivan"},"content":" if (byIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"hiivan"},"content":" throw TaskException.forInvalidTaskFormat(\"deadline\");","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"hiivan"},"content":" String description \u003d input.substring(9, byIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"hiivan"},"content":" String by \u003d input.substring(byIndex + 4).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"hiivan"},"content":" LocalDateTime byTime \u003d LocalDateTime.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"hiivan"},"content":" return new Deadline(description, byTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"hiivan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Invalid date format. Please use YYYY-MM-DD HHMM, e.g., 2020-12-02 1800.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"hiivan"},"content":" private Event createEventTask(String input) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"hiivan"},"content":" if (input.strip().length() \u003c\u003d 6) {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"hiivan"},"content":" throw TaskException.forEmptyTaskDescription();","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"hiivan"},"content":" int fromIndex \u003d input.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"hiivan"},"content":" int toIndex \u003d input.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"hiivan"},"content":" if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"hiivan"},"content":" throw TaskException.forInvalidTaskFormat(\"event\");","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"hiivan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"hiivan"},"content":" String description \u003d input.substring(6, fromIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"hiivan"},"content":" String start \u003d input.substring(fromIndex + 6, toIndex).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"hiivan"},"content":" String end \u003d input.substring(toIndex + 4).trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"hiivan"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(start, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"hiivan"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(end, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"hiivan"},"content":" return new Event(description, startTime, endTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"hiivan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"hiivan"},"content":" throw new TaskException(\"Invalid date format. Please use YYYY-MM-DD HHMM, e.g., 2020-12-02 1800.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"hiivan"},"content":" private void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"hiivan"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"hiivan":121}},{"path":"src/main/java/huyang/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":" public ToDo(String taskName) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" private String getTypeIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" return \"[T]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" public static ToDo fromFileFormat(String fileFormat) throws TaskException {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" String[] parts \u003d fileFormat.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" throw TaskException.forInvalidTaskFormat(\"ToDo\");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" ToDo todo \u003d new ToDo(parts[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" todo.check();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" return todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" return getTypeIcon() + super.getStatusIcon() + \" \" + taskName;","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hiivan":33}},{"path":"src/main/java/huyang/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" public Ui() {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" public void greet() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Hello! I\u0027m Huyang\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" public void printErrorMessage(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" System.err.println(\"Error: \" + message);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" public void printUnknownCommandMessage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" System.out.println(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" public void farewell() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" public void printAddedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" public void printMarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" public void printUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" public void printDeletedTask(Task task, int taskCount) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" public void showTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" System.out.println(\"You have no tasks in your list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"hiivan"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"hiivan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"hiivan"},"content":" System.out.println((i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"hiivan":66}},{"path":"src/test/java/huyang/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"public class EventTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" public void testFromFileFormat_ValidInput_ReturnsEvent() throws TaskException {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" String input \u003d \"E | 0 | Project meeting | 2024-01-31T14:00:00 to 2024-01-31T16:00:00\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" Event event \u003d Event.fromFileFormat(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" assertEquals(\"Project meeting\", event.getTaskName());","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" assertEquals(LocalDateTime.of(2024, 1, 31, 14, 0), event.getStart());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" assertEquals(LocalDateTime.of(2024, 1, 31, 16, 0), event.getEnd());","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" assertFalse(event.isDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" public void testFromFileFormat_InvalidDateTimeFormat_ThrowsTaskException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" String input \u003d \"E | 0 | Project meeting | NotADateTime to NotADateTime\";","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" assertThrows(TaskException.class, () -\u003e Event.fromFileFormat(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" public void testToString_ReturnsFormattedString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" LocalDateTime start \u003d LocalDateTime.of(2024, 1, 31, 14, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" LocalDateTime end \u003d LocalDateTime.of(2024, 1, 31, 16, 0);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" Event event \u003d new Event(\"Project meeting\", start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" String expectedString \u003d \"[E][ ] Project meeting (from: Jan 31 2024 14:00 to: Jan 31 2024 16:00)\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" assertEquals(expectedString, event.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"hiivan":36}},{"path":"src/test/java/huyang/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package huyang;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" public void testParseCommand_ByeCommand_ReturnsByeCommandType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.BYE, new Parser().parseCommand(\"bye\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" public void testParseCommand_ListCommand_ReturnsListCommandType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.LIST, new Parser().parseCommand(\"list\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" public void testParseCommand_MarkCommand_ReturnsMarkCommandType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.MARK, new Parser().parseCommand(\"mark 1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.MARK, new Parser().parseCommand(\"maRK 1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" public void testParseCommand_UnmarkCommand_ReturnsUnmarkCommandType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.UNMARK, new Parser().parseCommand(\"unmark 1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.UNMARK, new Parser().parseCommand(\"UnMaRk 1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" public void testParseCommand_TodoCommand_ReturnsTodoCommandType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.TODO, new Parser().parseCommand(\"todo read book\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" public void testParseCommand_DeadlineCommand_ReturnsDeadlineCommandType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.DEADLINE, new Parser().parseCommand(\"deadline return book /by 2020-12-12 1800\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" public void testParseCommand_EventCommand_ReturnsEventCommandType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.EVENT, new Parser().parseCommand(\"event project meeting /from 2020-12-12 1400 /to 2020-12-12 1600\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" public void testParseCommand_DeleteCommand_ReturnsDeleteCommandType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.DELETE, new Parser().parseCommand(\"delete 1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" public void testParseCommand_UnknownCommand_ReturnsUnknownCommandType() {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.UNKNOWN, new Parser().parseCommand(\"randomcommand\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.UNKNOWN, new Parser().parseCommand(\"markiplier 1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" assertEquals(Parser.CommandType.UNKNOWN, new Parser().parseCommand(\"unmarker 2\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"hiivan":55}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"unmark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"delete 2","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"invalid command","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"delete 6","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"deadline nothing","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hiivan":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":"hiivan"},"content":"java -classpath ..\\bin Huyang \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"hiivan":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":"hiivan"},"content":"java -classpath ../bin Huyang \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"hiivan":1,"-":37}}] diff --git a/hiivan_ip_master/commits.json b/hiivan_ip_master/commits.json index efc5feb8..6872a6a6 100644 --- a/hiivan_ip_master/commits.json +++ b/hiivan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"hiivan":[{"date":"2024-01-22","commitResults":[{"hash":"ed625c07022d55889efa3e34a64d2163db54c98c","isMergeCommit":false,"messageTitle":"Rename Duke to Huyang","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"06c249948e9bac8ff3283af5691874f35f531657","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"552514d1ecf2681a7e0e06284c1541b08f87f0a8","isMergeCommit":false,"messageTitle":"added echo method","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"76abec6f08d5d5778869b7a9391410c095c16521","isMergeCommit":false,"messageTitle":"store tasks and display","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}},{"hash":"93712760f687632bad775c287d75d897390ae90d","isMergeCommit":false,"messageTitle":"included Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"bdc51443cab95b970d62ca60688a314867390a98","isMergeCommit":false,"messageTitle":"mark/unmark feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":6}}},{"hash":"bd54cfa5e9faa820cfb8d3cd78665b16eec5641e","isMergeCommit":false,"messageTitle":"Updated Task.java","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":5}}}]},{"date":"2024-01-23","commitResults":[{"hash":"28657180f49a9b1da0e8821180af7e5d843c1e5c","isMergeCommit":false,"messageTitle":"add support for ToDos, Events, Deadlines","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":11}}},{"hash":"2e67d8b45cb6a69c3b47b2d3847e49055940f7dd","isMergeCommit":false,"messageTitle":"Updated text-ui-test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"1a6fd529fc9887f6e8260ae81a49955997322552","isMergeCommit":false,"messageTitle":"Updated bugs in main/java","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":18}}},{"hash":"6f3a5f1c0222de3d4bfbb3e1fd061f9e4267e911","isMergeCommit":false,"messageTitle":"Added robust error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"c84a707a70958b9c3ccd2d4cdb9d3e42e0966e34","isMergeCommit":false,"messageTitle":"Updated robust error handling","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":33}}},{"hash":"f77c45c6ddb8d51af8cbe8de8d37e2366d833bde","isMergeCommit":false,"messageTitle":"Added Delete feature","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"7ee995a3124674e947b6e747c0daed8a50770760","isMergeCommit":false,"messageTitle":"Added enums and improved automated testing","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":56,"deletions":18}}}]},{"date":"2024-01-29","commitResults":[{"hash":"a9de399780a6c8317576658ea0b5558e389af372","isMergeCommit":false,"messageTitle":"Level 7: Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":170,"deletions":36}}},{"hash":"6d0082ce886bac9d783c4b8c9dbbd2d27ec3a77e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Level-7 merge required","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"64152052e66a771268dd56e529404d24db2bd12d","isMergeCommit":false,"messageTitle":"Level 8: Date and Time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":51,"deletions":23}}},{"hash":"786f4ef9d5986fbe5dfaac3b3713d2dc47d490f0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 Level-8 merge required","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"6f115b2140a2f36872da66a58ba2dbeba044b9fd","isMergeCommit":false,"messageTitle":"Made it more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":269,"deletions":212}}},{"hash":"6a1f98dca1baddbf07ce766f61f70aa47aefd60c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027 i hate oop","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"hiivan":{"java":511,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":16}},"authorContributionVariance":{"hiivan":54355.688},"authorDisplayNameMap":{"hiivan":"CS2103T-F14-3 ANG ..IVAN"}} +{"authorDailyContributionsMap":{"hiivan":[{"date":"2024-01-22","commitResults":[{"hash":"ed625c07022d55889efa3e34a64d2163db54c98c","isMergeCommit":false,"messageTitle":"Rename Duke to Huyang","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"06c249948e9bac8ff3283af5691874f35f531657","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"552514d1ecf2681a7e0e06284c1541b08f87f0a8","isMergeCommit":false,"messageTitle":"added echo method","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"76abec6f08d5d5778869b7a9391410c095c16521","isMergeCommit":false,"messageTitle":"store tasks and display","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}},{"hash":"93712760f687632bad775c287d75d897390ae90d","isMergeCommit":false,"messageTitle":"included Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"bdc51443cab95b970d62ca60688a314867390a98","isMergeCommit":false,"messageTitle":"mark/unmark feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":6}}},{"hash":"bd54cfa5e9faa820cfb8d3cd78665b16eec5641e","isMergeCommit":false,"messageTitle":"Updated Task.java","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":5}}}]},{"date":"2024-01-23","commitResults":[{"hash":"28657180f49a9b1da0e8821180af7e5d843c1e5c","isMergeCommit":false,"messageTitle":"add support for ToDos, Events, Deadlines","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":11}}},{"hash":"2e67d8b45cb6a69c3b47b2d3847e49055940f7dd","isMergeCommit":false,"messageTitle":"Updated text-ui-test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"1a6fd529fc9887f6e8260ae81a49955997322552","isMergeCommit":false,"messageTitle":"Updated bugs in main/java","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":18}}},{"hash":"6f3a5f1c0222de3d4bfbb3e1fd061f9e4267e911","isMergeCommit":false,"messageTitle":"Added robust error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"c84a707a70958b9c3ccd2d4cdb9d3e42e0966e34","isMergeCommit":false,"messageTitle":"Updated robust error handling","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":33}}},{"hash":"f77c45c6ddb8d51af8cbe8de8d37e2366d833bde","isMergeCommit":false,"messageTitle":"Added Delete feature","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"7ee995a3124674e947b6e747c0daed8a50770760","isMergeCommit":false,"messageTitle":"Added enums and improved automated testing","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":56,"deletions":18}}}]},{"date":"2024-01-29","commitResults":[{"hash":"a9de399780a6c8317576658ea0b5558e389af372","isMergeCommit":false,"messageTitle":"Level 7: Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":170,"deletions":36}}},{"hash":"6d0082ce886bac9d783c4b8c9dbbd2d27ec3a77e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Level-7 merge required","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"64152052e66a771268dd56e529404d24db2bd12d","isMergeCommit":false,"messageTitle":"Level 8: Date and Time","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":51,"deletions":23}}},{"hash":"786f4ef9d5986fbe5dfaac3b3713d2dc47d490f0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 Level-8 merge required","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"6f115b2140a2f36872da66a58ba2dbeba044b9fd","isMergeCommit":false,"messageTitle":"Made it more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":269,"deletions":212}}},{"hash":"6a1f98dca1baddbf07ce766f61f70aa47aefd60c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027 i hate oop","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"8f9165629aee77719dbe1285d6927825a5ccebe2","isMergeCommit":false,"messageTitle":"Organize into a single package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"801ef9c7c2d35c35d03a8a423098ca63aac96447","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027original/add-gradle-support\u0027 merge add-gradle-support branch","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"525f7a27390d592a6c1f1cd818d4397b89fa7b88","isMergeCommit":false,"messageTitle":"Add JUnit testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":130,"deletions":14}}},{"hash":"714c6fb2700a6867c70a27999c418abde2d07ef8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027 merge JUNit testing branch","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"hiivan":{"java":647,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":16}},"authorContributionVariance":{"hiivan":49997.41},"authorDisplayNameMap":{"hiivan":"CS2103T-F14-3 ANG ..IVAN"}} diff --git a/hjuntan_ip_master/authorship.json b/hjuntan_ip_master/authorship.json index 6f6bd71c..9e82a4d0 100644 --- a/hjuntan_ip_master/authorship.json +++ b/hjuntan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"public enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" List, Mark, Unmark, Delete, Todo, Deadline, Event, Bye, Invalid;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" private static List\u003cTask\u003e listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" private static String splitLine \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" private static String exitString \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" public static final boolean handleCommand(Command command, String detail){","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" switch (command){","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" case List:","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" if (listOfTasks.size() \u003d\u003d 0){","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human list is empty like my tummy right now :/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" for (int i \u003d 0; i \u003c listOfTasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, i);","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" case Mark:{","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to mark nothing ^O^. Foolish\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" case Unmark:{","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to unmark nothing ^O^. Silly\");","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" t.markAsNotDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" case Delete:{","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to delete nothing ^O^. Absurd\");","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" listOfTasks.remove(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"Now you have %d tasks in the list.\\n\", listOfTasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" case Todo:","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" case Deadline:","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" case Event:{","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" Task t \u003d createTask(command, detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" listOfTasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, listOfTasks.size() - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"Now you have %d tasks in the list.\\n\", listOfTasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" case Bye:","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" System.out.println(exitString);","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" writeTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" case Invalid:","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Me dragon, no understand this action :P\");","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"hjuntan"},"content":" } catch (ToothlessException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"hjuntan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":" } finally {","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine);","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"hjuntan"},"content":" return isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"hjuntan"},"content":" public static final Task createTask(Command c, String detail) throws ToothlessException{","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"hjuntan"},"content":" if(detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human task no name :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"hjuntan"},"content":" Task newTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" switch (c){","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" case Todo:{","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Todo(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"hjuntan"},"content":" case Deadline:{","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"hjuntan"},"content":" int dateIndex \u003d detail.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"hjuntan"},"content":" if (dateIndex \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human deadline no deadline @_@\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"hjuntan"},"content":" String description \u003d detail.substring(0, dateIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"hjuntan"},"content":" String date \u003d detail.substring(dateIndex + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Deadline(description, date);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"hjuntan"},"content":" default: {","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"hjuntan"},"content":" int date1Index \u003d detail.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"hjuntan"},"content":" if (date1Index \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human event no start date D:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"hjuntan"},"content":" String description \u003d detail.substring(0, date1Index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"hjuntan"},"content":" detail \u003d detail.substring(date1Index + 6);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"hjuntan"},"content":" int date2Index \u003d detail.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"hjuntan"},"content":" if (date2Index \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human event no end date D:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"hjuntan"},"content":" String startDate \u003d detail.substring(0, date2Index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"hjuntan"},"content":" String endDate \u003d detail.substring(date2Index + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Event(description, startDate, endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"hjuntan"},"content":" return newTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"hjuntan"},"content":" public static void loadTasks(String filepath) throws FileNotFoundException, ToothlessException{","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"hjuntan"},"content":" File file \u003d new File(filepath);","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"hjuntan"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"hjuntan"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"hjuntan"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"hjuntan"},"content":" String[] storedTask \u003d sc.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"hjuntan"},"content":" switch (storedTask[0]){","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"hjuntan"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"hjuntan"},"content":" task \u003d new Todo(storedTask[2], storedTask[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"hjuntan"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"hjuntan"},"content":" task \u003d new Deadline(storedTask[2], storedTask[3], storedTask[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"hjuntan"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"hjuntan"},"content":" task \u003d new Event(storedTask[2], storedTask[3], storedTask[4], storedTask[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"File corrupted O_O. Try again later.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"hjuntan"},"content":" listOfTasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"hjuntan"},"content":" public static void writeTasks(){","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"hjuntan"},"content":" new File(\"./data/toothless.txt\").getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"hjuntan"},"content":" FileWriter writer \u003d new FileWriter(\"./data/toothless.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"hjuntan"},"content":" for (Task task : listOfTasks){","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"hjuntan"},"content":" writer.write(task.toWrite() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"hjuntan"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"hjuntan"},"content":" } catch (FileNotFoundException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"hjuntan"},"content":" System.err.println(\"Unable to find task list :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"hjuntan"},"content":" } catch (IOException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"hjuntan"},"content":" System.err.println(\"Unable to save task :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"hjuntan"},"content":" public static int getTaskIndex(String detail) throws ToothlessException{","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d Integer.valueOf(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"hjuntan"},"content":" return taskIndex - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"hjuntan"},"content":" } catch (NumberFormatException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Number put is not number.\\nPlease put real number ._.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"hjuntan"},"content":" public static void printTaskState(Task task, int index){","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"%d. [\"+ task.getTaskIcon()+\"][\"+ task.getStatusIcon() + \"] \" + task + \"\\n\", index + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":179}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" private String date;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" public Deadline(String description, String date){","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" public Deadline(String description, String date, boolean isDone){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" super.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" return \"D\";","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" return \"D | \" + super.toWrite() + \" | \" + this.date;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" public String toString(){","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" return this.description + \" (by: \"+ this.date + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":29}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" private String startDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" private String endDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" public Event(String description, String startDate, String endDate){","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" public Event(String description, String startDate, String endDate, boolean isDone){","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" super.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" return \"E\";","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" return \"E | \" + super.toWrite() + \" | \" + this.startDate + \" | \" + this.endDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" public String toString(){","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" return this.description + \" (from: \" + this.startDate + \" to: \" + this.endDate + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":32}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" protected boolean isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" return this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" return this.isDone ? \"X\": \" \"; // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" public void markAsNotDone(){","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" return (isDone ? 1 : 0) + \" | \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" public abstract String getTaskIcon();","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":27}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" public Todo(String description){","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" public Todo(String description, boolean isDone){","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" super.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon(){","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" return \"T\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" return \"T | \" + super.toWrite();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":20}},{"path":"src/main/java/Toothless.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"public class Toothless {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" private String splitLine \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" private String chatBotName \u003d \"Toothless\";","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" private String greetingString \u003d \"Hi! \"+ chatBotName +\" is \" + chatBotName + \"!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" + \"What can \" + chatBotName + \" do for human?\\n\" + splitLine;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" public Toothless(String filepath){","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" Command.loadTasks(filepath);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" } catch (FileNotFoundException e){","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Can\u0027t Find Task File!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" } catch (ToothlessException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" public void start(Scanner sc) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" String input;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" Command command;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine + \"\\n\" + greetingString);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" while(!isDone){","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine);","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" int detailIndex \u003d input.indexOf(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" String detail;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" if (detailIndex \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" detail \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" detail \u003d input.substring(detailIndex + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" if(input.startsWith(\"unmark\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Unmark;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"mark\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Mark;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"delete\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Delete;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"todo\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Todo;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"deadline\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"event\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Event;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"list\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"bye\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Bye;","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" } else{","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Invalid;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" isDone \u003d Command.handleCommand(command, detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" public static void main(String[] args){","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" Toothless toothless \u003d new Toothless(\"./data/toothless.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" toothless.start(sc);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":76}},{"path":"src/main/java/ToothlessException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class ToothlessException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" ToothlessException(String message){","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"todo simple task","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"deadline simple assignment /by today","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"event simple celebration /from 26 Jan 4pm /to 26 Jan 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":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":"hjuntan"},"content":"java -classpath ..\\bin Toothless \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"hjuntan":1,"-":20}}] +[{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"public enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" List, Mark, Unmark, Delete, Todo, Deadline, Event, Bye, Invalid;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" private static List\u003cTask\u003e listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" private static String splitLine \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" private static String exitString \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" public static final boolean handleCommand(Command command, String detail){","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" switch (command){","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" case List:","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" if (listOfTasks.size() \u003d\u003d 0){","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human list is empty like my tummy right now :/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" for (int i \u003d 0; i \u003c listOfTasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, i);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" case Mark:{","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to mark nothing ^O^. Foolish\");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" case Unmark:{","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to unmark nothing ^O^. Silly\");","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" t.markAsNotDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" case Delete:{","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d getTaskIndex(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" if (taskIndex \u003e\u003d listOfTasks.size() || taskIndex \u003c 0 || detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human trying to delete nothing ^O^. Absurd\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" Task t \u003d listOfTasks.get(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" listOfTasks.remove(taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, taskIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"Now you have %d tasks in the list.\\n\", listOfTasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" case Todo:","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" case Deadline:","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" case Event:{","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":" Task t \u003d createTask(command, detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" listOfTasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" printTaskState(t, listOfTasks.size() - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"Now you have %d tasks in the list.\\n\", listOfTasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" case Bye:","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"hjuntan"},"content":" System.out.println(exitString);","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" writeTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"hjuntan"},"content":" case Invalid:","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Me dragon, no understand this action :P\");","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":" } catch (ToothlessException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"hjuntan"},"content":" } catch (DateTimeParseException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Type in date and time in this format: yyyy-mm-ddTHh:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"hjuntan"},"content":" } finally {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine);","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"hjuntan"},"content":" return isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"hjuntan"},"content":" public static final Task createTask(Command c, String detail) throws ToothlessException, DateTimeParseException{","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" if(detail.equals(\"\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human task no name :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"hjuntan"},"content":" Task newTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"hjuntan"},"content":" switch (c){","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"hjuntan"},"content":" case Todo:{","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Todo(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"hjuntan"},"content":" case Deadline:{","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"hjuntan"},"content":" int dateIndex \u003d detail.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"hjuntan"},"content":" if (dateIndex \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human deadline no deadline @_@\");","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"hjuntan"},"content":" String description \u003d detail.substring(0, dateIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"hjuntan"},"content":" String date \u003d detail.substring(dateIndex + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Deadline(description, date);","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"hjuntan"},"content":" case Event: {","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"hjuntan"},"content":" int date1Index \u003d detail.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"hjuntan"},"content":" if (date1Index \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human event no start date D:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"hjuntan"},"content":" String description \u003d detail.substring(0, date1Index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"hjuntan"},"content":" detail \u003d detail.substring(date1Index + 6);","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"hjuntan"},"content":" int date2Index \u003d detail.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"hjuntan"},"content":" if (date2Index \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Human event no end date D:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"hjuntan"},"content":" String startDate \u003d detail.substring(0, date2Index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"hjuntan"},"content":" String endDate \u003d detail.substring(date2Index + 4);","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"hjuntan"},"content":" newTask \u003d new Event(description, startDate, endDate);","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Can\u0027t create task!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"hjuntan"},"content":" return newTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"hjuntan"},"content":" public static void loadTasks(String filepath) throws FileNotFoundException, ToothlessException{","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"hjuntan"},"content":" LocalDateTime now \u003d LocalDateTime.now();","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"hjuntan"},"content":" File file \u003d new File(filepath);","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"hjuntan"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"You have these undone tasks:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"hjuntan"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"hjuntan"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"hjuntan"},"content":" String[] storedTask \u003d sc.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"hjuntan"},"content":" switch (storedTask[0]){","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"hjuntan"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"hjuntan"},"content":" task \u003d new Todo(storedTask[2], storedTask[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"hjuntan"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"hjuntan"},"content":" task \u003d new Deadline(storedTask[2], storedTask[3], storedTask[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"hjuntan"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"hjuntan"},"content":" task \u003d new Event(storedTask[2], storedTask[3], storedTask[4], storedTask[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"hjuntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"File corrupted O_O. Try again later.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"hjuntan"},"content":" listOfTasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"hjuntan"},"content":" if (!task.isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"hjuntan"},"content":" printTaskState(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"hjuntan"},"content":" public static void writeTasks(){","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"hjuntan"},"content":" new File(\"./data/toothless.txt\").getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"hjuntan"},"content":" FileWriter writer \u003d new FileWriter(\"./data/toothless.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"hjuntan"},"content":" for (Task task : listOfTasks){","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"hjuntan"},"content":" writer.write(task.toWrite() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"hjuntan"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"hjuntan"},"content":" } catch (FileNotFoundException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"hjuntan"},"content":" System.err.println(\"Unable to find task list :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"hjuntan"},"content":" } catch (IOException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"hjuntan"},"content":" System.err.println(\"Unable to save task :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"hjuntan"},"content":" public static int getTaskIndex(String detail) throws ToothlessException{","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"hjuntan"},"content":" int taskIndex \u003d Integer.valueOf(detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"hjuntan"},"content":" return taskIndex - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"hjuntan"},"content":" } catch (NumberFormatException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"Number put is not number.\\nPlease put real number ._.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"hjuntan"},"content":" public static void printTaskState(Task task, int index){","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"hjuntan"},"content":" System.out.format(\"%d. [\"+ task.getTaskIcon()+\"][\"+ task.getStatusIcon() + \"] \" + task + \"\\n\", index + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"hjuntan"},"content":" public static void printTaskState(Task task){","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"hjuntan"},"content":" System.out.println(\" [\"+ task.getTaskIcon()+\"][\"+ task.getStatusIcon() + \"] \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":195}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" private LocalDateTime date;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" public Deadline(String description, String date){","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" this.date \u003d LocalDateTime.parse(date);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" public Deadline(String description, String date, boolean isDone){","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" super.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" this.date \u003d LocalDateTime.parse(date);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" return \"D\";","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" return \"D | \" + super.toWrite()","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" + \" | \" + this.date;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" public String toString(){","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" return this.description","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" + \" (by: \"+ super.dateTimeFormat(this.date) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":34}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" public Event(String description, String startDate, String endDate) throws ToothlessException{","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" if (start.isAfter(end)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"End date is earlier :/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" this.startDate \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" this.endDate \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" public Event(String description, String startDate, String endDate, boolean isDone) throws ToothlessException{","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" super.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" if (start.isAfter(end)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" throw new ToothlessException(\"End date is earlier :/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" this.startDate \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" this.endDate \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" return \"E\";","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" return \"E | \" + super.toWrite()","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" + \" | \" + this.startDate","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" + \" | \" + this.endDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" public String toString(){","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" return this.description","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" + \" (from: \" + super.dateTimeFormat(this.startDate)","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" + \" to: \" + super.dateTimeFormat(this.endDate) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":49}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"import java.time.Month;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" protected boolean isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" return this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" return this.isDone ? \"X\": \" \"; // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" public void markAsNotDone(){","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" return (isDone ? 1 : 0) + \" | \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" public String dateTimeFormat(LocalDateTime dateTime){","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" public abstract String getTaskIcon();","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":35}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" public Todo(String description){","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" public Todo(String description, boolean isDone){","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" super.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" super.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" public String getTaskIcon(){","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" return \"T\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" public String toWrite(){","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" return \"T | \" + super.toWrite();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":20}},{"path":"src/main/java/Toothless.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"public class Toothless {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":" private String splitLine \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" private String chatBotName \u003d \"Toothless\";","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" private String greetingString \u003d \"Hi! \"+ chatBotName +\" is \" + chatBotName + \"!\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" + \"What can \" + chatBotName + \" do for human?\\n\" + splitLine;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" public Toothless(String filepath){","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" Command.loadTasks(filepath);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" } catch (FileNotFoundException e){","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" System.out.println(\"Can\u0027t Find Task File!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" } catch (ToothlessException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" public void start(Scanner sc) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" String input;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" Command command;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" boolean isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine + \"\\n\" + greetingString);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" while(!isDone){","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" System.out.println(splitLine);","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" int detailIndex \u003d input.indexOf(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" String detail;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" if (detailIndex \u003d\u003d -1){","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" detail \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" detail \u003d input.substring(detailIndex + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" if(input.startsWith(\"unmark\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Unmark;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"mark\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Mark;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"delete\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Delete;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"todo\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Todo;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"deadline\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"event\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Event;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" else if (input.startsWith(\"list\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" else if(input.startsWith(\"bye\")){","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Bye;","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" } else{","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" command \u003d Command.Invalid;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" isDone \u003d Command.handleCommand(command, detail);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":" public static void main(String[] args){","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" Toothless toothless \u003d new Toothless(\"./data/toothless.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" toothless.start(sc);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"hjuntan":74}},{"path":"src/main/java/ToothlessException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"public class ToothlessException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":" ToothlessException(String message){","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"todo simple task","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"deadline simple assignment /by today","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"event simple celebration /from 26 Jan 4pm /to 26 Jan 6pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"hjuntan":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":"hjuntan"},"content":"java -classpath ..\\bin Toothless \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"hjuntan":1,"-":20}}] diff --git a/hjuntan_ip_master/commits.json b/hjuntan_ip_master/commits.json index e191d9a9..4790714d 100644 --- a/hjuntan_ip_master/commits.json +++ b/hjuntan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"hjuntan":[{"date":"2024-01-23","commitResults":[{"hash":"1386db393d79c421c2508153acf4f5a661aa8a45","isMergeCommit":false,"messageTitle":"Implement skeletal version of chatbbot Change name of chatbot from Duke to Toothless","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"3f369398882df76950b1a1c957ec8427d9882da1","isMergeCommit":false,"messageTitle":"Toothless will now echo the command entered by the user, and exit when the user types the command \"bye\"","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"aaf328ec6841185e1ede057c62991a967ff081dc","isMergeCommit":false,"messageTitle":"Add the ability to store whatever text entered by the user and display them back to the user when requested using the command \"list\".","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":9}}},{"hash":"d6fae37a3ac3a6399714c7ae9404500cba364206","isMergeCommit":false,"messageTitle":"Changed loop logic of chatbot","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":4}}},{"hash":"cf03063ba127d97ac21e7dc1d80570f13135aa40","isMergeCommit":false,"messageTitle":"Added the mark feature to Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"25109cbdeae80a5b794e683c1738c7bfc9cb263d","isMergeCommit":false,"messageTitle":"Added the ability to mark and unmark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":9}}},{"hash":"23571cfaa90200220d44bfe9986111aaeb1b35f9","isMergeCommit":false,"messageTitle":"Implement the ability to create a todo, which is similar to task.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":15}}},{"hash":"4a89a2e63add42cceb0ab5f04286b92c7b98ff40","isMergeCommit":false,"messageTitle":"Implement the ability to create deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":2}}},{"hash":"194d6123ae42eb075791df70b0c4903f7634e0d4","isMergeCommit":false,"messageTitle":"Implement the ability to create events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"4ce83d4eb85c643fd42b77f9f4cf3821167dd5d6","isMergeCommit":false,"messageTitle":"Added a semi-automated testing of Toothless","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"3761e595117bcba5b0caecdc50c5254cf911f1ee","isMergeCommit":false,"messageTitle":"Refactor code to handle commands as enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":62}}},{"hash":"fbe46c4d8cf5071a9e8abf948ebfce53233bd87f","isMergeCommit":false,"messageTitle":"Handle some errors for mark, unmark, todo, deadline, event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":9}}},{"hash":"0a33e835e2d0e134ad6eef10ad6b2949b18663ce","isMergeCommit":false,"messageTitle":"Better handle errors of mark and unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"a53dd4a101782872c7fcaa1da8a0562c6eb7e97b","isMergeCommit":false,"messageTitle":"Handle minor error of list","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"f7354ca671f6cebcc424df4a694754b61e1a979e","isMergeCommit":false,"messageTitle":"Implement to ability to delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}}]},{"date":"2024-01-29","commitResults":[{"hash":"290df0236a345a20ef002a1ef58a060312e92b10","isMergeCommit":false,"messageTitle":"Add a data file path","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"64b3a9207350afe3c5b0ae33dabe97c136848677","isMergeCommit":false,"messageTitle":"Implement a method to store tasks in a txt file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":2}}},{"hash":"fd81a6c0576bc240bb4ea0e1febf7411e070f9dc","isMergeCommit":false,"messageTitle":"Add ability to load task into array list from text file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":6}}},{"hash":"c1a5972b9e1ed5e921b093957fb30b5674e80f9b","isMergeCommit":false,"messageTitle":"Bug fix to load tasks properly","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"4f604d9999ec75ebdd2f28655b8218135ea2b68e","isMergeCommit":false,"messageTitle":"Clean up code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":5}}},{"hash":"f886a7873c74b7d656a13c822d92cdd183f9d5bc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"hjuntan":{"java":368,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":9}},"authorContributionVariance":{"hjuntan":10564.243},"authorDisplayNameMap":{"hjuntan":"CS2103T-T15-2 TAN .. JUN"}} +{"authorDailyContributionsMap":{"hjuntan":[{"date":"2024-01-23","commitResults":[{"hash":"1386db393d79c421c2508153acf4f5a661aa8a45","isMergeCommit":false,"messageTitle":"Implement skeletal version of chatbbot Change name of chatbot from Duke to Toothless","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"3f369398882df76950b1a1c957ec8427d9882da1","isMergeCommit":false,"messageTitle":"Toothless will now echo the command entered by the user, and exit when the user types the command \"bye\"","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"aaf328ec6841185e1ede057c62991a967ff081dc","isMergeCommit":false,"messageTitle":"Add the ability to store whatever text entered by the user and display them back to the user when requested using the command \"list\".","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":9}}},{"hash":"d6fae37a3ac3a6399714c7ae9404500cba364206","isMergeCommit":false,"messageTitle":"Changed loop logic of chatbot","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":4}}},{"hash":"cf03063ba127d97ac21e7dc1d80570f13135aa40","isMergeCommit":false,"messageTitle":"Added the mark feature to Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"25109cbdeae80a5b794e683c1738c7bfc9cb263d","isMergeCommit":false,"messageTitle":"Added the ability to mark and unmark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":9}}},{"hash":"23571cfaa90200220d44bfe9986111aaeb1b35f9","isMergeCommit":false,"messageTitle":"Implement the ability to create a todo, which is similar to task.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":15}}},{"hash":"4a89a2e63add42cceb0ab5f04286b92c7b98ff40","isMergeCommit":false,"messageTitle":"Implement the ability to create deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":2}}},{"hash":"194d6123ae42eb075791df70b0c4903f7634e0d4","isMergeCommit":false,"messageTitle":"Implement the ability to create events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":1}}}]},{"date":"2024-01-24","commitResults":[{"hash":"4ce83d4eb85c643fd42b77f9f4cf3821167dd5d6","isMergeCommit":false,"messageTitle":"Added a semi-automated testing of Toothless","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"3761e595117bcba5b0caecdc50c5254cf911f1ee","isMergeCommit":false,"messageTitle":"Refactor code to handle commands as enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":62}}},{"hash":"fbe46c4d8cf5071a9e8abf948ebfce53233bd87f","isMergeCommit":false,"messageTitle":"Handle some errors for mark, unmark, todo, deadline, event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":9}}},{"hash":"0a33e835e2d0e134ad6eef10ad6b2949b18663ce","isMergeCommit":false,"messageTitle":"Better handle errors of mark and unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"a53dd4a101782872c7fcaa1da8a0562c6eb7e97b","isMergeCommit":false,"messageTitle":"Handle minor error of list","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"f7354ca671f6cebcc424df4a694754b61e1a979e","isMergeCommit":false,"messageTitle":"Implement to ability to delete task","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}}]},{"date":"2024-01-29","commitResults":[{"hash":"290df0236a345a20ef002a1ef58a060312e92b10","isMergeCommit":false,"messageTitle":"Add a data file path","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"64b3a9207350afe3c5b0ae33dabe97c136848677","isMergeCommit":false,"messageTitle":"Implement a method to store tasks in a txt file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":2}}},{"hash":"fd81a6c0576bc240bb4ea0e1febf7411e070f9dc","isMergeCommit":false,"messageTitle":"Add ability to load task into array list from text file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":6}}},{"hash":"c1a5972b9e1ed5e921b093957fb30b5674e80f9b","isMergeCommit":false,"messageTitle":"Bug fix to load tasks properly","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"4f604d9999ec75ebdd2f28655b8218135ea2b68e","isMergeCommit":false,"messageTitle":"Clean up code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":5}}},{"hash":"f886a7873c74b7d656a13c822d92cdd183f9d5bc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"da7910b46bff569ebf53d43e00be923a09219497","isMergeCommit":false,"messageTitle":"Change the date format of deadlines and events from String to LocalDateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":13}}},{"hash":"c27cac4fbeebfc785a7e912fd10c944f666fa6dd","isMergeCommit":false,"messageTitle":"Fix formatting issues with date time","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":4}}},{"hash":"1019f3c12255e321c81aacba643c69080ea12533","isMergeCommit":false,"messageTitle":"Add a reminder for unmark tasks to the user during launch.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"6a6a81aea46443d98b4bc09f37a3071f005c4482","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"hjuntan":{"java":412,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":9}},"authorContributionVariance":{"hjuntan":12066.742},"authorDisplayNameMap":{"hjuntan":"CS2103T-T15-2 TAN .. JUN"}} diff --git a/howen02_ip_master/authorship.json b/howen02_ip_master/authorship.json index b1821db2..c8b65d94 100644 --- a/howen02_ip_master/authorship.json +++ b/howen02_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/graphics/exit.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":" Bye. Hope to see you again soon!","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":1}},{"path":"src/main/graphics/greeting.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":" Hello! I\u0027m Snorlax","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":" Type \u0027help\u0027 for list of commands","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"howen02":2}},{"path":"src/main/graphics/help.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"Command Description","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"list Lists all tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"todo Creates task of type todo","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"event Creates task of type event","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"deadline Creates task of type deadline","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"mark Marks task as done","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"unmark Marks task as not done","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"delete Deletes task","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"bye Ends program","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"howen02":9}},{"path":"src/main/graphics/line.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"═","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":1}},{"path":"src/main/graphics/snorlax.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣶⣿⣶⣦⣄⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣤⣶⣾⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⠿⠿⠿⣿⣿⣿⣿⠿⠿⠿⢿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⠀⢀⡀⣄⠀⠀⠀⠀⠀⠀⠀⣿⣿⠟⠉⠀⢀⣀⠀⠀⠈⠉⠀⠀⣀⣀⠀⠀⠙⢿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⣀⣶⣿⣿⣿⣾⣇⠀⠀⠀⠀⢀⣿⠃⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠹⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⣼⡏⠀⠀⠀⣀⣀⣉⠉⠩⠭⠭⠭⠥⠤⢀⣀⣀⠀⠀⠀⢻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⣿⠷⠒⠋⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠑⠒⠼⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣷⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠈⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⢹⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⠀⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣶⣤⣄⣠⣤⣤⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"import objects.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"import view.Exit;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import view.Greeting;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"import static objects.Processor.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"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":"howen02"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" Greeting.display();","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" process(input, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" Exit.display();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"howen02":22,"-":4}},{"path":"src/main/java/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(\"ERROR! \" + message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":7}},{"path":"src/main/java/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public InvalidCommandException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(\"Invalid command\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":7}},{"path":"src/main/java/exception/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(\"Input in the form:\\ndeadline {taskName} /by {dueDate}\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":7}},{"path":"src/main/java/exception/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public InvalidEventException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(\"Input in the form:\\nevent {taskName} /from {startDate} /to {endDate}\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":7}},{"path":"src/main/java/exception/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class InvalidIndexException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public InvalidIndexException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(\"Index is out of bounds\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":7}},{"path":"src/main/java/objects/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"import exception.DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import exception.InvalidIndexException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"import view.EncaseLines;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"import static utils.DeadlineUtil.createDeadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"import static utils.EventUtil.createEvent;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"import static utils.FileUtil.getFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"import static utils.InputUtil.getCommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"import static utils.InputUtil.parseIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"public class Commands {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" public static final String LIST \u003d \"list\";","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" public static final String MARK \u003d \"mark\";","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" public static final String UNMARK \u003d \"unmark\";","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" public static final String DELETE \u003d \"delete\";","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" public static final String TODO \u003d \"todo\";","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" public static final String DEADLINE \u003d \"deadline\";","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":" public static final String EVENT \u003d \"event\";","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" public static final String HELP \u003d \"help\";","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":" public static void processTask(TaskList tasks, String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" String command \u003d getCommandType(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"howen02"},"content":" int i \u003d parseIndex(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"howen02"},"content":" if (i \u003d\u003d -1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"howen02"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"howen02"},"content":" } else if (i \u003c 0 || i \u003e tasks.size() - 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"howen02"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"howen02"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"howen02"},"content":" switch (command) {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"howen02"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"howen02"},"content":" markTask(tasks, i);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"howen02"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"howen02"},"content":" unmarkTask(tasks, i);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"howen02"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"howen02"},"content":" deleteTask(tasks, i);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"howen02"},"content":" public static void createTask(TaskList tasks, String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"howen02"},"content":" String[] details \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"howen02"},"content":" if (details.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"howen02"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"howen02"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"howen02"},"content":" String type \u003d details[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"howen02"},"content":" String taskDetails \u003d details[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"howen02"},"content":" switch (type) {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"howen02"},"content":" case TODO:","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"howen02"},"content":" task \u003d new ToDos(taskDetails);","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"howen02"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"howen02"},"content":" task \u003d createDeadline(taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"howen02"},"content":" case EVENT:","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"howen02"},"content":" task \u003d createEvent(taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"howen02"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"howen02"},"content":" String o \u003d String.format(\"Got it. I\u0027ve added this task:\\n %s\\nNow you have %d tasks in the list.\", task.toString(), tasks.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"howen02"},"content":" EncaseLines.display(o);","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"howen02"},"content":" public static void listTasks(TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"howen02"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"howen02"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"howen02"},"content":" EncaseLines.display(\"List is empty!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"howen02"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"howen02"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"howen02"},"content":" output.append(String.format(\"%d. %s\", i + 1, tasks.get(i)));","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"howen02"},"content":" if (i \u003c tasks.size() - 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"howen02"},"content":" output.append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"howen02"},"content":" EncaseLines.display(output.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"howen02"},"content":" private static void unmarkTask(TaskList tasks, int i) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"howen02"},"content":" tasks.unmarkTask(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"howen02"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"howen02"},"content":" String o \u003d String.format(\"Nice! I\u0027ve marked this task as not done yet: \\n %s\", t.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"howen02"},"content":" EncaseLines.display(o);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"howen02"},"content":" private static void markTask(TaskList tasks, int i) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"howen02"},"content":" tasks.markTask(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"howen02"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"howen02"},"content":" String o \u003d String.format(\"Nice! I\u0027ve marked this task as done: \\n %s\", t.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"howen02"},"content":" EncaseLines.display(o);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"howen02"},"content":" public static void deleteTask(TaskList tasks, int i) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"howen02"},"content":" if (i \u003c 0 || i \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"howen02"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"howen02"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"howen02"},"content":" tasks.remove(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"howen02"},"content":" String o \u003d String.format(\"Noted. I\u0027ve removed this task:\\n %s\\nNow you have %d tasks in the list.\", task.toString(), tasks.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"howen02"},"content":" EncaseLines.display(o);","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"howen02"},"content":" public static void printHelp() {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"howen02"},"content":" EncaseLines.display(getFile(FilePath.HELP_PATH));","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"howen02":128}},{"path":"src/main/java/objects/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" private final String by;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" public Deadlines(String name, String by) {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" super(name);","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.by);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"howen02":16}},{"path":"src/main/java/objects/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"//package objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"//public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"// public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"// super(\"ERROR! \" + message);","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"//}","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"//class InvalidCommandException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"// public InvalidCommandException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"// super(\"Invalid command\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":"//}","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":"//class InvalidIndexException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":"// public InvalidIndexException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":"// super(\"Index is out of bounds\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":"//}","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":"//class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":"// public InvalidDeadlineException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":"// super(\"Input in the form:\\ndeadline {taskName} /by {dueDate}\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"howen02"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"howen02"},"content":"//}","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"howen02"},"content":"//","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"howen02"},"content":"//class InvalidEventException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"howen02"},"content":"// public InvalidEventException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"howen02"},"content":"// super(\"Input in the form:\\nevent {taskName} /from {startDate} /to {endDate}\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"howen02"},"content":"// }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"howen02"},"content":"//}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":32}},{"path":"src/main/java/objects/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class Events extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" private final String from;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" private final String to;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public Events(String name, String from, String to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" super(name);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.from, this.to);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"howen02":17}},{"path":"src/main/java/objects/FilePath.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class FilePath {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public static final String GRAPHICS_FOLDER \u003d \"./src/main/graphics/\";","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" public static final String LINE_PATH \u003d GRAPHICS_FOLDER + \"line.txt\";","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" public static final String LOGO_PATH \u003d GRAPHICS_FOLDER + \"snorlax.txt\";","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public static final String GREETING_PATH \u003d GRAPHICS_FOLDER + \"greeting.txt\";","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" public static final String EXIT_PATH \u003d GRAPHICS_FOLDER + \"exit.txt\";","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" public static final String HELP_PATH \u003d GRAPHICS_FOLDER + \"help.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"howen02":11}},{"path":"src/main/java/objects/Processor.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"import exception.DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import view.EncaseLines;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"import static objects.Commands.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"import static utils.InputUtil.getCommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"public class Processor {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" public static void process (String input, TaskList tasks) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" input \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" String command \u003d getCommandType(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" switch (command) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" case LIST:","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" listTasks(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":" case MARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" case UNMARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":" case DELETE:","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":" processTask(tasks, input);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"howen02"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"howen02"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"howen02"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"howen02"},"content":" createTask(tasks, input);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"howen02"},"content":" case HELP:","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"howen02"},"content":" printHelp();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"howen02"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"howen02"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"howen02"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"howen02"},"content":" EncaseLines.display(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":45}},{"path":"src/main/java/objects/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" private final String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.name);","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":" };","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":" public void mark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"howen02"},"content":" public void unmark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"howen02"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":30}},{"path":"src/main/java/objects/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"public class TaskList extends ArrayList\u003cTask\u003e{","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" this.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" public void markTask(int i) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" Task task \u003d this.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" task.mark();","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" public void unmarkTask(int i) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" Task task \u003d this.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":" task.unmark();","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":25}},{"path":"src/main/java/objects/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class ToDos extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public ToDos(String name) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(name);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"howen02":12}},{"path":"src/main/java/utils/DeadlineUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import objects.Deadlines;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import exception.InvalidDeadlineException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"public class DeadlineUtil {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public static Deadlines createDeadline(String input) throws InvalidDeadlineException {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" String[] parts \u003d input.split(\"/by\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" String name \u003d parts[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" // throw error if empty","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" String by \u003d parts.length \u003e 1 ? parts[1].trim() : \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" return new Deadlines(name, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":19}},{"path":"src/main/java/utils/EventUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import objects.Events;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import exception.InvalidEventException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"public class EventUtil {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public static Events createEvent(String input) throws InvalidEventException {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" if (!input.contains(\"/from\") || !input.contains(\"/to\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" throw new InvalidEventException();","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" String[] partsFrom \u003d input.split(\"/from\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" String name \u003d partsFrom[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" String[] partsTo \u003d partsFrom[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" String from \u003d partsTo[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" String to \u003d partsTo[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" return new Events(name, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":21}},{"path":"src/main/java/utils/FileUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"public class FileUtil {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" public static String getFile(String path) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" if (System.getProperty(\"user.dir\").contains(\"text-ui-test\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" path \u003d \".\" + path;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" return Files.readString(Paths.get(path));","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":23}},{"path":"src/main/java/utils/InputUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class InputUtil {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public static int parseIndex(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" String[] parts \u003d input.split(\"\\\\s+\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" if (parts.length \u003e\u003d 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" return Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" return -1;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" public static String getCommandType(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" return input.split(\" \", 2)[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":17}},{"path":"src/main/java/view/EncaseLines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class EncaseLines {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public static void display(String string) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" SingleLine.display();","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" System.out.println(string);","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" SingleLine.display();","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":9}},{"path":"src/main/java/view/Exit.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import static objects.FilePath.EXIT_PATH;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import static utils.FileUtil.getFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"public class Exit {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public static void display() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" EncaseLines.display(getFile(EXIT_PATH));","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":10}},{"path":"src/main/java/view/Greeting.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import static objects.FilePath.GREETING_PATH;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import static objects.FilePath.LOGO_PATH;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"import static utils.FileUtil.getFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"public class Greeting extends UI {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" public static void display() {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" System.out.println(getFile(LOGO_PATH));","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" EncaseLines.display(getFile(GREETING_PATH));","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":12}},{"path":"src/main/java/view/SingleLine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import static objects.FilePath.LINE_PATH;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import static utils.FileUtil.getFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"public class SingleLine extends UI {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public static void display() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" String character \u003d getFile(LINE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" String line \u003d String.valueOf(character).repeat(60);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":13}},{"path":"src/main/java/view/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public abstract class UI {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public static void display() {};","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"hello","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"todo homework","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"deadline project /by Monday","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"event travel /from saturday /to tuesday","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"unmark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"howen02":10}}] +[{"path":"src/main/graphics/exit.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":" Bye. Hope to see you again soon!","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":1}},{"path":"src/main/graphics/greeting.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":" Hello! I\u0027m Snorlax","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":" Type \u0027help\u0027 for list of commands","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"howen02":2}},{"path":"src/main/graphics/help.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"Command Description","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"list Lists all tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"todo Creates task of type todo","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"event Creates task of type event","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"deadline Creates task of type deadline","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"mark Marks task as done","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"unmark Marks task as not done","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"delete Deletes task","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"bye Ends program","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"howen02":9}},{"path":"src/main/graphics/line.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"═","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":1}},{"path":"src/main/graphics/snorlax.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣶⣿⣶⣦⣄⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣤⣶⣾⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⠿⠿⠿⣿⣿⣿⣿⠿⠿⠿⢿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⠀⢀⡀⣄⠀⠀⠀⠀⠀⠀⠀⣿⣿⠟⠉⠀⢀⣀⠀⠀⠈⠉⠀⠀⣀⣀⠀⠀⠙⢿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⣀⣶⣿⣿⣿⣾⣇⠀⠀⠀⠀⢀⣿⠃⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠹⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⣼⡏⠀⠀⠀⣀⣀⣉⠉⠩⠭⠭⠭⠥⠤⢀⣀⣀⠀⠀⠀⢻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⣿⠷⠒⠋⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠑⠒⠼⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣷⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠈⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⢹⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⠀⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣶⣤⣄⣠⣤⣤⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"import objects.TaskList;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"import view.Exit;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import view.Greeting;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"import static objects.Processor.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"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":"howen02"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" Greeting.display();","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" process(input, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" Exit.display();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"howen02":22,"-":4}},{"path":"src/main/java/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(\"ERROR! \" + message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":7}},{"path":"src/main/java/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public InvalidCommandException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(\"Invalid command\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":7}},{"path":"src/main/java/exception/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(\"Input in the form:\\ndeadline {taskName} /by {dueDate}\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":7}},{"path":"src/main/java/exception/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public InvalidEventException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(\"Input in the form:\\nevent {taskName} /from {startDate} /to {endDate}\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":7}},{"path":"src/main/java/exception/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class InvalidIndexException extends DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public InvalidIndexException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(\"Index is out of bounds\");","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":7}},{"path":"src/main/java/objects/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"import exception.DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import exception.InvalidIndexException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"import view.EncaseLines;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"import static utils.DeadlineUtil.createDeadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"import static utils.EventUtil.createEvent;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"import static utils.FileUtil.getFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"import static utils.InputUtil.getCommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"import static utils.InputUtil.parseIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"public class Commands {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" public static final String LIST \u003d \"list\";","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" public static final String MARK \u003d \"mark\";","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" public static final String UNMARK \u003d \"unmark\";","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" public static final String DELETE \u003d \"delete\";","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" public static final String TODO \u003d \"todo\";","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" public static final String DEADLINE \u003d \"deadline\";","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":" public static final String EVENT \u003d \"event\";","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" public static final String HELP \u003d \"help\";","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":" public static void processTask(TaskList tasks, String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" String command \u003d getCommandType(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"howen02"},"content":" int i \u003d parseIndex(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"howen02"},"content":" if (i \u003d\u003d -1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"howen02"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"howen02"},"content":" } else if (i \u003c 0 || i \u003e tasks.size() - 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"howen02"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"howen02"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"howen02"},"content":" switch (command) {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"howen02"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"howen02"},"content":" markTask(tasks, i);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"howen02"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"howen02"},"content":" unmarkTask(tasks, i);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"howen02"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"howen02"},"content":" deleteTask(tasks, i);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"howen02"},"content":" public static void createTask(TaskList tasks, String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"howen02"},"content":" String[] details \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"howen02"},"content":" if (details.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"howen02"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"howen02"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"howen02"},"content":" String type \u003d details[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"howen02"},"content":" String taskDetails \u003d details[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"howen02"},"content":" switch (type) {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"howen02"},"content":" case TODO:","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"howen02"},"content":" task \u003d new ToDos(taskDetails);","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"howen02"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"howen02"},"content":" task \u003d createDeadline(taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"howen02"},"content":" case EVENT:","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"howen02"},"content":" task \u003d createEvent(taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"howen02"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"howen02"},"content":" String o \u003d String.format(\"Got it. I\u0027ve added this task:\\n %s\\nNow you have %d tasks in the list.\", task.toString(), tasks.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"howen02"},"content":" EncaseLines.display(o);","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"howen02"},"content":" public static void listTasks(TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"howen02"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"howen02"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"howen02"},"content":" EncaseLines.display(\"List is empty!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"howen02"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"howen02"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"howen02"},"content":" output.append(String.format(\"%d. %s\", i + 1, tasks.get(i)));","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"howen02"},"content":" if (i \u003c tasks.size() - 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"howen02"},"content":" output.append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"howen02"},"content":" EncaseLines.display(output.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"howen02"},"content":" private static void unmarkTask(TaskList tasks, int i) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"howen02"},"content":" tasks.unmarkTask(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"howen02"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"howen02"},"content":" String o \u003d String.format(\"Nice! I\u0027ve marked this task as not done yet: \\n %s\", t.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"howen02"},"content":" EncaseLines.display(o);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"howen02"},"content":" private static void markTask(TaskList tasks, int i) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"howen02"},"content":" tasks.markTask(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"howen02"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"howen02"},"content":" String o \u003d String.format(\"Nice! I\u0027ve marked this task as done: \\n %s\", t.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"howen02"},"content":" EncaseLines.display(o);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"howen02"},"content":" public static void deleteTask(TaskList tasks, int i) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"howen02"},"content":" if (i \u003c 0 || i \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"howen02"},"content":" throw new InvalidIndexException();","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"howen02"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"howen02"},"content":" tasks.remove(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"howen02"},"content":" String o \u003d String.format(\"Noted. I\u0027ve removed this task:\\n %s\\nNow you have %d tasks in the list.\", task.toString(), tasks.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"howen02"},"content":" EncaseLines.display(o);","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"howen02"},"content":" public static void printHelp() {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"howen02"},"content":" EncaseLines.display(getFile(FilePath.HELP_PATH));","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"howen02":128}},{"path":"src/main/java/objects/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" private final String by;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" public Deadlines(String name, String by) {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" super(name);","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.by);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"howen02":16}},{"path":"src/main/java/objects/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class Events extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" private final String from;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" private final String to;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public Events(String name, String from, String to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" super(name);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.from, this.to);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"howen02":17}},{"path":"src/main/java/objects/FilePath.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class FilePath {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public static final String GRAPHICS_FOLDER \u003d \"./src/main/graphics/\";","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" public static final String LINE_PATH \u003d GRAPHICS_FOLDER + \"line.txt\";","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" public static final String LOGO_PATH \u003d GRAPHICS_FOLDER + \"snorlax.txt\";","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public static final String GREETING_PATH \u003d GRAPHICS_FOLDER + \"greeting.txt\";","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" public static final String EXIT_PATH \u003d GRAPHICS_FOLDER + \"exit.txt\";","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" public static final String HELP_PATH \u003d GRAPHICS_FOLDER + \"help.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"howen02":11}},{"path":"src/main/java/objects/Processor.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"import exception.DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import view.EncaseLines;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"import static objects.Commands.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"import static utils.InputUtil.getCommandType;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"public class Processor {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" public static void process (String input, TaskList tasks) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" input \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" String command \u003d getCommandType(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" switch (command) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" case LIST:","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" listTasks(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":" case MARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" case UNMARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":" case DELETE:","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":" processTask(tasks, input);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"howen02"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"howen02"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"howen02"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"howen02"},"content":" createTask(tasks, input);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"howen02"},"content":" case HELP:","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"howen02"},"content":" printHelp();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"howen02"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"howen02"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"howen02"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"howen02"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"howen02"},"content":" EncaseLines.display(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":45}},{"path":"src/main/java/objects/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" private final String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.name);","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":" };","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":" public void mark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"howen02"},"content":" public void unmark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"howen02"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":30}},{"path":"src/main/java/objects/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"public class TaskList extends ArrayList\u003cTask\u003e{","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" this.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" public void markTask(int i) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" Task task \u003d this.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" task.mark();","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" public void unmarkTask(int i) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" Task task \u003d this.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":" task.unmark();","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"howen02":25}},{"path":"src/main/java/objects/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package objects;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class ToDos extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public ToDos(String name) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" super(name);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"howen02":12}},{"path":"src/main/java/utils/DeadlineUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import objects.Deadlines;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import exception.InvalidDeadlineException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"public class DeadlineUtil {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public static Deadlines createDeadline(String input) throws InvalidDeadlineException {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" String[] parts \u003d input.split(\"/by\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" String name \u003d parts[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" // throw error if empty","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" String by \u003d parts.length \u003e 1 ? parts[1].trim() : \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" return new Deadlines(name, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":19}},{"path":"src/main/java/utils/EventUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import objects.Events;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import exception.InvalidEventException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"public class EventUtil {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public static Events createEvent(String input) throws InvalidEventException {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" if (!input.contains(\"/from\") || !input.contains(\"/to\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" throw new InvalidEventException();","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" String[] partsFrom \u003d input.split(\"/from\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" String name \u003d partsFrom[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":" String[] partsTo \u003d partsFrom[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" String from \u003d partsTo[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" String to \u003d partsTo[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" return new Events(name, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":21}},{"path":"src/main/java/utils/FileUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"public class FileUtil {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" public static String getFile(String path) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" if (System.getProperty(\"user.dir\").contains(\"text-ui-test\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" path \u003d \".\" + path;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" return Files.readString(Paths.get(path));","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":23}},{"path":"src/main/java/utils/InputUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import exception.InvalidCommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"public class InputUtil {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" public static int parseIndex(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" String[] parts \u003d input.split(\"\\\\s+\");","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" if (parts.length \u003e\u003d 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" return Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":" return -1;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"howen02"},"content":" public static String getCommandType(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"howen02"},"content":" return input.split(\" \", 2)[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"howen02"},"content":" public static String getDetails(String input) throws InvalidCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"howen02"},"content":" String[] details \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"howen02"},"content":" if (details.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"howen02"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"howen02"},"content":" return details[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":29}},{"path":"src/main/java/view/EncaseLines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public class EncaseLines {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public static void display(String string) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":" SingleLine.display();","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":" System.out.println(string);","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" SingleLine.display();","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":9}},{"path":"src/main/java/view/Exit.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import static objects.FilePath.EXIT_PATH;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import static utils.FileUtil.getFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"public class Exit {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public static void display() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" EncaseLines.display(getFile(EXIT_PATH));","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":10}},{"path":"src/main/java/view/Greeting.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import static objects.FilePath.GREETING_PATH;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import static objects.FilePath.LOGO_PATH;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"import static utils.FileUtil.getFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"public class Greeting extends UI {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" public static void display() {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" System.out.println(getFile(LOGO_PATH));","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":" EncaseLines.display(getFile(GREETING_PATH));","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":12}},{"path":"src/main/java/view/SingleLine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"import static objects.FilePath.LINE_PATH;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"import static utils.FileUtil.getFile;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"public class SingleLine extends UI {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":" public static void display() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":" String character \u003d getFile(LINE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":" String line \u003d String.valueOf(character).repeat(60);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"howen02"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"howen02"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":13}},{"path":"src/main/java/view/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"public abstract class UI {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":" public static void display() {};","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"howen02":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"howen02"},"content":"hello","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"howen02"},"content":"todo homework","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"howen02"},"content":"deadline project /by Monday","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"howen02"},"content":"event travel /from saturday /to tuesday","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"howen02"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"howen02"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"howen02"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"howen02"},"content":"unmark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"howen02"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"howen02"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"howen02":10}}] diff --git a/howen02_ip_master/commits.json b/howen02_ip_master/commits.json index 2ee332d8..ab211eba 100644 --- a/howen02_ip_master/commits.json +++ b/howen02_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"howen02":[{"date":"2024-01-25","commitResults":[{"hash":"57bb568a2d52a8e56d79e910b7de6a455bbaedc5","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":0},"java":{"insertions":38,"deletions":6}}},{"hash":"2453191e962f903f12669abf91d6e2cb6de92410","isMergeCommit":false,"messageTitle":"Edits","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":10,"deletions":5}}},{"hash":"b9d2c47afe437b47dc58a328acb12c170ec32c60","isMergeCommit":false,"messageTitle":"Abstracted line generation for easier symbol change","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":19,"deletions":4}}},{"hash":"1f9c14d0bb42daf4ca280aaca25bec3346177898","isMergeCommit":false,"messageTitle":"Abstracted line generation for easier symbol change","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":5}}},{"hash":"4833b49ab2e372424fb6838671d52898e85a8850","isMergeCommit":false,"messageTitle":"Echo feature added","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"53e0851027c4f1119888facdaf71f08b828d140e","isMergeCommit":false,"messageTitle":"Task feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":1}}},{"hash":"ef5435a56e96ee9efdd6299703682499b5b86395","isMergeCommit":false,"messageTitle":"Abstracting command processing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":7}}},{"hash":"2d8163b830ca07a1439db45501ee552fd6fc80cf","isMergeCommit":false,"messageTitle":"Modified stringlist into task and tasklist class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":34}}},{"hash":"20d98bceb2481526895eb9006d6c14031c78f5ff","isMergeCommit":false,"messageTitle":"added mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"04472d88042ed3b8801406edeeaee2ac37a9acd0","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":10}}},{"hash":"3b5244625a930ad6ee47ab9c210e200a4c0d356b","isMergeCommit":false,"messageTitle":"Changes to marking tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":16,"deletions":32}}},{"hash":"5a17edf857485206c9bc6593f9ae8ca75a46a066","isMergeCommit":false,"messageTitle":"Changed Processor to use switch case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":22}}},{"hash":"2d7374919510b64a0cb2c61a4cee6be5df243e7f","isMergeCommit":false,"messageTitle":"Encapsulated greeting and exiting into processor","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":34,"deletions":42}}},{"hash":"c19f37f27aefff61144a30dfa62881e35dd44f58","isMergeCommit":false,"messageTitle":"Added file paths to FilePath class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":25}}},{"hash":"960b5e6aa239729c043c5598d6eee2fec0b0f301","isMergeCommit":false,"messageTitle":"Automated file path editing when running testcases","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"1f34f73b60c41ed456c7307b77335b319b0c7f40","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":1}}},{"hash":"197f97064d47ff18bd8d8e3d013039bede4fd417","isMergeCommit":false,"messageTitle":"Rearranged files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":25,"deletions":8}}}]},{"date":"2024-01-27","commitResults":[{"hash":"8c3f398509f48a27f534c7b712b004c156a81242","isMergeCommit":false,"messageTitle":"Added error handling for invalid command, invalid index and invalid deadline/event creation","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":35}}},{"hash":"c318ceb744ea0116de822850ca0987439d7f3aff","isMergeCommit":false,"messageTitle":"Moved printing statements from TaskList to new Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":89}}},{"hash":"e19937c6cc0f3b3a39a8b0b845fe9c0c6a0c7d7b","isMergeCommit":false,"messageTitle":"added help command","messageBody":"","tags":["Level-6","Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":1},"java":{"insertions":13,"deletions":2}}}]},{"date":"2024-01-29","commitResults":[{"hash":"b1750b918a1722d009cd79970b48f9579a817681","isMergeCommit":false,"messageTitle":"Fix imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":60}}},{"hash":"068d380b47ddb3e0e323ea0b9f3d367e130666f4","isMergeCommit":false,"messageTitle":"Add EncaseLine, SingleLine, Greet and Exit to UI package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":25}}},{"hash":"b64c6657ada6a8521d9ad2cdc0ea3e3748d3a28d","isMergeCommit":false,"messageTitle":"Create utils package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":118}}}]}]},"authorFileTypeContributionMap":{"howen02":{"java":502,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":36}},"authorContributionVariance":{"howen02":39337.902},"authorDisplayNameMap":{"howen02":"CS2103T-T14-1 YAP .. WEN"}} +{"authorDailyContributionsMap":{"howen02":[{"date":"2024-01-25","commitResults":[{"hash":"57bb568a2d52a8e56d79e910b7de6a455bbaedc5","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":0},"java":{"insertions":38,"deletions":6}}},{"hash":"2453191e962f903f12669abf91d6e2cb6de92410","isMergeCommit":false,"messageTitle":"Edits","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":10,"deletions":5}}},{"hash":"b9d2c47afe437b47dc58a328acb12c170ec32c60","isMergeCommit":false,"messageTitle":"Abstracted line generation for easier symbol change","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":19,"deletions":4}}},{"hash":"1f9c14d0bb42daf4ca280aaca25bec3346177898","isMergeCommit":false,"messageTitle":"Abstracted line generation for easier symbol change","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":5}}},{"hash":"4833b49ab2e372424fb6838671d52898e85a8850","isMergeCommit":false,"messageTitle":"Echo feature added","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"53e0851027c4f1119888facdaf71f08b828d140e","isMergeCommit":false,"messageTitle":"Task feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":1}}},{"hash":"ef5435a56e96ee9efdd6299703682499b5b86395","isMergeCommit":false,"messageTitle":"Abstracting command processing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":7}}},{"hash":"2d8163b830ca07a1439db45501ee552fd6fc80cf","isMergeCommit":false,"messageTitle":"Modified stringlist into task and tasklist class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":34}}},{"hash":"20d98bceb2481526895eb9006d6c14031c78f5ff","isMergeCommit":false,"messageTitle":"added mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"04472d88042ed3b8801406edeeaee2ac37a9acd0","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":10}}},{"hash":"3b5244625a930ad6ee47ab9c210e200a4c0d356b","isMergeCommit":false,"messageTitle":"Changes to marking tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":16,"deletions":32}}},{"hash":"5a17edf857485206c9bc6593f9ae8ca75a46a066","isMergeCommit":false,"messageTitle":"Changed Processor to use switch case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":22}}},{"hash":"2d7374919510b64a0cb2c61a4cee6be5df243e7f","isMergeCommit":false,"messageTitle":"Encapsulated greeting and exiting into processor","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":34,"deletions":42}}},{"hash":"c19f37f27aefff61144a30dfa62881e35dd44f58","isMergeCommit":false,"messageTitle":"Added file paths to FilePath class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":25}}},{"hash":"960b5e6aa239729c043c5598d6eee2fec0b0f301","isMergeCommit":false,"messageTitle":"Automated file path editing when running testcases","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"1f34f73b60c41ed456c7307b77335b319b0c7f40","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":1}}},{"hash":"197f97064d47ff18bd8d8e3d013039bede4fd417","isMergeCommit":false,"messageTitle":"Rearranged files","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":25,"deletions":8}}}]},{"date":"2024-01-27","commitResults":[{"hash":"8c3f398509f48a27f534c7b712b004c156a81242","isMergeCommit":false,"messageTitle":"Added error handling for invalid command, invalid index and invalid deadline/event creation","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":35}}},{"hash":"c318ceb744ea0116de822850ca0987439d7f3aff","isMergeCommit":false,"messageTitle":"Moved printing statements from TaskList to new Command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":89}}},{"hash":"e19937c6cc0f3b3a39a8b0b845fe9c0c6a0c7d7b","isMergeCommit":false,"messageTitle":"added help command","messageBody":"","tags":["Level-6","Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":1},"java":{"insertions":13,"deletions":2}}}]},{"date":"2024-01-29","commitResults":[{"hash":"b1750b918a1722d009cd79970b48f9579a817681","isMergeCommit":false,"messageTitle":"Fix imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":60}}},{"hash":"068d380b47ddb3e0e323ea0b9f3d367e130666f4","isMergeCommit":false,"messageTitle":"Add EncaseLine, SingleLine, Greet and Exit to UI package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":25}}},{"hash":"b64c6657ada6a8521d9ad2cdc0ea3e3748d3a28d","isMergeCommit":false,"messageTitle":"Create utils package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":118}}}]},{"date":"2024-01-30","commitResults":[{"hash":"f8ede8d7963925948910fdab615c94b91906c3f8","isMergeCommit":false,"messageTitle":"Edit utils","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":32}}}]}]},"authorFileTypeContributionMap":{"howen02":{"java":482,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":36}},"authorContributionVariance":{"howen02":36871.582},"authorDisplayNameMap":{"howen02":"CS2103T-T14-1 YAP .. WEN"}} diff --git a/iamtr_ip_master/authorship.json b/iamtr_ip_master/authorship.json index ccbc0559..46345d46 100644 --- a/iamtr_ip_master/authorship.json +++ b/iamtr_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iamtr"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"iamtr"},"content":"import java.util.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"iamtr"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"iamtr"},"content":" private List\u003cString\u003e todolist \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"iamtr"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"iamtr"},"content":" private static final String sep \u003d \"\\t__________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"iamtr"},"content":" // hi","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"iamtr"},"content":" System.out.println(\"\\tHello! I\u0027m JOSEPH JOSHTUR!!!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"iamtr"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"iamtr"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"iamtr"},"content":" duke.handleInput();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"iamtr"},"content":" // bye","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"iamtr"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"iamtr"},"content":" public void handleInput() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"iamtr"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"iamtr"},"content":" while (!command.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"iamtr"},"content":" String output \u003d new String();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"iamtr"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"iamtr"},"content":" case \"\":","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"iamtr"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"iamtr"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"iamtr"},"content":" int i \u003d 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"iamtr"},"content":" for(String todo : todolist) {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"iamtr"},"content":" output \u003d output.concat(i + \". \" + todo + \"\\n\\t\");","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"iamtr"},"content":" i++;","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"iamtr"},"content":" output \u003d output.trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"iamtr"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"iamtr"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"iamtr"},"content":" output \u003d \"added: \" + command;","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"iamtr"},"content":" todolist.add(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"iamtr"},"content":" if (!output.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"iamtr"},"content":" System.out.println(\"\\t\" + output);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"iamtr"},"content":" command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":53,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"iamtr"},"content":" public void addItem(String item) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"iamtr"},"content":" todolist.add(item);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"iamtr":52,"-":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iamtr"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"iamtr"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"iamtr"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"iamtr"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"iamtr"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"iamtr"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"iamtr"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"iamtr"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"iamtr"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"iamtr":13}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iamtr"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"iamtr"},"content":"import java.util.List;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"iamtr"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"iamtr"},"content":" private List\u003cTask\u003e todolist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"iamtr"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"iamtr"},"content":" private static final String sep \u003d \"\\t__________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"iamtr"},"content":" // hi","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"iamtr"},"content":" System.out.println(\"\\tHello! I\u0027m JOSEPH JOSHTUR!!!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"iamtr"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"iamtr"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"iamtr"},"content":" duke.handleInput();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"iamtr"},"content":" // bye","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"iamtr"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"iamtr"},"content":" public void handleInput() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"iamtr"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"iamtr"},"content":" String command \u003d input.split(\" \")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"iamtr"},"content":" int taskToMark \u003d -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"iamtr"},"content":" while (!command.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"iamtr"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"iamtr"},"content":" switch (command) {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"iamtr"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"iamtr"},"content":" int i \u003d 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"iamtr"},"content":" for(Task todo : todolist) {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"iamtr"},"content":" output \u003d output.concat(i + \". \" + todo.getTaskDescription() + \"\\n\\t\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"iamtr"},"content":" i++;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"iamtr"},"content":" output \u003d output.trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"iamtr"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"iamtr"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"iamtr"},"content":" taskToMark \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"iamtr"},"content":" todolist.get(taskToMark).markAsDone(true);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"iamtr"},"content":" output \u003d \"Nice! I\u0027ve marked this task as done:\\n\\t\" + todolist.get(taskToMark).getTaskDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"iamtr"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"iamtr"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"iamtr"},"content":" taskToMark \u003d Integer.parseInt(input.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"iamtr"},"content":" todolist.get(taskToMark).markAsDone(false);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"iamtr"},"content":" output \u003d \"OK, I\u0027ve marked this task as not done yet:\\n\\t\" + todolist.get(taskToMark).getTaskDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"iamtr"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"iamtr"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"iamtr"},"content":" Task newtask \u003d new Task(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"iamtr"},"content":" output \u003d \"added: \" + input;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"iamtr"},"content":" addItem(newtask);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"iamtr"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"iamtr"},"content":" if (!output.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"iamtr"},"content":" System.out.println(\"\\t\" + output);","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"iamtr"},"content":" System.out.println(sep);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"iamtr"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"iamtr"},"content":" command \u003d input.split(\" \")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":67,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"iamtr"},"content":" public void addItem(Task item) {","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"iamtr"},"content":" todolist.add(item);","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"iamtr":66,"-":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"iamtr"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"iamtr"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"iamtr"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"iamtr"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"iamtr"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"iamtr"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"iamtr"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"iamtr"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"iamtr"},"content":" public String getTaskDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"iamtr"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"iamtr"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"iamtr"},"content":" public void markAsDone(boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"iamtr"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"iamtr"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"iamtr"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"iamtr":21}}] diff --git a/iamtr_ip_master/commits.json b/iamtr_ip_master/commits.json index bdf80bc8..6ebcafc0 100644 --- a/iamtr_ip_master/commits.json +++ b/iamtr_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"iamtr":[{"date":"2024-01-24","commitResults":[{"hash":"5d276a172a22042d9d0c4e1adb7d89b48aef2fbc","isMergeCommit":false,"messageTitle":"Changed greeting message for Duke","messageBody":"Changed name to Joseph and also added greeting messages for Level 0\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"ac93cde03bee3433454681ea869b92f23464d04d","isMergeCommit":false,"messageTitle":"Completed Level 1 - Echo","messageBody":"Program now will echo whatever user types\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"86788ad859a7734d927ec4cff3b6deb1f690040d","isMergeCommit":false,"messageTitle":"Created an todolist ArrayList and addItem method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"e4145fae0dc843fa99529b9e9a382b9761c2b327","isMergeCommit":false,"messageTitle":"Implemented handleInput() method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":11}}},{"hash":"674bf59cc63dbc124fe093840af07cd432e13dd9","isMergeCommit":false,"messageTitle":"Handled issue where item is added even though there is no text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":3}}},{"hash":"3c989048c41f662188d5df622ebd17d78c5d2145","isMergeCommit":false,"messageTitle":"Created Task.java for storing and managing task data","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"8127beac75d0e18f85009b9ab1a293c64359d10d","isMergeCommit":false,"messageTitle":"Removed extra newline where calling \u0027list\u0027 command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"iamtr":{"java":65,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"iamtr":681.347},"authorDisplayNameMap":{"iamtr":"CS2103T-F10-1 ONG .. JET"}} +{"authorDailyContributionsMap":{"iamtr":[{"date":"2024-01-24","commitResults":[{"hash":"5d276a172a22042d9d0c4e1adb7d89b48aef2fbc","isMergeCommit":false,"messageTitle":"Changed greeting message for Duke","messageBody":"Changed name to Joseph and also added greeting messages for Level 0\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"ac93cde03bee3433454681ea869b92f23464d04d","isMergeCommit":false,"messageTitle":"Completed Level 1 - Echo","messageBody":"Program now will echo whatever user types\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"86788ad859a7734d927ec4cff3b6deb1f690040d","isMergeCommit":false,"messageTitle":"Created an todolist ArrayList and addItem method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"e4145fae0dc843fa99529b9e9a382b9761c2b327","isMergeCommit":false,"messageTitle":"Implemented handleInput() method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":11}}},{"hash":"674bf59cc63dbc124fe093840af07cd432e13dd9","isMergeCommit":false,"messageTitle":"Handled issue where item is added even though there is no text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":3}}},{"hash":"3c989048c41f662188d5df622ebd17d78c5d2145","isMergeCommit":false,"messageTitle":"Created Task.java for storing and managing task data","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"8127beac75d0e18f85009b9ab1a293c64359d10d","isMergeCommit":false,"messageTitle":"Removed extra newline where calling \u0027list\u0027 command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"96e0d6dfea113fcbe8149e2d7723103f3e9b15bd","isMergeCommit":false,"messageTitle":"Added getTaskDescription method for Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"fa18e362fa9a9819f1c6c6acb1a419cff468d8d6","isMergeCommit":false,"messageTitle":"Changed todolist from type string to a Task type","messageBody":"- Changed relevant helper methods as well\n","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"f3dd539abee610c2ed13882b27156e7f391d059e","isMergeCommit":false,"messageTitle":"Add markAsDone() method","messageBody":"This changes the isDone boolean in Task to true\n","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"883779902436f3f28843b6d217429e6e5dde6f9b","isMergeCommit":false,"messageTitle":"Refactor variable name \"command\" to \"input\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}},{"hash":"f0eac32220f5941df4dbafd077dd6e89bce32739","isMergeCommit":false,"messageTitle":"Modify markAsDone() method to accept an argument","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"b0886e58349b4c1938613e0914d9df662336e355","isMergeCommit":false,"messageTitle":"Add mark and unmark functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":15}}}]}]},"authorFileTypeContributionMap":{"iamtr":{"java":87,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"iamtr":778.0555},"authorDisplayNameMap":{"iamtr":"CS2103T-F10-1 ONG .. JET"}} diff --git a/irwynliong_ip_master/authorship.json b/irwynliong_ip_master/authorship.json index f2dcfaf8..96a81397 100644 --- a/irwynliong_ip_master/authorship.json +++ b/irwynliong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Exceptions/CommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class CommandException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public CommandException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" \"Sorry, Invalid Command\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" + \"use /by (date/time) for deadlines or use /from (date/time) and /to (date/time) for events\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" + \"Please try again!\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" );","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":11}},{"path":"src/main/java/Exceptions/InputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class InputException extends IrwynException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public InputException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":7}},{"path":"src/main/java/Exceptions/IrwynException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class IrwynException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public IrwynException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":7}},{"path":"src/main/java/Exceptions/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class TaskException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public TaskException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" \"Invalid task type\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" + \"Please use either todo | event | deadline\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" );","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":10}},{"path":"src/main/java/Irwyn.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"import Exceptions.CommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"import Exceptions.InputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"import Exceptions.TaskException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"public class Irwyn {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" String linebreak \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" String start \u003d linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" + \"Hello! I\u0027m Irwyn\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":" + linebreak;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":" System.out.println(start);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" String userInput \u003d input.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":" while (!userInput.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"irwynliong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"irwynliong"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"irwynliong"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"irwynliong"},"content":" list.get(index).mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(index) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" list.get(index).unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(index) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":" + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"irwynliong"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" System.out.println(i + 1 + \".\" + list.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" if (userInput.trim().equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"irwynliong"},"content":" throw new InputException(\"Description of a todo cannot be empty!\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d userInput.substring(5);","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":" list.add(new ToDo(taskDescription));","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"irwynliong"},"content":" if (!userInput.contains(\" /by \")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"irwynliong"},"content":" throw new CommandException();","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"irwynliong"},"content":" String[] parts \u003d userInput.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d parts[0].substring(9);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" String by \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"irwynliong"},"content":" list.add(new Deadline(taskDescription, by));","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"irwynliong"},"content":" if (!userInput.contains(\" /from \") || !userInput.contains(\" /to \")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"irwynliong"},"content":" throw new CommandException();","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"irwynliong"},"content":" String[] parts \u003d userInput.split(\" /from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d parts[0].substring(6);","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"irwynliong"},"content":" String from \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"irwynliong"},"content":" String to \u003d parts[2];","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"irwynliong"},"content":" list.add(new Event(taskDescription, from, to));","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"irwynliong"},"content":" Task removedTask \u003d list.remove(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"irwynliong"},"content":" + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"irwynliong"},"content":" + \" \" + removedTask + \"\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"irwynliong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"irwynliong"},"content":" throw new TaskException();","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"irwynliong"},"content":" } catch (InputException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"irwynliong"},"content":" + e.getMessage()","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"irwynliong"},"content":" userInput \u003d input.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"irwynliong"},"content":" String end \u003d linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"irwynliong"},"content":" + \"Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"irwynliong"},"content":" + linebreak;","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"irwynliong"},"content":" System.out.println(end);","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":112}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":16}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" protected String start;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" protected String end;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" public Event (String description, String start, String end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":18}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" public void mark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" public void unmark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" return \"[\" + getStatusIcon() + \"] \" + description; // Override toString method to print task status","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":26}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"todo level-3","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"todo level-4","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"deadline project duke /by Thursday 2359hrs","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"event hackathon /from Saturday 1000hrs /to Sunday 2000hrs","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"unmark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":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":"irwynliong"},"content":"echo ********** BUILD SUCCESS **********","lastModifiedDate":"2024-01-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":"irwynliong"},"content":"java -classpath ..\\bin Irwyn \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"irwynliong":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":"irwynliong"},"content":" mainClass.set(\"Irwyn\")","lastModifiedDate":"2024-01-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":"irwynliong"},"content":" archiveBaseName \u003d \"Irwyn\"","lastModifiedDate":"2024-01-30"},{"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":{"irwynliong":2,"-":40}},{"path":"src/main/java/Exceptions/CommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class CommandException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public CommandException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" \"Sorry, Invalid Command\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" + \"use /by (date/time) for deadlines or use /from (date/time) and /to (date/time) for events\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" + \"Please try again!\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" );","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":11}},{"path":"src/main/java/Exceptions/InputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class InputException extends IrwynException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public InputException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":7}},{"path":"src/main/java/Exceptions/IrwynException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class IrwynException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public IrwynException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":7}},{"path":"src/main/java/Exceptions/TaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class TaskException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" public TaskException() {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" super(","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" \"Invalid task type\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" + \"Please use either todo | event | deadline\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" );","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"irwynliong":10}},{"path":"src/main/java/Irwyn.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"import Exceptions.CommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"import Exceptions.InputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"import Exceptions.TaskException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"public class Irwyn {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" String linebreak \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" String start \u003d linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" + \"Hello! I\u0027m Irwyn\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" + \"What can I do for you?\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":" + linebreak;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":" System.out.println(start);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" String userInput \u003d input.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":" while (!userInput.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"irwynliong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"irwynliong"},"content":" if (userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"irwynliong"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"irwynliong"},"content":" list.get(index).mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" + \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(index) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" list.get(index).unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(index) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":" + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"irwynliong"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" System.out.println(i + 1 + \".\" + list.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" if (userInput.trim().equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"irwynliong"},"content":" throw new InputException(\"Description of a todo cannot be empty!\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d userInput.substring(5);","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":" list.add(new ToDo(taskDescription));","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"irwynliong"},"content":" if (!userInput.contains(\" /by \")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"irwynliong"},"content":" throw new CommandException();","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"irwynliong"},"content":" String[] parts \u003d userInput.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d parts[0].substring(9);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" String by \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"irwynliong"},"content":" list.add(new Deadline(taskDescription, by));","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"irwynliong"},"content":" if (!userInput.contains(\" /from \") || !userInput.contains(\" /to \")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"irwynliong"},"content":" throw new CommandException();","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"irwynliong"},"content":" String[] parts \u003d userInput.split(\" /from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"irwynliong"},"content":" String taskDescription \u003d parts[0].substring(6);","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"irwynliong"},"content":" String from \u003d parts[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"irwynliong"},"content":" String to \u003d parts[2];","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"irwynliong"},"content":" list.add(new Event(taskDescription, from, to));","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"irwynliong"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"irwynliong"},"content":" + \" \" + list.get(list.size() - 1) + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"irwynliong"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"irwynliong"},"content":" int index \u003d Integer.parseInt(userInput.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"irwynliong"},"content":" Task removedTask \u003d list.remove(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"irwynliong"},"content":" + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"irwynliong"},"content":" + \" \" + removedTask + \"\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"irwynliong"},"content":" + \"Now you have \" + list.size() + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"irwynliong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"irwynliong"},"content":" throw new TaskException();","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"irwynliong"},"content":" } catch (InputException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" System.out.println(linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"irwynliong"},"content":" + e.getMessage()","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"irwynliong"},"content":" + linebreak);","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"irwynliong"},"content":" userInput \u003d input.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"irwynliong"},"content":" String end \u003d linebreak","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"irwynliong"},"content":" + \"Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"irwynliong"},"content":" + linebreak;","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"irwynliong"},"content":" System.out.println(end);","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":112}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":16}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" protected String start;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" protected String end;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" public Event (String description, String start, String end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":18}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" public void mark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" public void unmark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" return \"[\" + getStatusIcon() + \"] \" + description; // Override toString method to print task status","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":26}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package Tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"todo level-3","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"todo level-4","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"deadline project duke /by Thursday 2359hrs","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"event hackathon /from Saturday 1000hrs /to Sunday 2000hrs","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"unmark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"irwynliong":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":"irwynliong"},"content":"echo ********** BUILD SUCCESS **********","lastModifiedDate":"2024-01-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":"irwynliong"},"content":"java -classpath ..\\bin Irwyn \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"irwynliong":2,"-":19}}] diff --git a/irwynliong_ip_master/commits.json b/irwynliong_ip_master/commits.json index 41bf45e0..6213d612 100644 --- a/irwynliong_ip_master/commits.json +++ b/irwynliong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"irwynliong":[{"date":"2024-01-25","commitResults":[{"hash":"fb2d401cc5cb1f4649b979a1d35b916529f86de4","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"45ebb4c5e3a13ad9683fa6bf5488f711da002d85","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"c547c1a901f66757b66a22d5143c2cffd03a4965","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":8}}},{"hash":"6971bf606881f4333683fcb2c49fcb3c9c730a7a","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}},{"hash":"8b59bf92f338abe7a4b9fd7349b8ff2137352811","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":0}}},{"hash":"e6b16b8e510f70842142f18e03bef72fefad3fa9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-26","commitResults":[{"hash":"7d590b742089b40b2d5f3cb6d4f475fe1399c157","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":54}}},{"hash":"92f7734f56fc90c645c58f015f787faa7ac775cf","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"4e3e288f3f0c0e7480eac329fee89aef63c5fba8","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"e72874297301170d70ed678883f298f05bc2ffbe","isMergeCommit":false,"messageTitle":"Revert \"Level 6. Delete\"","messageBody":"This reverts commit 4e3e288f3f0c0e7480eac329fee89aef63c5fba8.\n","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"6ab6167bb2b4f2c2e53e4fe1bbee543a90d0f751","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Level 6. Delete\"\"","messageBody":"This reverts commit e72874297301170d70ed678883f298f05bc2ffbe.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}}]},{"date":"2024-01-30","commitResults":[{"hash":"d77a077f40d85f3c2d51907c20c315164337d8ac","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":3}}},{"hash":"76f4380c2ba488ad3922139f2d775644653e5a5e","isMergeCommit":true,"messageTitle":"Merge pull request #1 from irwynliong/heads/A-Packages","messageBody":"Divide classes into packages","fileTypesAndContributionMap":{}},{"hash":"ea7591f73d38b07828b942797b4d1a08ada18b19","isMergeCommit":true,"messageTitle":"Merge pull request #2 from irwynliong/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"irwynliong":{"java":220,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":12}},"authorContributionVariance":{"irwynliong":4873.9165},"authorDisplayNameMap":{"irwynliong":"CS2103T-W09-4 LION..RWYN"}} +{"authorDailyContributionsMap":{"irwynliong":[{"date":"2024-01-25","commitResults":[{"hash":"fb2d401cc5cb1f4649b979a1d35b916529f86de4","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"45ebb4c5e3a13ad9683fa6bf5488f711da002d85","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"c547c1a901f66757b66a22d5143c2cffd03a4965","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":8}}},{"hash":"6971bf606881f4333683fcb2c49fcb3c9c730a7a","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}},{"hash":"8b59bf92f338abe7a4b9fd7349b8ff2137352811","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":0}}},{"hash":"e6b16b8e510f70842142f18e03bef72fefad3fa9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-26","commitResults":[{"hash":"7d590b742089b40b2d5f3cb6d4f475fe1399c157","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":54}}},{"hash":"92f7734f56fc90c645c58f015f787faa7ac775cf","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"4e3e288f3f0c0e7480eac329fee89aef63c5fba8","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"e72874297301170d70ed678883f298f05bc2ffbe","isMergeCommit":false,"messageTitle":"Revert \"Level 6. Delete\"","messageBody":"This reverts commit 4e3e288f3f0c0e7480eac329fee89aef63c5fba8.\n","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"6ab6167bb2b4f2c2e53e4fe1bbee543a90d0f751","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Level 6. Delete\"\"","messageBody":"This reverts commit e72874297301170d70ed678883f298f05bc2ffbe.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}}]},{"date":"2024-01-30","commitResults":[{"hash":"d77a077f40d85f3c2d51907c20c315164337d8ac","isMergeCommit":false,"messageTitle":"Divide classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":3}}},{"hash":"76f4380c2ba488ad3922139f2d775644653e5a5e","isMergeCommit":true,"messageTitle":"Merge pull request #1 from irwynliong/heads/A-Packages","messageBody":"Divide classes into packages","fileTypesAndContributionMap":{}},{"hash":"ea7591f73d38b07828b942797b4d1a08ada18b19","isMergeCommit":true,"messageTitle":"Merge pull request #2 from irwynliong/add-gradle-support","messageBody":"Add gradle support","fileTypesAndContributionMap":{}},{"hash":"736ccce6813453c3badef9a79a5cc4afd1e9e73f","isMergeCommit":false,"messageTitle":"Add gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"irwynliong":{"java":220,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":2,"txt":12}},"authorContributionVariance":{"irwynliong":4876.1387},"authorDisplayNameMap":{"irwynliong":"CS2103T-W09-4 LION..RWYN"}} diff --git a/jamessinmaojun_ip_master/authorship.json b/jamessinmaojun_ip_master/authorship.json index 85bbec41..395c0456 100644 --- a/jamessinmaojun_ip_master/authorship.json +++ b/jamessinmaojun_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" String type \u003d \"[D]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" LocalDate deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" this.deadline \u003d LocalDate.parse(deadline.replace(\" \", \"\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" return this.type + this.display + \" \" + this.description + \"(by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" public String toDBString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" String display;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(this.display, \"[ ]\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"1\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" return \"D|\" + display + \"|\" + this.description + \"|\" + this.deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":29}},{"path":"src/main/java/DeleteInvalidException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class DeleteInvalidException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public DeleteInvalidException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Please enter a valid integer after delete.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.nio.file.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" String divider \u003d \"--------------------------------------------------\";","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" enum Commands {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" bye, list, mark, unmark, todo, deadline, event, delete","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" public String[] splitCommand(String command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" String words[] \u003d command.split(\"\\\\s+\");","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" String currentString \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" ArrayList\u003cString\u003e result \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" for (int i \u003d 0; i \u003c words.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" result.add(words[i]);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" if (words[i].charAt(0) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" result.add(currentString);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" currentString \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" currentString +\u003d words[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" if (!currentString.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" result.add(currentString);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" return result.toArray(new String[0]);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" public boolean parseCommand() throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(this.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" switch (Commands.valueOf(splitCommand(command)[0])) {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" case bye:","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" case list:","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" Task currentTask \u003d this.taskList.get(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(i + 1 + \".\" + currentTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(this.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" case mark:","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" String markMessage \u003d \"Nice! I\u0027ve marked this task as done:\\n \";","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" String[] commandList \u003d splitCommand(command);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" if (commandList.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" throw new MarkInvalidException(\"mark\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" int index \u003d Integer.parseInt(commandList[1].replaceAll(\"\\\\s\", \"\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" if (index \u003c 1 || index \u003e this.taskList.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" throw new MarkInvalidException(\"mark\");","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" Task currentTask \u003d this.taskList.get(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" currentTask.changeDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(markMessage + currentTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(this.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" throw new MarkInvalidException(\"mark\");","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" case unmark:","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"jamessinmaojun"},"content":" markMessage \u003d \"Ok, I\u0027ve marked this task as not done yet:\\n \";","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" String[] commandList \u003d splitCommand(command);","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" if (commandList.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"jamessinmaojun"},"content":" throw new MarkInvalidException(\"unmark\");","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"jamessinmaojun"},"content":" int index \u003d Integer.parseInt(commandList[1].replaceAll(\"\\\\s\", \"\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"jamessinmaojun"},"content":" if (index \u003c 1 || index \u003e this.taskList.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"jamessinmaojun"},"content":" throw new MarkInvalidException(\"unmark\");","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" Task currentTask \u003d this.taskList.get(index - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" currentTask.changeDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(markMessage + currentTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(this.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"jamessinmaojun"},"content":" throw new MarkInvalidException(\"unmark\");","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" case todo:","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" String[] commandList \u003d splitCommand(command);","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"jamessinmaojun"},"content":" if (commandList.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"jamessinmaojun"},"content":" throw new MissingTodoException();","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"jamessinmaojun"},"content":" Todo currentTodo \u003d new Todo(commandList[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" this.taskList.add(currentTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + currentTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Now you have \" + this.taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(this.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"jamessinmaojun"},"content":" case deadline:","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"jamessinmaojun"},"content":" commandList \u003d splitCommand(command);","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":" if (commandList.length \u003c\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"jamessinmaojun"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"jamessinmaojun"},"content":" Deadline currentDeadline \u003d new Deadline(commandList[1], commandList[2]);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"jamessinmaojun"},"content":" this.taskList.add(currentDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Got it. I\u0027ve added thi task:\\n \" + currentDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Now you have \" + this.taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(this.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"jamessinmaojun"},"content":" case event:","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"jamessinmaojun"},"content":" commandList \u003d splitCommand(command);","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"jamessinmaojun"},"content":" if (commandList.length \u003c\u003d 3) {","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"jamessinmaojun"},"content":" throw new MissingEventException();","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"jamessinmaojun"},"content":" Event currentEvent \u003d new Event(commandList[1], commandList[2], commandList[3]);","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"jamessinmaojun"},"content":" this.taskList.add(currentEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Got it. I\u0027ve added thi task:\\n \" + currentEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Now you have \" + this.taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(this.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"jamessinmaojun"},"content":" case delete:","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"jamessinmaojun"},"content":" String deleteMessage \u003d \"Noted. I\u0027ve removed this task:\\n \";","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"jamessinmaojun"},"content":" commandList \u003d splitCommand(command);","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"jamessinmaojun"},"content":" if (commandList.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"jamessinmaojun"},"content":" throw new DeleteInvalidException();","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"jamessinmaojun"},"content":" int deleteIndex \u003d Integer.parseInt(commandList[1].replaceAll(\"\\\\s\", \"\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"jamessinmaojun"},"content":" if (deleteIndex \u003c 1 || deleteIndex \u003e this.taskList.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"jamessinmaojun"},"content":" throw new DeleteInvalidException();","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"jamessinmaojun"},"content":" Task deleteTask \u003d this.taskList.get(deleteIndex - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"jamessinmaojun"},"content":" this.taskList.remove(deleteTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(deleteMessage + deleteTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(this.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"jamessinmaojun"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"jamessinmaojun"},"content":" throw new DeleteInvalidException();","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"jamessinmaojun"},"content":" saveDB();","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"jamessinmaojun"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"jamessinmaojun"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"jamessinmaojun"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"jamessinmaojun"},"content":" public void loadDB() {","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"jamessinmaojun"},"content":" String relativeFilePath \u003d \"src/db.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"jamessinmaojun"},"content":" Path absolutePath \u003d Paths.get(relativeFilePath).toAbsolutePath();","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"jamessinmaojun"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"jamessinmaojun"},"content":" if (!Files.exists(absolutePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"jamessinmaojun"},"content":" Files.createFile(absolutePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Welcome to theGiantPeach!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"jamessinmaojun"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(absolutePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"jamessinmaojun"},"content":" // Process the lines","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"jamessinmaojun"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"jamessinmaojun"},"content":" String[] words \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"jamessinmaojun"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"jamessinmaojun"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"jamessinmaojun"},"content":" Todo todo \u003d new Todo(words[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(words[1], \"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"jamessinmaojun"},"content":" todo.changeDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"jamessinmaojun"},"content":" taskList.add(todo);","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"jamessinmaojun"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"jamessinmaojun"},"content":" Deadline deadline \u003d new Deadline(words[2], words[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(words[1], \"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"jamessinmaojun"},"content":" deadline.changeDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"jamessinmaojun"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"jamessinmaojun"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"jamessinmaojun"},"content":" Event event \u003d new Event(words[2], words[3], words[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(words[1], \"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"jamessinmaojun"},"content":" event.changeDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"jamessinmaojun"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"jamessinmaojun"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"jamessinmaojun"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"jamessinmaojun"},"content":" public void saveDB() {","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"jamessinmaojun"},"content":" List\u003cString\u003e linesToWrite \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"jamessinmaojun"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":200,"author":{"gitId":"jamessinmaojun"},"content":" linesToWrite.add(this.taskList.get(i).toDBString());","lastModifiedDate":"2024-01-29"},{"lineNumber":201,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":202,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":203,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":204,"author":{"gitId":"jamessinmaojun"},"content":" String relativeFilePath \u003d \"src/db.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":205,"author":{"gitId":"jamessinmaojun"},"content":" Path absolutePath \u003d Paths.get(relativeFilePath).toAbsolutePath();","lastModifiedDate":"2024-01-29"},{"lineNumber":206,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":207,"author":{"gitId":"jamessinmaojun"},"content":" Files.write(absolutePath, linesToWrite, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE);","lastModifiedDate":"2024-01-29"},{"lineNumber":208,"author":{"gitId":"jamessinmaojun"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"jamessinmaojun"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":210,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":211,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":212,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":213,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":215,"author":{"gitId":"jamessinmaojun"},"content":" Duke theGiantPeach \u003d new Duke();","lastModifiedDate":"2024-01-24"},{"lineNumber":216,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":217,"author":{"gitId":"jamessinmaojun"},"content":" theGiantPeach.loadDB();","lastModifiedDate":"2024-01-29"},{"lineNumber":218,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":219,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(theGiantPeach.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":220,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Hello! I\u0027m TheGiantPeach\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":221,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(theGiantPeach.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":223,"author":{"gitId":"jamessinmaojun"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":224,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":225,"author":{"gitId":"jamessinmaojun"},"content":" if (!theGiantPeach.parseCommand()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":226,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":227,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"jamessinmaojun"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":229,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(theGiantPeach.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":231,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":232,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":233,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":234,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(theGiantPeach.divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jamessinmaojun":232,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" String type \u003d \"[E]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" LocalDate start;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" LocalDate end;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" this.start \u003d LocalDate.parse(start.replace(\" \", \"\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" this.end \u003d LocalDate.parse(end.replace(\" \", \"\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" return this.type + this.display + \" \" + this.description + \"(from: \" + this.start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \"to: \" + this.end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" public String toDBString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" String display;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(this.display, \"[ ]\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"1\";","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" return \"E|\" + display + \"|\" + this.description + \"|\" + this.start + \"|\" + this.end;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":31}},{"path":"src/main/java/MarkInvalidException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class MarkInvalidException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public MarkInvalidException(String command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Please enter a valid integer after a \" + command + \" command.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/MissingDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class MissingDeadlineException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public MissingDeadlineException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Please enter a deadline.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/MissingEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class MissingEventException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public MissingEventException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Please enter a start and end for the event.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/MissingTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class MissingTodoException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public MissingTodoException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Your todo\u0027s description must not be empty!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" boolean done;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" String display;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" this.display \u003d \"[ ]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" public void changeDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" this.done \u003d !this.done;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" if (this.done) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" this.display \u003d \"[X]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" this.display \u003d \"[ ]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" public String toDBString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" return \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":24}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" String type \u003d \"[T]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" return this.type + this.display + \" \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" public String toDBString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" String display;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(this.display, \"[ ]\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"1\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" return \"T|\" + display + \"|\" + this.description;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":25}},{"path":"src/main/java/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class UnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public UnknownCommandException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"I\u0027m sorry, but I don\u0027t understand what you mean :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"todo wash hands","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"jamessinmaojun":1}}] +[{"path":"src/main/java/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" } catch (SaveStorageException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":14}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public abstract void execute(TaskList taskList, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" String type \u003d \"[D]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" LocalDate deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" this.deadline \u003d LocalDate.parse(deadline.replace(\" \", \"\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" return this.type + this.display + \" \" + this.description + \"(by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" public String toDBString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" String display;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(this.display, \"[ ]\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"1\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" return \"D|\" + display + \"|\" + this.description + \"|\" + this.deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":29}},{"path":"src/main/java/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" String[] commandList;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" public DeadlineCommand(String[] commandList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" this.commandList \u003d commandList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws MissingDeadlineException {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" if (this.commandList.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" Deadline currentDeadline \u003d new Deadline(commandList[1], commandList[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" taskList.add(currentDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + currentDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" } catch (SaveStorageException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":27}},{"path":"src/main/java/DefaultCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class DefaultCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {}","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":7}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" String[] commandList;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" public DeleteCommand(String[] commandList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" this.commandList \u003d commandList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws DeleteInvalidException {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" String deleteMessage \u003d \"Noted. I\u0027ve removed this task:\\n \";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" if (this.commandList.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" throw new DeleteInvalidException();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" int deleteIndex \u003d Integer.parseInt(commandList[1].replaceAll(\"\\\\s\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" if (deleteIndex \u003c 1 || deleteIndex \u003e taskList.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" throw new DeleteInvalidException();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" Task deleteTask \u003d taskList.get(deleteIndex - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" taskList.remove(deleteTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(deleteMessage + deleteTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" throw new DeleteInvalidException();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" } catch (SaveStorageException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":33}},{"path":"src/main/java/DeleteInvalidException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class DeleteInvalidException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public DeleteInvalidException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Please enter a valid integer after delete.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.nio.file.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" public Duke(String relativeFilePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" this.storage \u003d new Storage(relativeFilePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" this.taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" } catch (LoadStorageException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" c.execute(taskList, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" new Duke(\"src/db.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jamessinmaojun":39,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" String type \u003d \"[E]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" LocalDate start;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" LocalDate end;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" this.start \u003d LocalDate.parse(start.replace(\" \", \"\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" this.end \u003d LocalDate.parse(end.replace(\" \", \"\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" return this.type + this.display + \" \" + this.description + \"(from: \" + this.start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \"to: \" + this.end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" public String toDBString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" String display;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(this.display, \"[ ]\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"1\";","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" return \"E|\" + display + \"|\" + this.description + \"|\" + this.start + \"|\" + this.end;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":31}},{"path":"src/main/java/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" String[] commandList;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" public EventCommand(String[] commandList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" this.commandList \u003d commandList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws MissingEventException {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" if (this.commandList.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" throw new MissingEventException();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" Event currentEvent \u003d new Event(commandList[1], commandList[2], commandList[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" taskList.add(currentEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + currentEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" } catch (SaveStorageException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":27}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" Task currentTask \u003d taskList.get(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(i + 1 + \".\" + currentTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":13}},{"path":"src/main/java/LoadStorageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class LoadStorageException extends DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public LoadStorageException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Failed to load storage.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" String[] commandList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" String type;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" public MarkCommand(String[] commandList, String type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" this.commandList \u003d commandList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws MarkInvalidException {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" String markMessage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(this.type, \"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" markMessage \u003d \"Nice! I\u0027ve marked this task as done:\\n \";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" markMessage \u003d \"Ok, I\u0027ve marked this task as not done yet:\\n \";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" if (this.commandList.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" throw new MarkInvalidException(this.type);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" int index \u003d Integer.parseInt(commandList[1].replaceAll(\"\\\\s\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" if (index \u003c 1 || index \u003e taskList.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" throw new MarkInvalidException(this.type);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" Task currentTask \u003d taskList.get(index - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" currentTask.changeDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(markMessage + currentTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" throw new MarkInvalidException(this.type);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" } catch (SaveStorageException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":41}},{"path":"src/main/java/MarkInvalidException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class MarkInvalidException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public MarkInvalidException(String command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Please enter a valid integer after a \" + command + \" command.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/MissingDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class MissingDeadlineException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public MissingDeadlineException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Please enter a deadline.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/MissingEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class MissingEventException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public MissingEventException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Please enter a start and end for the event.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/MissingTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class MissingTodoException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public MissingTodoException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Your todo\u0027s description must not be empty!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" enum Commands {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" bye, list, mark, unmark, todo, deadline, event, delete","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" public static String[] splitCommand(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" String words[] \u003d command.split(\"\\\\s+\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" String currentString \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" ArrayList\u003cString\u003e result \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" for (int i \u003d 0; i \u003c words.length; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" if (i \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" result.add(words[i]);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" if (words[i].charAt(0) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" result.add(currentString);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" currentString \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" currentString +\u003d words[i] + \" \";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" if (!currentString.equals(\"\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" result.add(currentString);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" return result.toArray(new String[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" public static Command parseCommand(String command) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" Command cmd \u003d new DefaultCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" String[] commandList \u003d splitCommand(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" switch (Commands.valueOf(commandList[0])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" case bye:","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" cmd \u003d new ByeCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":" case list:","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" cmd \u003d new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" case mark:","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" cmd \u003d new MarkCommand(commandList, \"mark\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" case unmark:","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" cmd \u003d new MarkCommand(commandList, \"unmark\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" case todo:","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" cmd \u003d new TodoCommand(commandList);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" case deadline:","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" cmd \u003d new DeadlineCommand(commandList);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" case event:","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" cmd \u003d new EventCommand(commandList);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" case delete:","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" cmd \u003d new DeleteCommand(commandList);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" return cmd;","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":68}},{"path":"src/main/java/SaveStorageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class SaveStorageException extends DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public SaveStorageException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"Failed to save to storage.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.lang.reflect.Array;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" String relativeFilePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" public Storage(String relativeFilePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" this.relativeFilePath \u003d relativeFilePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" public ArrayList\u003cTask\u003e load() throws LoadStorageException {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" Path absolutePath \u003d Paths.get(this.relativeFilePath).toAbsolutePath();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" if (!Files.exists(absolutePath)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" Files.createFile(absolutePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Welcome to theGiantPeach!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(absolutePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" // Process the lines","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" String[] words \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" Todo todo \u003d new Todo(words[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(words[1], \"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" todo.changeDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":" taskList.add(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" Deadline deadline \u003d new Deadline(words[2], words[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(words[1], \"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" deadline.changeDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" Event event \u003d new Event(words[2], words[3], words[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(words[1], \"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" event.changeDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" throw new LoadStorageException();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" return taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" public void save(TaskList taskList) throws SaveStorageException {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" List\u003cString\u003e linesToWrite \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" linesToWrite.add(taskList.get(i).toDBString());","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" Path absolutePath \u003d Paths.get(relativeFilePath).toAbsolutePath();","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"jamessinmaojun"},"content":" Files.write(absolutePath, linesToWrite, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"jamessinmaojun"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" throw new SaveStorageException();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":78}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" boolean done;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" String display;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" this.display \u003d \"[ ]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" public void changeDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" this.done \u003d !this.done;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" if (this.done) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" this.display \u003d \"[X]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" this.display \u003d \"[ ]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" public String toDBString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" return \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":24}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" public void remove(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" this.taskList.remove(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" public int size() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" return this.taskList.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":25}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" String type \u003d \"[T]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" return this.type + this.display + \" \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" public String toDBString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" String display;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" if (Objects.equals(this.display, \"[ ]\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"0\";","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" display \u003d \"1\";","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" return \"T|\" + display + \"|\" + this.description;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":25}},{"path":"src/main/java/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" String[] commandList;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" public TodoCommand(String[] commandList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" this.commandList \u003d commandList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws MissingTodoException {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" if (this.commandList.length \u003c\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" throw new MissingTodoException();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" Todo currentTodo \u003d new Todo(commandList[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" taskList.add(currentTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + currentTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Now you have \" + taskList.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" storage.save(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" } catch (SaveStorageException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":27}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" public void showLine() {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"--------------------------------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(\"Hello! I\u0027m TheGiantPeach\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" public void showError(String errMsg) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" System.out.println(errMsg);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jamessinmaojun":22}},{"path":"src/main/java/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"public class UnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":" public UnknownCommandException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":" super(\"I\u0027m sorry, but I don\u0027t understand what you mean :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jamessinmaojun":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"todo wash hands","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"jamessinmaojun":1}}] diff --git a/jamessinmaojun_ip_master/commits.json b/jamessinmaojun_ip_master/commits.json index de577840..9bd7c29a 100644 --- a/jamessinmaojun_ip_master/commits.json +++ b/jamessinmaojun_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jamessinmaojun":[{"date":"2024-01-24","commitResults":[{"hash":"08770d6092a7d24f6bc3bb269d9a1e0bd577ec6b","isMergeCommit":false,"messageTitle":"Implemented Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"444b8fadb75f3f19c0f30257d3cf9c00ff2a11b2","isMergeCommit":false,"messageTitle":"Implemented Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"14323664094115ceb9ccd2037ee289ead12c21a0","isMergeCommit":false,"messageTitle":"Implemented Level-2","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":14}}},{"hash":"7a54b497cdd9910935ece52159e4cbe403cda8ee","isMergeCommit":false,"messageTitle":"Implemented Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":12}}},{"hash":"3cdcece81a4dbff749fc74284894479d5459e70b","isMergeCommit":false,"messageTitle":"Implemented Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":6}}},{"hash":"b41c46dba289202511698fcc1e5466b314928ba5","isMergeCommit":false,"messageTitle":"Implemented Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"df9ce02f56cacf491cd22256897167c3aa84bf59","isMergeCommit":false,"messageTitle":"Implemented Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":114,"deletions":28}}},{"hash":"20777c763bc85d83dd607af9f5cf37ecfa2cea9b","isMergeCommit":false,"messageTitle":"Implemented A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":92}}}]},{"date":"2024-01-25","commitResults":[{"hash":"53a84430cd160bc0540143e0fbbf42042d298b24","isMergeCommit":false,"messageTitle":"Implemented A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"9911c88256dc62caf3bb9f39bbf59413bb0ec7b4","isMergeCommit":false,"messageTitle":"Implement Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":3}}},{"hash":"0ad4700423ce89478ae2f04ed572378ce83e0604","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"8f5a2c2450df912316f4df10d48165f85e95d710","isMergeCommit":false,"messageTitle":"Implement Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"46697e2002281a980c45b210a94750fd2df59c67","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jamessinmaojun":{"java":376,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":1}},"authorContributionVariance":{"jamessinmaojun":27747.637},"authorDisplayNameMap":{"jamessinmaojun":"CS2103T-W10-2 JAME.. JUN"}} +{"authorDailyContributionsMap":{"jamessinmaojun":[{"date":"2024-01-24","commitResults":[{"hash":"08770d6092a7d24f6bc3bb269d9a1e0bd577ec6b","isMergeCommit":false,"messageTitle":"Implemented Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"444b8fadb75f3f19c0f30257d3cf9c00ff2a11b2","isMergeCommit":false,"messageTitle":"Implemented Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"14323664094115ceb9ccd2037ee289ead12c21a0","isMergeCommit":false,"messageTitle":"Implemented Level-2","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":14}}},{"hash":"7a54b497cdd9910935ece52159e4cbe403cda8ee","isMergeCommit":false,"messageTitle":"Implemented Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":12}}},{"hash":"3cdcece81a4dbff749fc74284894479d5459e70b","isMergeCommit":false,"messageTitle":"Implemented Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":6}}},{"hash":"b41c46dba289202511698fcc1e5466b314928ba5","isMergeCommit":false,"messageTitle":"Implemented Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"df9ce02f56cacf491cd22256897167c3aa84bf59","isMergeCommit":false,"messageTitle":"Implemented Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":114,"deletions":28}}},{"hash":"20777c763bc85d83dd607af9f5cf37ecfa2cea9b","isMergeCommit":false,"messageTitle":"Implemented A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":92}}}]},{"date":"2024-01-25","commitResults":[{"hash":"53a84430cd160bc0540143e0fbbf42042d298b24","isMergeCommit":false,"messageTitle":"Implemented A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"9911c88256dc62caf3bb9f39bbf59413bb0ec7b4","isMergeCommit":false,"messageTitle":"Implement Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":3}}},{"hash":"0ad4700423ce89478ae2f04ed572378ce83e0604","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"8f5a2c2450df912316f4df10d48165f85e95d710","isMergeCommit":false,"messageTitle":"Implement Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"46697e2002281a980c45b210a94750fd2df59c67","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"8f72fac7a7d1e69a2b191dee178daf40fecf4b5e","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":217}}},{"hash":"48258f33e5db2a32b113bd17c98566668db537c0","isMergeCommit":false,"messageTitle":"Implement A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":383,"deletions":16}}},{"hash":"260b07eda0e39a7a8d3761575839c46fec6a46b1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jamessinmaojun":{"java":580,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":1}},"authorContributionVariance":{"jamessinmaojun":53395.574},"authorDisplayNameMap":{"jamessinmaojun":"CS2103T-W10-2 JAME.. JUN"}} diff --git a/jimseah-0116_ip_master/authorship.json b/jimseah-0116_ip_master/authorship.json index f23bcb88..1b5f1b72 100644 --- a/jimseah-0116_ip_master/authorship.json +++ b/jimseah-0116_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ChatBro.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"public class ChatBro {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" \" __ __ __\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" \" \\\\ \\\\/ /__ / /\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":" \" \\\\ / _ \\\\ /_/ \\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" \" /_/\\\\___/ (_)\\n\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" \"I\u0027m ChatBro!\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" \"What can I do for you bro?\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" \"Use the available commands: list, bye, mark, unmark, delete, OR\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" \"create a new task (todo, deadline, event) to store in your list bro.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" boolean isQuit \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e(101); // First element left empty for 1-based indexing","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":" for (int i \u003d 0; i \u003c 102; i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":" taskList.add(null);","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"jimseah-0116"},"content":" int taskCount \u003d 0;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"jimseah-0116"},"content":" while (!isQuit) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"jimseah-0116"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"jimseah-0116"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"jimseah-0116"},"content":" String command \u003d inputSplit[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"jimseah-0116"},"content":" switch (command) {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"jimseah-0116"},"content":" case \"list\":","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"Here are the tasks in your list bro:\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":" for (int i \u003d 1; i \u003c\u003d 100; i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(i + \".\" + taskList.get(i).toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"jimseah-0116"},"content":" case \"todo\":","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"jimseah-0116"},"content":" String[] todoSplit \u003d input.split(\"todo \");","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"jimseah-0116"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"jimseah-0116"},"content":" String todoName \u003d todoSplit[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"jimseah-0116"},"content":" if (todoName.trim().isEmpty()) { // Empty task description","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, task description cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"jimseah-0116"},"content":" for (int i \u003d 1; i \u003c\u003d 100; i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"jimseah-0116"},"content":" taskList.add(i, new ToDo(todoName));","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"jimseah-0116"},"content":" taskCount++;","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"jimseah-0116"},"content":" \"Ok bro, I\u0027ve added: \\n\" + taskList.get(i).toString() + \"\\n into your list.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"jimseah-0116"},"content":" \"You\u0027ve got \" + taskCount + \" task(s) now.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"jimseah-0116"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, make sure to follow the format:\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"jimseah-0116"},"content":" \"todo \u003ctask description\u003e (task description cannot be empty)\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"jimseah-0116"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"jimseah-0116"},"content":" String[] deadlineSplit \u003d input.split(\" /by \");","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"jimseah-0116"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"jimseah-0116"},"content":" String deadlineName \u003d deadlineSplit[0].substring(9); // 9 is the length of \"deadline \"","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"jimseah-0116"},"content":" if (deadlineName.trim().isEmpty()) { // Empty task description (whitespace)","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, the given task description cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"jimseah-0116"},"content":" if (deadlineSplit[1].trim().isEmpty()) { // Empty deadline (whitespace)","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, the given deadline cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"jimseah-0116"},"content":" for (int i \u003d 1; i \u003c\u003d 100; i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"jimseah-0116"},"content":" taskList.add(i, new Deadline(deadlineName, deadlineSplit[1]));","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"jimseah-0116"},"content":" taskCount++;","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"jimseah-0116"},"content":" \"Ok bro, I\u0027ve added: \\n\" + taskList.get(i).toString() + \"\\n into your list.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"jimseah-0116"},"content":" \"You\u0027ve got \" + taskCount + \" task(s) now.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"jimseah-0116"},"content":" } catch (ArrayIndexOutOfBoundsException | StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, make sure to follow the format:\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"jimseah-0116"},"content":" \"deadline \u003ctask description\u003e /by \u003cdeadline date\u003e\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"jimseah-0116"},"content":" \"(task description and deadline date cannot be empty)\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"jimseah-0116"},"content":" case \"event\":","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"jimseah-0116"},"content":" String[] eventFromSplit \u003d input.split(\" /from \");","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"jimseah-0116"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"jimseah-0116"},"content":" String eventName \u003d eventFromSplit[0].substring(6); // 6 is the length of \"event \"","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"jimseah-0116"},"content":" String[] eventToSplit \u003d eventFromSplit[1].split(\" /to \"); // ETS[0] is from, ETS[1] is to","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"jimseah-0116"},"content":" if (eventName.trim().isEmpty()) { // Empty task description (whitespace)","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, the task description cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"jimseah-0116"},"content":" if (eventToSplit[0].trim().isEmpty()) { // Empty start time (whitespace)","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, the start time cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"jimseah-0116"},"content":" if (eventToSplit[1].trim().isEmpty()) { // Empty end time (whitespace)","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, the end time cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"jimseah-0116"},"content":" for (int i \u003d 1; i \u003c\u003d 100; i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"jimseah-0116"},"content":" taskList.add(i, new Event(eventName, eventToSplit[0], eventToSplit[1]));","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"jimseah-0116"},"content":" taskCount++;","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"jimseah-0116"},"content":" \"Ok bro, I\u0027ve added: \\n\" + taskList.get(i).toString() + \"\\n into your list.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"jimseah-0116"},"content":" \"You\u0027ve got \" + taskCount + \" task(s) now.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"jimseah-0116"},"content":" } catch (ArrayIndexOutOfBoundsException | StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, make sure to follow the format:\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"jimseah-0116"},"content":" \"event \u003ctask description\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"jimseah-0116"},"content":" \"(task description, start time and end time cannot be empty)\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"jimseah-0116"},"content":" case \"mark\":","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"jimseah-0116"},"content":" int taskNum \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(taskNum) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":156,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"jimseah-0116"},"content":" \"Sorry bro, this task doesn\u0027t exist in your list.\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":158,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":159,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":160,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":161,"author":{"gitId":"jimseah-0116"},"content":" taskList.get(taskNum).markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":162,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"jimseah-0116"},"content":" \"Got it bro! Task \" + taskNum + \" is marked as done:\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"jimseah-0116"},"content":" taskList.get(taskNum).toString() +","lastModifiedDate":"2024-01-27"},{"lineNumber":165,"author":{"gitId":"jimseah-0116"},"content":" \"\\n_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"jimseah-0116"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"jimseah-0116"},"content":" int taskNum2 \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(taskNum2) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":171,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"jimseah-0116"},"content":" \"Sorry bro, this task doesn\u0027t exist in your list.\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":176,"author":{"gitId":"jimseah-0116"},"content":" taskList.get(taskNum2).markAsUndone();","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":178,"author":{"gitId":"jimseah-0116"},"content":" \"Got it bro! Task \" + taskNum2 + \" is marked as not done yet:\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"jimseah-0116"},"content":" taskList.get(taskNum2).toString() +","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"jimseah-0116"},"content":" \"\\n_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"jimseah-0116"},"content":" case \"delete\":","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"jimseah-0116"},"content":" int taskNum3 \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(taskNum3) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":187,"author":{"gitId":"jimseah-0116"},"content":" \"Sorry bro, this task doesn\u0027t exist in your list.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":188,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":189,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":190,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":191,"author":{"gitId":"jimseah-0116"},"content":" String taskName \u003d taskList.get(taskNum3).toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":192,"author":{"gitId":"jimseah-0116"},"content":" taskList.remove(taskNum3);","lastModifiedDate":"2024-01-27"},{"lineNumber":193,"author":{"gitId":"jimseah-0116"},"content":" taskCount--;","lastModifiedDate":"2024-01-27"},{"lineNumber":194,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":195,"author":{"gitId":"jimseah-0116"},"content":" \"Got it bro! Task \" + taskNum3 + \" has been removed:\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":196,"author":{"gitId":"jimseah-0116"},"content":" taskName + \"\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":197,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":198,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":199,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":200,"author":{"gitId":"jimseah-0116"},"content":" case \"bye\":","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"jimseah-0116"},"content":" isQuit \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":203,"author":{"gitId":"jimseah-0116"},"content":" \"Hasta la vista, bro!\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":204,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":207,"author":{"gitId":"jimseah-0116"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":208,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":209,"author":{"gitId":"jimseah-0116"},"content":" \"Sorry bro, I don\u0027t understand what you mean.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":210,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":211,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":212,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":213,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":214,"author":{"gitId":"jimseah-0116"},"content":" sc.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":215,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":216,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"jimseah-0116":216}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":" protected String by;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":" * Constructor for Deadline class.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" * @param description Description of Deadline object.","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" * @param by the deadline of Deadline object.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" this.type \u003d \u0027D\u0027;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jimseah-0116":17}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":" protected String startTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":" protected String endTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" * Constructor for Event class.","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" * @param description Description of Event object.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" this.type \u003d \u0027E\u0027;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.startTime + \", to: \" + this.endTime + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jimseah-0116":19}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":" protected char type;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" * Constructor for Task class.","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" * @param description Description of task.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" * Returns the status icon of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" * @return Status icon of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X, undone task with whitespace","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":" * Returns the description of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"jimseah-0116"},"content":" * @return Description of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"jimseah-0116"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"jimseah-0116"},"content":" return description;","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":" * Marks the task as done.","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"jimseah-0116"},"content":" * Marks the task as undone.","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"jimseah-0116"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"jimseah-0116"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"jimseah-0116"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"jimseah-0116"},"content":" * @return String representation of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"jimseah-0116"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"jimseah-0116"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"jimseah-0116"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"jimseah-0116":53}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":" * Constructor for ToDo class.","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":" * @param description Description of ToDo object.","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":" this.type \u003d \u0027T\u0027;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jimseah-0116":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"todo Finish reading The Mythical Man-Month","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"todo","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"todo Testing","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"deadline /by 4th Feb 2359","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"deadline cs2100 assignment 1","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":"deadline cs2100 assignment 1 /by 4th Feb 2359","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":"hello","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"event /from /to 5th Feb","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":"event /from 1800hrs /to 2100hrs","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"event career fair /from 1800hrs /to 2100hrs","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":"mark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":"mark 20","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":"mark 3","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":"unmark 3","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":"delete 1","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":"bye","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"jimseah-0116":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":"jimseah-0116"},"content":"echo ********** BUILD SUCCESS **********","lastModifiedDate":"2024-01-29"},{"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":"jimseah-0116"},"content":"java -classpath ..\\bin ChatBro \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"jimseah-0116":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":"-"},"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":"jimseah-0116"},"content":"java -classpath ../bin ChatBro \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"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":{"jimseah-0116":1,"-":37}}] +[{"path":"src/main/java/ChatBro.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"public class ChatBro {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" \" __ __ __\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" \" \\\\ \\\\/ /__ / /\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":" \" \\\\ / _ \\\\ /_/ \\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" \" /_/\\\\___/ (_)\\n\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" \"I\u0027m ChatBro!\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" \"What can I do for you bro?\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" \"Use the available commands: list, bye, mark, unmark, delete, OR\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" \"create a new task (todo, deadline, event) to store in your list bro.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" boolean isQuit \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e(101); // First element left empty for 1-based indexing","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":" for (int i \u003d 0; i \u003c 102; i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":" taskList.add(null);","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":" while (!isQuit) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"jimseah-0116"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"jimseah-0116"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"jimseah-0116"},"content":" String command \u003d inputSplit[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"jimseah-0116"},"content":" switch (command) {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"jimseah-0116"},"content":" case \"list\":","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"Here are the tasks in your list bro:\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\");","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":" for (int i \u003d 1; i \u003c\u003d 100; i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(i + \".\" + taskList.get(i).toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"jimseah-0116"},"content":" case \"todo\":","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"jimseah-0116"},"content":" String[] todoSplit \u003d input.split(\"todo \");","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"jimseah-0116"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"jimseah-0116"},"content":" String todoName \u003d todoSplit[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"jimseah-0116"},"content":" if (todoName.trim().isEmpty()) { // Empty task description","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, task description cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"jimseah-0116"},"content":" for (int i \u003d 1; i \u003c\u003d 100; i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"jimseah-0116"},"content":" taskList.add(i, new ToDo(todoName));","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"jimseah-0116"},"content":" Task.incrementTaskCount();","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"jimseah-0116"},"content":" \"Ok bro, I\u0027ve added: \\n\" + taskList.get(i).toString() + \"\\n into your list.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"jimseah-0116"},"content":" \"You\u0027ve got \" + Task.getTaskCount() + \" task(s) now.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"jimseah-0116"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, make sure to follow the format:\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"jimseah-0116"},"content":" \"todo \u003ctask description\u003e (task description cannot be empty)\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"jimseah-0116"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"jimseah-0116"},"content":" String[] deadlineSplit \u003d input.split(\" /by \");","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"jimseah-0116"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"jimseah-0116"},"content":" String deadlineName \u003d deadlineSplit[0].substring(9); // 9 is the length of \"deadline \"","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"jimseah-0116"},"content":" if (deadlineName.trim().isEmpty()) { // Empty task description (whitespace)","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, the given task description cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"jimseah-0116"},"content":" if (deadlineSplit[1].trim().isEmpty()) { // Empty deadline (whitespace)","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, the given deadline cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"jimseah-0116"},"content":" for (int i \u003d 1; i \u003c\u003d 100; i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"jimseah-0116"},"content":" taskList.add(i, new Deadline(deadlineName, deadlineSplit[1]));","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"jimseah-0116"},"content":" Task.incrementTaskCount();","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"jimseah-0116"},"content":" \"Ok bro, I\u0027ve added: \\n\" + taskList.get(i).toString() + \"\\n into your list.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"jimseah-0116"},"content":" \"You\u0027ve got \" + Task.getTaskCount() + \" task(s) now.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"jimseah-0116"},"content":" } catch (ArrayIndexOutOfBoundsException | StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, make sure to follow the format:\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"jimseah-0116"},"content":" \"deadline \u003ctask description\u003e /by \u003cdeadline date\u003e\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"jimseah-0116"},"content":" \"(task description and deadline date cannot be empty)\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"jimseah-0116"},"content":" case \"event\":","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"jimseah-0116"},"content":" String[] eventFromSplit \u003d input.split(\" /from \");","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"jimseah-0116"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"jimseah-0116"},"content":" String eventName \u003d eventFromSplit[0].substring(6); // 6 is the length of \"event \"","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"jimseah-0116"},"content":" String[] eventToSplit \u003d eventFromSplit[1].split(\" /to \"); // ETS[0] is from, ETS[1] is to","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"jimseah-0116"},"content":" if (eventName.trim().isEmpty()) { // Empty task description (whitespace)","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, the task description cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"jimseah-0116"},"content":" if (eventToSplit[0].trim().isEmpty()) { // Empty start time (whitespace)","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, the start time cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"jimseah-0116"},"content":" if (eventToSplit[1].trim().isEmpty()) { // Empty end time (whitespace)","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, the end time cannot be empty.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"jimseah-0116"},"content":" for (int i \u003d 1; i \u003c\u003d 100; i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(i) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"jimseah-0116"},"content":" taskList.add(i, new Event(eventName, eventToSplit[0], eventToSplit[1]));","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"jimseah-0116"},"content":" Task.incrementTaskCount();","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"jimseah-0116"},"content":" \"Ok bro, I\u0027ve added: \\n\" + taskList.get(i).toString() + \"\\n into your list.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"jimseah-0116"},"content":" \"You\u0027ve got \" + Task.getTaskCount() + \" task(s) now.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"jimseah-0116"},"content":" } catch (ArrayIndexOutOfBoundsException | StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"jimseah-0116"},"content":" \"Hey bro, make sure to follow the format:\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"jimseah-0116"},"content":" \"event \u003ctask description\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"jimseah-0116"},"content":" \"(task description, start time and end time cannot be empty)\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"jimseah-0116"},"content":" case \"mark\":","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"jimseah-0116"},"content":" int taskNum \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(taskNum) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"jimseah-0116"},"content":" \"Sorry bro, this task doesn\u0027t exist in your list.\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":158,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":159,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":160,"author":{"gitId":"jimseah-0116"},"content":" taskList.get(taskNum).markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":162,"author":{"gitId":"jimseah-0116"},"content":" \"Got it bro! Task \" + taskNum + \" is marked as done:\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"jimseah-0116"},"content":" taskList.get(taskNum).toString() +","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"jimseah-0116"},"content":" \"\\n_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"jimseah-0116"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"jimseah-0116"},"content":" int taskNum2 \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(taskNum2) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":171,"author":{"gitId":"jimseah-0116"},"content":" \"Sorry bro, this task doesn\u0027t exist in your list.\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"jimseah-0116"},"content":" taskList.get(taskNum2).markAsUndone();","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":177,"author":{"gitId":"jimseah-0116"},"content":" \"Got it bro! Task \" + taskNum2 + \" is marked as not done yet:\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":178,"author":{"gitId":"jimseah-0116"},"content":" taskList.get(taskNum2).toString() +","lastModifiedDate":"2024-01-27"},{"lineNumber":179,"author":{"gitId":"jimseah-0116"},"content":" \"\\n_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"jimseah-0116"},"content":" case \"delete\":","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"jimseah-0116"},"content":" int taskNum3 \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"jimseah-0116"},"content":" if (taskList.get(taskNum3) \u003d\u003d null) {","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"jimseah-0116"},"content":" \"Sorry bro, this task doesn\u0027t exist in your list.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":187,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":188,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":189,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":190,"author":{"gitId":"jimseah-0116"},"content":" String taskName \u003d taskList.get(taskNum3).toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":191,"author":{"gitId":"jimseah-0116"},"content":" taskList.remove(taskNum3);","lastModifiedDate":"2024-01-27"},{"lineNumber":192,"author":{"gitId":"jimseah-0116"},"content":" Task.decrementTaskCount();","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":194,"author":{"gitId":"jimseah-0116"},"content":" \"Got it bro! Task \" + taskNum3 + \" has been removed:\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":195,"author":{"gitId":"jimseah-0116"},"content":" taskName + \"\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":196,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":197,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":198,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":199,"author":{"gitId":"jimseah-0116"},"content":" case \"bye\":","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"jimseah-0116"},"content":" isQuit \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"jimseah-0116"},"content":" \"Hasta la vista, bro!\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":203,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"jimseah-0116"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":207,"author":{"gitId":"jimseah-0116"},"content":" System.out.println(\"_________________________\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":208,"author":{"gitId":"jimseah-0116"},"content":" \"Sorry bro, I don\u0027t understand what you mean.\\n\" +","lastModifiedDate":"2024-01-27"},{"lineNumber":209,"author":{"gitId":"jimseah-0116"},"content":" \"_________________________\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":210,"author":{"gitId":"jimseah-0116"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":211,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":212,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":213,"author":{"gitId":"jimseah-0116"},"content":" sc.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":214,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":215,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"jimseah-0116":215}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":" protected String by;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":" * Constructor for Deadline class.","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" * @param description Description of Deadline object.","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" * @param by the deadline of Deadline object.","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" this.type \u003d \u0027D\u0027;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jimseah-0116":17}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":" protected String startTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":" protected String endTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" * Constructor for Event class.","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" * @param description Description of Event object.","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" this.type \u003d \u0027E\u0027;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.startTime + \", to: \" + this.endTime + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jimseah-0116":19}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":" protected char type;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":" protected static int taskCount \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" * Constructor for Task class.","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":" * @param description Description of task.","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" * Returns the status icon of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" * @return Status icon of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X, undone task with whitespace","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"jimseah-0116"},"content":" * Returns the description of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"jimseah-0116"},"content":" * @return Description of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"jimseah-0116"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"jimseah-0116"},"content":" return description;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":" * Marks the task as done.","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"jimseah-0116"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"jimseah-0116"},"content":" * Marks the task as undone.","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"jimseah-0116"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"jimseah-0116"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"jimseah-0116"},"content":" * Increases the task count by 1.","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"jimseah-0116"},"content":" public static void incrementTaskCount() {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"jimseah-0116"},"content":" taskCount++;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"jimseah-0116"},"content":" * Decreases the task count by 1.","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"jimseah-0116"},"content":" public static void decrementTaskCount() {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"jimseah-0116"},"content":" taskCount--;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"jimseah-0116"},"content":" * Returns the task count.","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"jimseah-0116"},"content":" * @return Task count.","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"jimseah-0116"},"content":" public static int getTaskCount() {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"jimseah-0116"},"content":" return taskCount;","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"jimseah-0116"},"content":" * Returns the string representation of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"jimseah-0116"},"content":" * @return String representation of the task.","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"jimseah-0116"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"jimseah-0116"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"jimseah-0116"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"jimseah-0116":76}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":" * Constructor for ToDo class.","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":" * @param description Description of ToDo object.","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":" this.type \u003d \u0027T\u0027;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jimseah-0116":14}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"todo Finish reading The Mythical Man-Month","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"todo","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"todo Testing","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"deadline /by 4th Feb 2359","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"deadline cs2100 assignment 1","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":"deadline cs2100 assignment 1 /by 4th Feb 2359","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":"hello","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"event /from /to 5th Feb","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":"event /from 1800hrs /to 2100hrs","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"event career fair /from 1800hrs /to 2100hrs","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":"mark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":"mark 20","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":"mark 3","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":"unmark 3","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":"delete 1","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":"bye","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"jimseah-0116":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":"jimseah-0116"},"content":"echo ********** BUILD SUCCESS **********","lastModifiedDate":"2024-01-29"},{"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":"jimseah-0116"},"content":"java -classpath ..\\bin ChatBro \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"jimseah-0116":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":"-"},"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":"jimseah-0116"},"content":"java -classpath ../bin ChatBro \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-29"},{"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":{"jimseah-0116":1,"-":37}}] diff --git a/jimseah-0116_ip_master/commits.json b/jimseah-0116_ip_master/commits.json index 576c5161..f8a00a88 100644 --- a/jimseah-0116_ip_master/commits.json +++ b/jimseah-0116_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jimseah-0116":[{"date":"2024-01-26","commitResults":[{"hash":"7007da9aba005a3bd609bd00f6a68227418f5739","isMergeCommit":false,"messageTitle":"Renaming Duke to ChatBro","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"ce98fe1f6efe9201b73df5c60ec0714a9169ae79","isMergeCommit":false,"messageTitle":"updated code for Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":2}}},{"hash":"2eaab1e163fc70ce873a86c5e9ed96295409d080","isMergeCommit":false,"messageTitle":"updates for Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":5}}},{"hash":"0dd0d900ae40b82c47d81e16d6ce8d2ec43dcfc5","isMergeCommit":false,"messageTitle":"updates for Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":12}}},{"hash":"95ea53cf2da411a6187fec19909e35e14bc65a89","isMergeCommit":false,"messageTitle":"updates for Level-3 and A-Classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":11}}},{"hash":"627356050a1067fe0b5e18582ae72d59b3c614c8","isMergeCommit":false,"messageTitle":"updates for Level-3 and A-Classes","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"2453427547c497f76c83661dcf9963e353d10ca6","isMergeCommit":false,"messageTitle":"updates for Level-4 and A-Inheritance","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":14}}},{"hash":"da6811861d5120b0599d7e0dea25169722ab43d7","isMergeCommit":false,"messageTitle":"updates for Level-5 and A-Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":22}}},{"hash":"730de39312b733eb9795a174430e72ce9f279895","isMergeCommit":false,"messageTitle":"edits for Level-5 for consistency","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":12}}},{"hash":"6bfc4b3e8600c2a6e752557709100d03988c19b0","isMergeCommit":false,"messageTitle":"Level-6 updates","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":19}}}]},{"date":"2024-01-29","commitResults":[{"hash":"e4fc3c51254b4e5032a0787c380dd587ed0b694a","isMergeCommit":false,"messageTitle":"Running I/O redirection test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":20,"deletions":0},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"jimseah-0116":{"java":319,"md":0,"fxml":0,"sh":1,"bat":2,"gradle":0,"txt":20}},"authorContributionVariance":{"jimseah-0116":10457.174},"authorDisplayNameMap":{"jimseah-0116":"CS2103T-W09-4 JIM ..SEAH"}} +{"authorDailyContributionsMap":{"jimseah-0116":[{"date":"2024-01-26","commitResults":[{"hash":"7007da9aba005a3bd609bd00f6a68227418f5739","isMergeCommit":false,"messageTitle":"Renaming Duke to ChatBro","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"ce98fe1f6efe9201b73df5c60ec0714a9169ae79","isMergeCommit":false,"messageTitle":"updated code for Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":2}}},{"hash":"2eaab1e163fc70ce873a86c5e9ed96295409d080","isMergeCommit":false,"messageTitle":"updates for Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":5}}},{"hash":"0dd0d900ae40b82c47d81e16d6ce8d2ec43dcfc5","isMergeCommit":false,"messageTitle":"updates for Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":12}}},{"hash":"95ea53cf2da411a6187fec19909e35e14bc65a89","isMergeCommit":false,"messageTitle":"updates for Level-3 and A-Classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":11}}},{"hash":"627356050a1067fe0b5e18582ae72d59b3c614c8","isMergeCommit":false,"messageTitle":"updates for Level-3 and A-Classes","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"2453427547c497f76c83661dcf9963e353d10ca6","isMergeCommit":false,"messageTitle":"updates for Level-4 and A-Inheritance","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":14}}},{"hash":"da6811861d5120b0599d7e0dea25169722ab43d7","isMergeCommit":false,"messageTitle":"updates for Level-5 and A-Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":22}}},{"hash":"730de39312b733eb9795a174430e72ce9f279895","isMergeCommit":false,"messageTitle":"edits for Level-5 for consistency","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":12}}},{"hash":"6bfc4b3e8600c2a6e752557709100d03988c19b0","isMergeCommit":false,"messageTitle":"Level-6 updates","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":19}}}]},{"date":"2024-01-29","commitResults":[{"hash":"e4fc3c51254b4e5032a0787c380dd587ed0b694a","isMergeCommit":false,"messageTitle":"Running I/O redirection test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":20,"deletions":0},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-30","commitResults":[{"hash":"76b73e71e8d91945f66ab5e5d26d588e5001a4e8","isMergeCommit":false,"messageTitle":"Task class: Move taskCount to Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":8}}}]}]},"authorFileTypeContributionMap":{"jimseah-0116":{"java":341,"md":0,"fxml":0,"sh":1,"bat":2,"gradle":0,"txt":20}},"authorContributionVariance":{"jimseah-0116":9596.909},"authorDisplayNameMap":{"jimseah-0116":"CS2103T-W09-4 JIM ..SEAH"}} diff --git a/jmsandiegoo_ip_master/authorship.json b/jmsandiegoo_ip_master/authorship.json index a3634da3..599a22ef 100644 --- a/jmsandiegoo_ip_master/authorship.json +++ b/jmsandiegoo_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"# Tyrone project","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"This is a simple chat bot named Tyrone. Given below are instructions on how to use it.","lastModifiedDate":"2024-01-27"},{"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":"jmsandiegoo"},"content":"3. After that, locate the `src/main/java/Tyrone.java` file, right-click it, and choose `Run Tyrone.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":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"\t████████╗██╗ ██╗██████╗ ██████╗ ███╗ ██╗███████╗","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":"\t╚══██╔══╝╚██╗ ██╔╝██╔══██╗██╔═══██╗████╗ ██║██╔════╝","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":"\t ██║ ╚████╔╝ ██████╔╝██║ ██║██╔██╗ ██║█████╗","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":"\t ██║ ╚██╔╝ ██╔══██╗██║ ██║██║╚██╗██║██╔══╝","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":"\t ██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║███████╗","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":"\t ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jmsandiegoo":9,"-":16}},{"path":"src/main/java/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.temporal.Temporal;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.temporal.TemporalAccessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":"public class DateTime {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" private final String inputParseFormatStr;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" private final String outputParseFormatStr;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" private final String outputSerializeFormatStr;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" private final TemporalAccessor dateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" public DateTime(String dateTimeStr) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" this.inputParseFormatStr \u003d \"yyyy-MM-dd[ HH:mm]\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" this.outputParseFormatStr \u003d \"MMM dd yyyy[ hh:mma] \";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" this.outputSerializeFormatStr \u003d \"yyyy-MM-dd[ HH:mm]\";","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" this.dateTime \u003d this.parseDateTimeString(dateTimeStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" private TemporalAccessor parseDateTimeString(String dateTimeStr) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":" LocalDateTime dateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(this.inputParseFormatStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" TemporalAccessor temporalAccessor \u003d formatter.parseBest(dateTimeStr, LocalDateTime::from, LocalDate::from);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":" return temporalAccessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":" public String formatDateTime() {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":" String output;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":" if (this.dateTime instanceof LocalDateTime) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":" output \u003d ((LocalDateTime)dateTime)","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jmsandiegoo"},"content":" .format(java.time.format.DateTimeFormatter.ofPattern(this.outputParseFormatStr));","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jmsandiegoo"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jmsandiegoo"},"content":" output \u003d (((LocalDate)dateTime))","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jmsandiegoo"},"content":" .format(java.time.format.DateTimeFormatter.ofPattern(this.outputParseFormatStr));","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jmsandiegoo"},"content":" return output;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jmsandiegoo"},"content":" public String serializeDateTime() {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jmsandiegoo"},"content":" String output;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jmsandiegoo"},"content":" if (this.dateTime instanceof LocalDateTime) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jmsandiegoo"},"content":" output \u003d ((LocalDateTime)dateTime)","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jmsandiegoo"},"content":" .format(java.time.format.DateTimeFormatter.ofPattern(this.outputSerializeFormatStr));","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jmsandiegoo"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jmsandiegoo"},"content":" output \u003d (((LocalDate)dateTime))","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jmsandiegoo"},"content":" .format(java.time.format.DateTimeFormatter.ofPattern(this.outputSerializeFormatStr));","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jmsandiegoo"},"content":" return output;","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jmsandiegoo":52}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":" private final DateTime deadlineDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":" public Deadline(String description, DateTime deadlineDateTime) {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":" this.deadlineDateTime \u003d deadlineDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" return \"[D] \" + super.toString() + \" (by: \" + this.deadlineDateTime.formatDateTime() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" public String serializeTask() {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" return \"D | \" + super.serializeTask() + \" | \" + this.deadlineDateTime.serializeDateTime();","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jmsandiegoo":17}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":" private final DateTime startDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":" private final DateTime endDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":" public Event(String description, DateTime startDateTime, DateTime endDateTime) {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" return \"[E] \" + super.toString() + \" (from: \" + this.startDateTime.formatDateTime() + \" to: \" + this.endDateTime.formatDateTime() +\")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" public String serializeTask() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" return \"E | \" + super.serializeTask() + \" | \" + this.startDateTime.serializeDateTime() + \" - \" + this.endDateTime.serializeDateTime();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jmsandiegoo":19}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":" private final String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" public void markItem() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" public void unmarkItem() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" return \"[\" + (this.isDone ? \"X\" : \" \") + \"]\" + \" \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" public String serializeTask() {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" return (this.isDone ? \"1\" : \"0\") + \" | \" + this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jmsandiegoo":26}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":"public class TaskList {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" private ArrayList\u003cTask\u003e items;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" private static final StorageHelper storageHelper \u003d new StorageHelper();","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" private static class StorageHelper {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" private static final String directoryPath \u003d \"data\";","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":" private static final String fileName \u003d \"task_list.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" public File loadFile() throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" // check if the directory exists if not create it","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" directory.mkdir();","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" // check if the file exists if not create it","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" File file \u003d new File(directoryPath + \"/\" + fileName);","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" return file;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":" public void saveFile(String content) throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":" // check if the directory exists if not create it","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":" directory.mkdir();","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"jmsandiegoo"},"content":" // check if the file exists if not create it","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"jmsandiegoo"},"content":" File file \u003d new File(directoryPath + \"/\" + fileName);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"jmsandiegoo"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jmsandiegoo"},"content":" // write into the file","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"jmsandiegoo"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"jmsandiegoo"},"content":" fw.write(content);","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"jmsandiegoo"},"content":" fw.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"jmsandiegoo"},"content":" public TaskList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"jmsandiegoo"},"content":" this.items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"jmsandiegoo"},"content":" public int getListSize() {","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"jmsandiegoo"},"content":" return this.items.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"jmsandiegoo"},"content":" public Task getItem(int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"jmsandiegoo"},"content":" return this.items.get(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"jmsandiegoo"},"content":" public void loadTaskListFromFile() throws TyroneStorageHelperException {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"jmsandiegoo"},"content":" File file \u003d storageHelper.loadFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"jmsandiegoo"},"content":" // read the file and parse into the array","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"jmsandiegoo"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"jmsandiegoo"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"jmsandiegoo"},"content":" String[] strArr \u003d sc.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"jmsandiegoo"},"content":" Task t;","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"jmsandiegoo"},"content":" switch (strArr[0]) {","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"jmsandiegoo"},"content":" case \"T\":","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"jmsandiegoo"},"content":" t \u003d new ToDo(strArr[2]);","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"jmsandiegoo"},"content":" case \"D\":","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"jmsandiegoo"},"content":" t \u003d new Deadline(strArr[2], new DateTime(strArr[3]));","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"jmsandiegoo"},"content":" case \"E\":","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"jmsandiegoo"},"content":" String[] periodArr \u003d strArr[3].split(\" - \");","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"jmsandiegoo"},"content":" t \u003d new Event(strArr[2], new DateTime(periodArr[0]), new DateTime(periodArr[1]));","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"jmsandiegoo"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"jmsandiegoo"},"content":" throw new IOException(\"Invalid text file format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"jmsandiegoo"},"content":" if (strArr[1].equals(\"1\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"jmsandiegoo"},"content":" t.markItem();","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"jmsandiegoo"},"content":" this.items.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IOException | DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jmsandiegoo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"jmsandiegoo"},"content":" this.items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneStorageHelperException(\"Error loading the local task list file.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"jmsandiegoo"},"content":" public void saveTaskListToFile() throws TyroneStorageHelperException {","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jmsandiegoo"},"content":" StringBuilder content \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"jmsandiegoo"},"content":" for (Task item : this.items) {","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"jmsandiegoo"},"content":" content.append(item.serializeTask()).append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"jmsandiegoo"},"content":" storageHelper.saveFile(content.toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IOException | SecurityException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneStorageHelperException(\"Failed to save the list changes locally. My bad...\");","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"jmsandiegoo"},"content":" public void addItem(Task item) {","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"jmsandiegoo"},"content":" this.items.add(item);","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"jmsandiegoo"},"content":" public void markItemDone(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"jmsandiegoo"},"content":" if (index \u003c 0 || index \u003e\u003d this.getListSize()) return;","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"jmsandiegoo"},"content":" Task currItem \u003d this.items.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"jmsandiegoo"},"content":" currItem.markItem();","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"jmsandiegoo"},"content":" public void unmarkItemDone(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"jmsandiegoo"},"content":" if (index \u003c 0 || index \u003e\u003d this.getListSize()) return;","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"jmsandiegoo"},"content":" Task currItem \u003d this.items.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"jmsandiegoo"},"content":" currItem.unmarkItem();","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"jmsandiegoo"},"content":" public Task deleteItem(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"jmsandiegoo"},"content":" if (index \u003c 0 || index \u003e\u003d this.getListSize()) return null;","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"jmsandiegoo"},"content":" return this.items.remove(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"jmsandiegoo"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"jmsandiegoo"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"jmsandiegoo"},"content":" for (int i \u003d 0; i \u003c items.size(); ++i) {","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"jmsandiegoo"},"content":" if (i \u003e 0) output.append(\"\\t\");","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"jmsandiegoo"},"content":" output.append(i + 1).append(\". \").append(items.get(i).toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"jmsandiegoo"},"content":" if (i \u003c items.size() - 1) output.append(\"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"jmsandiegoo"},"content":" return output.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jmsandiegoo":138}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" public String serializeTask() {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":" return \"T | \" + super.serializeTask();","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jmsandiegoo":15}},{"path":"src/main/java/Tyrone.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"public class Tyrone {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" private static final String logo \u003d \"\\t████████╗██╗ ██╗██████╗ ██████╗ ███╗ ██╗███████╗\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t╚══██╔══╝╚██╗ ██╔╝██╔══██╗██╔═══██╗████╗ ██║██╔════╝\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t ██║ ╚████╔╝ ██████╔╝██║ ██║██╔██╗ ██║█████╗\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t ██║ ╚██╔╝ ██╔══██╗██║ ██║██║╚██╗██║██╔══╝\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t ██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║███████╗\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":" private static final String greetMsg \u003d \"\\tYo, what\u0027s crackin\u0027 fam! I\u0027m Tyrone, your digital homie.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" \"\\tWhat\u0027s the word? So I can help you out today.\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" \"\\n\\t____________________________________________________________\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" private static final Scanner reader \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" private static final PrintWriter writer \u003d new PrintWriter(System.out, true);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" private static final TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" private enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" BYE,","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":" LIST,","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" TODO,","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" DEADLINE,","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":" EVENT,","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":" MARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":" UNMARK,","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":" DELETE","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":" private static final HashMap\u003cString, Command\u003e cmdMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"jmsandiegoo"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jmsandiegoo"},"content":" handleInitialize();","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"jmsandiegoo"},"content":" boolean isActive \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"jmsandiegoo"},"content":" while (isActive) {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"jmsandiegoo"},"content":" // extract the command","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jmsandiegoo"},"content":" String input \u003d reader.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"jmsandiegoo"},"content":" String cmdStr \u003d !input.contains(\" \") ? input : input.substring(0, input.indexOf(\" \"));","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"jmsandiegoo"},"content":" if (!cmdMap.containsKey(cmdStr)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"Command entered doesn\u0027t exist.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"jmsandiegoo"},"content":" Command cmd \u003d cmdMap.get(cmdStr);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"jmsandiegoo"},"content":" // execute cmd logic respectively","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"jmsandiegoo"},"content":" switch (cmd) {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"jmsandiegoo"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"jmsandiegoo"},"content":" handleByeCommand();","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"jmsandiegoo"},"content":" isActive \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"jmsandiegoo"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"jmsandiegoo"},"content":" handleListCommand();","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"jmsandiegoo"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"jmsandiegoo"},"content":" handleTodoCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"jmsandiegoo"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"jmsandiegoo"},"content":" handleDeadlineCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"jmsandiegoo"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"jmsandiegoo"},"content":" handleEventCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"jmsandiegoo"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"jmsandiegoo"},"content":" handleMarkCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"jmsandiegoo"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"jmsandiegoo"},"content":" handleUnmarkCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"jmsandiegoo"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"jmsandiegoo"},"content":" handleDeleteCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"jmsandiegoo"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"Command entered doesn\u0027t exist.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"jmsandiegoo"},"content":" taskList.saveTaskListToFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"jmsandiegoo"},"content":" } catch (TyroneCmdException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(Tyrone.formatStringOutput(e.getMessage()));","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"jmsandiegoo"},"content":" } catch (TyroneStorageHelperException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(Tyrone.formatStringOutput(e.getMessage()));","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jmsandiegoo"},"content":" System.exit(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"jmsandiegoo"},"content":" public static void handleInitialize() throws TyroneStorageHelperException {","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"jmsandiegoo"},"content":" cmdMap.put(\"bye\", Command.BYE);","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"jmsandiegoo"},"content":" cmdMap.put(\"list\", Command.LIST);","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"jmsandiegoo"},"content":" cmdMap.put(\"todo\", Command.TODO);","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"jmsandiegoo"},"content":" cmdMap.put(\"deadline\", Command.DEADLINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"jmsandiegoo"},"content":" cmdMap.put(\"event\", Command.EVENT);","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"jmsandiegoo"},"content":" cmdMap.put(\"mark\", Command.MARK);","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"jmsandiegoo"},"content":" cmdMap.put(\"unmark\", Command.UNMARK);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"jmsandiegoo"},"content":" cmdMap.put(\"delete\", Command.DELETE);","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(logo + greetMsg);","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"jmsandiegoo"},"content":" taskList.loadTaskListFromFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"jmsandiegoo"},"content":" private static void handleByeCommand() {","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"jmsandiegoo"},"content":" Tyrone.formatStringOutput(\"Peace out! Crossin\u0027 my fingers for a speedy reunion, ya feel?\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"jmsandiegoo"},"content":" private static void handleListCommand() {","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(Tyrone.formatStringOutput(","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"jmsandiegoo"},"content":" \"Peep the lineup, here\u0027s the rundown of tasks on your list:\\n\" + \"\\t\" + taskList));","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"jmsandiegoo"},"content":" private static void handleTodoCommand(String input) throws TyroneCmdException {","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"jmsandiegoo"},"content":" // validate general input","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"jmsandiegoo"},"content":" if (isEmptyParam(input))","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"Can\u0027t leave that to-do description hanging dry.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\\tGotta drop some words in there!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"jmsandiegoo"},"content":" // extract input param","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"jmsandiegoo"},"content":" ToDo newItem \u003d new ToDo(input.substring(5));","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"jmsandiegoo"},"content":" taskList.addItem(newItem);","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(Tyrone.formatStringOutput(\"Got it added homie:\\n\" + \"\\t\\t\" + newItem +","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"jmsandiegoo"},"content":" \"\\n\\tNow you have \" + taskList.getListSize() + \" in the list.\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"jmsandiegoo"},"content":" private static void handleDeadlineCommand(String input) throws TyroneCmdException {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"jmsandiegoo"},"content":" // validate general input","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"jmsandiegoo"},"content":" String errorMsg \u003d \"Seems like the deadline command is incorrect.\\n\"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"jmsandiegoo"},"content":" + \"\\t\\tIt must be: \\\"deadline \u003ctask description\u003e /by \u003cyyyy-mm-dd[ HH:mm]\u003e\\\".\";","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"jmsandiegoo"},"content":" if (isEmptyParam(input) || !input.contains(\"/by\"))","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(errorMsg);","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"jmsandiegoo"},"content":" // extract input params","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"jmsandiegoo"},"content":" Deadline newItem \u003d generateDeadlineFromInput(input.substring(9), errorMsg);","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"jmsandiegoo"},"content":" taskList.addItem(newItem);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(Tyrone.formatStringOutput(\"Got it added homie:\\n\" + \"\\t\\t\" + newItem +","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"jmsandiegoo"},"content":" \"\\n\\tNow you have \" + taskList.getListSize() + \" in the list.\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"jmsandiegoo"},"content":" private static Deadline generateDeadlineFromInput(String input, String errorMsg) throws TyroneCmdException {","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"jmsandiegoo"},"content":" String[] params \u003d input.split(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"jmsandiegoo"},"content":" // check if enough params in the first place","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"jmsandiegoo"},"content":" if (params.length !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(errorMsg);","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"jmsandiegoo"},"content":" String description \u003d params[0].trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"jmsandiegoo"},"content":" String deadlineDateTimeStr \u003d params[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"jmsandiegoo"},"content":" // validate params","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"jmsandiegoo"},"content":" if (description.isEmpty() || deadlineDateTimeStr.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(errorMsg);","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"jmsandiegoo"},"content":" return new Deadline(description, new DateTime(deadlineDateTimeStr));","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"jmsandiegoo"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(errorMsg);","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":160,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"jmsandiegoo"},"content":" private static void handleEventCommand(String input) throws TyroneCmdException {","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"jmsandiegoo"},"content":" String errorMsg \u003d \"Your event command is in incorrect format.\\n\"","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"jmsandiegoo"},"content":" + \"\\t\\tGotta follow the groove: \\\"event \u003ctask description\u003e \"","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"jmsandiegoo"},"content":" + \"/from \u003cyyyy-mm-dd[ HH:mm]\u003e /to \u003cyyyy-mm-dd[ HH:mm]\u003e\\\".\";","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"jmsandiegoo"},"content":" // validate general input","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"jmsandiegoo"},"content":" if (isEmptyParam(input) || !input.contains(\"/from\") || !input.contains(\"/to\"))","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(errorMsg);","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"jmsandiegoo"},"content":" // extract input params","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"jmsandiegoo"},"content":" Event newItem \u003d generateEventFromInput(input.substring(6), errorMsg);","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"jmsandiegoo"},"content":" taskList.addItem(newItem);","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"jmsandiegoo"},"content":" Tyrone.formatStringOutput(","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"jmsandiegoo"},"content":" \"Got it added homie:\\n\" + \"\\t\\t\" + newItem + \"\\n\\tNow you have \"","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"jmsandiegoo"},"content":" + taskList.getListSize() + \" in the list.\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"jmsandiegoo"},"content":" private static Event generateEventFromInput(String input, String errorMsg) throws TyroneCmdException {","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"jmsandiegoo"},"content":" int fromIndex \u003d input.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"jmsandiegoo"},"content":" int toIndex \u003d input.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"jmsandiegoo"},"content":" String description \u003d input.substring(0, fromIndex).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"jmsandiegoo"},"content":" String startDateTime \u003d fromIndex + 5 \u003c toIndex ? input.substring(fromIndex + 5, toIndex).trim() : \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"jmsandiegoo"},"content":" String endDateTime \u003d toIndex + 3 \u003c input.length() - 1 ? input.substring(toIndex + 3).trim() : \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"jmsandiegoo"},"content":" // validate params","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"jmsandiegoo"},"content":" if (description.isEmpty() || startDateTime.isEmpty() || endDateTime.isEmpty())","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(errorMsg);","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"jmsandiegoo"},"content":" return new Event(description, new DateTime(startDateTime), new DateTime(endDateTime));","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"jmsandiegoo"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":194,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(errorMsg);","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":196,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":197,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"jmsandiegoo"},"content":" private static void handleMarkCommand(String input) throws TyroneCmdException {","lastModifiedDate":"2024-01-27"},{"lineNumber":199,"author":{"gitId":"jmsandiegoo"},"content":" // validate general input","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"jmsandiegoo"},"content":" if (isEmptyParam(input)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"Can\u0027t leave that markup id empty. Gotta drop some number in there!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"jmsandiegoo"},"content":" // extract input params","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"jmsandiegoo"},"content":" String param \u003d input.substring(4).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"jmsandiegoo"},"content":" int index \u003d Integer.parseInt(param) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"jmsandiegoo"},"content":" if (taskList.getListSize() \u003c\u003d 0 || index \u003c 0 || index \u003e\u003d taskList.getListSize())","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"It looks like you\u0027re trying to mark with an invalid id.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\\tDouble-check that your 0 \u003c\u003d id \u003c task list size.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":211,"author":{"gitId":"jmsandiegoo"},"content":" taskList.markItemDone(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":212,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(Tyrone.formatStringOutput(\"Dope! Check it, I\u0027ve tagged this task as handled:\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":213,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\\t\" + taskList.getItem(index)));","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"jmsandiegoo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":215,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"Your mark parameter id is acting up.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":216,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\\tIt\u0027s gotta be a legit number matchin\u0027 up with the right task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":217,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":218,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":219,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":220,"author":{"gitId":"jmsandiegoo"},"content":" private static void handleUnmarkCommand(String input) throws TyroneCmdException {","lastModifiedDate":"2024-01-27"},{"lineNumber":221,"author":{"gitId":"jmsandiegoo"},"content":" // validate general input","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"jmsandiegoo"},"content":" if (isEmptyParam(input)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":223,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"Can\u0027t leave that unmarkup id empty. Gotta drop some number in there!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":224,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":225,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":226,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":227,"author":{"gitId":"jmsandiegoo"},"content":" String param \u003d input.substring(6).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"jmsandiegoo"},"content":" int index \u003d Integer.parseInt(param) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":229,"author":{"gitId":"jmsandiegoo"},"content":" if (taskList.getListSize() \u003d\u003d 0 || index \u003c 0 || index \u003e\u003d taskList.getListSize())","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"It looks like you\u0027re trying to unmark with an invalid id.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":231,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\\tDouble-check that your 0 \u003c\u003d id \u003c task list size.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":232,"author":{"gitId":"jmsandiegoo"},"content":" taskList.unmarkItemDone(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":233,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(Tyrone.formatStringOutput(","lastModifiedDate":"2024-01-23"},{"lineNumber":234,"author":{"gitId":"jmsandiegoo"},"content":" \"A\u0027ight, I\u0027ve stamped this task as still in the works:\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":235,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\\t\" + taskList.getItem(index)));","lastModifiedDate":"2024-01-24"},{"lineNumber":236,"author":{"gitId":"jmsandiegoo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":237,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"Your unmark parameter id is acting up.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":238,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\\tIt\u0027s gotta be a legit number matchin\u0027 up with the right task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":239,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":240,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":241,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":242,"author":{"gitId":"jmsandiegoo"},"content":" private static void handleDeleteCommand(String input) throws TyroneCmdException {","lastModifiedDate":"2024-01-27"},{"lineNumber":243,"author":{"gitId":"jmsandiegoo"},"content":" // validate general input","lastModifiedDate":"2024-01-24"},{"lineNumber":244,"author":{"gitId":"jmsandiegoo"},"content":" if (isEmptyParam(input)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":245,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"Can\u0027t leave that delete id empty. Gotta drop some number in there!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":246,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":247,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":248,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":249,"author":{"gitId":"jmsandiegoo"},"content":" String param \u003d input.substring(6).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":250,"author":{"gitId":"jmsandiegoo"},"content":" int index \u003d Integer.parseInt(param) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":251,"author":{"gitId":"jmsandiegoo"},"content":" if (taskList.getListSize() \u003d\u003d 0 || index \u003c 0 || index \u003e\u003d taskList.getListSize())","lastModifiedDate":"2024-01-24"},{"lineNumber":252,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"It looks like you\u0027re trying to delete with an invalid id.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":253,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\\tDouble-check that your 0 \u003c\u003d id \u003c task list size.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":254,"author":{"gitId":"jmsandiegoo"},"content":" Task delItem \u003d taskList.deleteItem(index);","lastModifiedDate":"2024-01-24"},{"lineNumber":255,"author":{"gitId":"jmsandiegoo"},"content":" writer.println(Tyrone.formatStringOutput(","lastModifiedDate":"2024-01-24"},{"lineNumber":256,"author":{"gitId":"jmsandiegoo"},"content":" \"Boom! Task officially evicted from the list. Consider it gone:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":257,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\\t\" + delItem +","lastModifiedDate":"2024-01-24"},{"lineNumber":258,"author":{"gitId":"jmsandiegoo"},"content":" \"\\n\\tNow you have \" + taskList.getListSize() + \" in the list.\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":259,"author":{"gitId":"jmsandiegoo"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"jmsandiegoo"},"content":" throw new TyroneCmdException(\"Your delete parameter id is acting up.\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":261,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\\tIt\u0027s gotta be a legit number matchin\u0027 up with the right task.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":262,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":263,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":264,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":265,"author":{"gitId":"jmsandiegoo"},"content":" private static boolean isEmptyParam(String input) {","lastModifiedDate":"2024-01-27"},{"lineNumber":266,"author":{"gitId":"jmsandiegoo"},"content":" return !input.trim().contains(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":267,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":268,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":269,"author":{"gitId":"jmsandiegoo"},"content":" private static String formatStringOutput(String content) {","lastModifiedDate":"2024-01-27"},{"lineNumber":270,"author":{"gitId":"jmsandiegoo"},"content":" return (\"\\n\\t____________________________________________________________\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":271,"author":{"gitId":"jmsandiegoo"},"content":" \"\\t\" + content + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":272,"author":{"gitId":"jmsandiegoo"},"content":" \"\\n\\t____________________________________________________________\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":273,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":274,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jmsandiegoo":274}},{"path":"src/main/java/TyroneCmdException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"public class TyroneCmdException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":" public TyroneCmdException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":" super(\"Hey homie, we\u0027ve got a hiccup...\\n\\t\\t\" + message);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jmsandiegoo":5}},{"path":"src/main/java/TyroneStorageHelperException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"public class TyroneStorageHelperException extends Exception {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":" public TyroneStorageHelperException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":" super(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jmsandiegoo":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"deadline return book /by 2024-01-25 14:00","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"event project meeting /from 2024-02-14 /to 2024-02-18","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":"nonexistentcommand","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"deadline /by","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":"deadline return book /by","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":"deadline /by 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":"deadline return book /by 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":"event","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":"event /from","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":"event /to","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":"event /from /to","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":"event project meeting /from /to","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":"event project meeting /from Mon 2pm /to","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":"event project meeting /from /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":"event /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"jmsandiegoo"},"content":"mark 999","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"jmsandiegoo"},"content":"mark test","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"jmsandiegoo"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"jmsandiegoo"},"content":"unmark 999","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"jmsandiegoo"},"content":"unmark test","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"jmsandiegoo"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"jmsandiegoo"},"content":"delete 999","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"jmsandiegoo"},"content":"delete test","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"jmsandiegoo"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jmsandiegoo":40}},{"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":"jmsandiegoo"},"content":"if [ -e \"./data\" ]","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" rm -r data","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":"fi","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"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":28,"author":{"gitId":"jmsandiegoo"},"content":"java -classpath ../bin Tyrone \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jmsandiegoo":6,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"# Tyrone project","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"This is a simple chat bot named Tyrone. Given below are instructions on how to use it.","lastModifiedDate":"2024-01-27"},{"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":"jmsandiegoo"},"content":"3. After that, locate the `src/main/java/Tyrone.java` file, right-click it, and choose `Run Tyrone.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":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"\t████████╗██╗ ██╗██████╗ ██████╗ ███╗ ██╗███████╗","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":"\t╚══██╔══╝╚██╗ ██╔╝██╔══██╗██╔═══██╗████╗ ██║██╔════╝","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":"\t ██║ ╚████╔╝ ██████╔╝██║ ██║██╔██╗ ██║█████╗","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":"\t ██║ ╚██╔╝ ██╔══██╗██║ ██║██║╚██╗██║██╔══╝","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":"\t ██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║███████╗","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":"\t ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jmsandiegoo":9,"-":16}},{"path":"src/jmsandiegoo/tyrone/Tyrone.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.commands.ByeCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.commands.CommandResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.data.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.exceptions.CommandExecutionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.exceptions.IncorrectCommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.exceptions.StorageHelperException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.parser.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"public class Tyrone {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" private final Ui UI;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" private TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" new Tyrone().run();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" public Tyrone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":" this.UI \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":" start();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":" runUntilExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":" this.UI.outputByeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":" System.exit(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"jmsandiegoo"},"content":" public void start() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jmsandiegoo"},"content":" this.UI.outputWelcomeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"jmsandiegoo"},"content":" taskList.loadTaskListFromFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"jmsandiegoo"},"content":" } catch (StorageHelperException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"jmsandiegoo"},"content":" this.UI.outputFailedInitMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"jmsandiegoo"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"jmsandiegoo"},"content":" public void runUntilExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"jmsandiegoo"},"content":" boolean isActive \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"jmsandiegoo"},"content":" while (isActive) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jmsandiegoo"},"content":" String rawUserCommand \u003d this.UI.getRawUserCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"jmsandiegoo"},"content":" Command command \u003d new Parser().parseRawUserCommand(rawUserCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"jmsandiegoo"},"content":" command.initData(this.taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"jmsandiegoo"},"content":" CommandResult result \u003d command.execute();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"jmsandiegoo"},"content":" this.UI.outputResultToUser(result);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"jmsandiegoo"},"content":" if (command instanceof ByeCommand) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"jmsandiegoo"},"content":" isActive \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"jmsandiegoo"},"content":" taskList.saveTaskListToFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IncorrectCommandException | CommandExecutionException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"jmsandiegoo"},"content":" this.UI.outputExceptionToUser(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"jmsandiegoo"},"content":" } catch (StorageHelperException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"jmsandiegoo"},"content":" this.UI.outputExceptionToUser(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"jmsandiegoo"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jmsandiegoo":64}},{"path":"src/jmsandiegoo/tyrone/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" public ByeCommand() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" return new CommandResult(Messages.MESSAGE_BYE);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":13}},{"path":"src/jmsandiegoo/tyrone/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.data.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.exceptions.CommandExecutionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" protected TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" public void initData(TaskList taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":" public abstract CommandResult execute() throws CommandExecutionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":14}},{"path":"src/jmsandiegoo/tyrone/commands/CommandResult.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"public class CommandResult {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":" private final String commandResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" public CommandResult(String commandResult) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" this.commandResult \u003d commandResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" return this.commandResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":14}},{"path":"src/jmsandiegoo/tyrone/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.data.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" private final Deadline deadlineItem;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" public DeadlineCommand(Deadline deadlineItem) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" this.deadlineItem \u003d deadlineItem;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" super.taskList.addItem(this.deadlineItem);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" return new CommandResult(","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_ADD_TASK, this.deadlineItem, super.taskList.getListSize())","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":21}},{"path":"src/jmsandiegoo/tyrone/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.data.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.exceptions.CommandExecutionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" private final int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" public CommandResult execute() throws CommandExecutionException {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" Task delItem \u003d super.taskList.deleteItem(this.index);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" return new CommandResult(","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_DELETE, delItem, super.taskList.getListSize()));","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":" throw new CommandExecutionException(String.format(Messages.MESSAGE_INCORRECT_COMMAND_INDEX, \"delete\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":25}},{"path":"src/jmsandiegoo/tyrone/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.data.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" public static final String COMMAND_WORD \u003d \"event\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" private final Event eventItem;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" public EventCommand(Event eventItem) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" this.eventItem \u003d eventItem;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" super.taskList.addItem(this.eventItem);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" return new CommandResult(","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_ADD_TASK, this.eventItem, super.taskList.getListSize())","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":21}},{"path":"src/jmsandiegoo/tyrone/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" return new CommandResult(","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_LIST, super.taskList));","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":12}},{"path":"src/jmsandiegoo/tyrone/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.exceptions.CommandExecutionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" private final int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" public CommandResult execute() throws CommandExecutionException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" super.taskList.markItemDone(this.index);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" return new CommandResult(","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_MARK, super.taskList.getItem(this.index)));","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" throw new CommandExecutionException(String.format(Messages.MESSAGE_INCORRECT_COMMAND_INDEX, \"mark\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":24}},{"path":"src/jmsandiegoo/tyrone/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.data.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" private final ToDo toDoItem;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" public TodoCommand(ToDo toDoItem) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" this.toDoItem \u003d toDoItem;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" public CommandResult execute() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" super.taskList.addItem(this.toDoItem);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" return new CommandResult(","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_ADD_TASK, this.toDoItem, super.taskList.getListSize()));","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":20}},{"path":"src/jmsandiegoo/tyrone/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.exceptions.CommandExecutionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" private final int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" public CommandResult execute() throws CommandExecutionException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" super.taskList.unmarkItemDone(this.index);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" return new CommandResult(","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_UNMARK, super.taskList.getItem(this.index))","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":" throw new CommandExecutionException(String.format(Messages.MESSAGE_INCORRECT_COMMAND_INDEX, \"unmark\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":25}},{"path":"src/jmsandiegoo/tyrone/common/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.common;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.temporal.TemporalAccessor;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"public class DateTime {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" private final DateTimeFormatter inputFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" private final DateTimeFormatter outputFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" private final TemporalAccessor dateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" public DateTime(String dateTimeStr) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" this.inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd[ HH:mm]\");","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" this.outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy[ hh:mma]\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" this.dateTime \u003d this.parseDateTimeString(dateTimeStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" private TemporalAccessor parseDateTimeString(String dateTimeStr) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" return this.inputFormatter.parseBest(dateTimeStr, LocalDateTime::from, LocalDate::from);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" public String formatDateTime() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":" return this.outputFormatter.format(this.dateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":" public String serializeDateTime() {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":" return this.inputFormatter.format(this.dateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jmsandiegoo":31}},{"path":"src/jmsandiegoo/tyrone/common/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.common;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"public class Messages {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":" /* General messages */","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_LOGO \u003d \"████████╗██╗ ██╗██████╗ ██████╗ ███╗ ██╗███████╗\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" + \"╚══██╔══╝╚██╗ ██╔╝██╔══██╗██╔═══██╗████╗ ██║██╔════╝\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":" + \" ██║ ╚████╔╝ ██████╔╝██║ ██║██╔██╗ ██║█████╗\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" + \" ██║ ╚██╔╝ ██╔══██╗██║ ██║██║╚██╗██║██╔══╝\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" + \" ██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║███████╗\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":" + \" ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝\";","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_GREET \u003d \"Yo, what\u0027s crackin\u0027 fam! I\u0027m Tyrone, your digital homie.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" + \"What\u0027s the word? So I can help you out today.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_ADD_TASK \u003d \"Got it added homie:\\n%1s\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" + \"Now you have %2d in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" /* General Exception messages */","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_NOT_EXIST_CMD \u003d \"Command entered doesn\u0027t exist.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_INCORRECT_COMMAND_FORMAT \u003d \"Your %1s command has incorrect format.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" + \"Gotta follow the groove: %2s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_INCORRECT_COMMAND_INDEX \u003d \"Your %1s id is acting up.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" + \"Double check that: 1 \u003c\u003d id \u003c\u003d task list size\";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_INITIALIZE_FAIL \u003d \"Hey fam, I messed up my system initialization. Exiting...\";","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_ERROR \u003d \"Hey homie, we\u0027ve got a hiccup...\\n%1s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_BYE \u003d \"Peace out! Crossin\u0027 my fingers for a speedy reunion, ya feel?\";","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":" /* List command messages */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_LIST \u003d \"Peep the lineup, here\u0027s the rundown of tasks on your list:\\n%1s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":" /* Todo command messages */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_TODO_EMPTY_DESC \u003d \"Can\u0027t leave that to-do description hanging dry.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"jmsandiegoo"},"content":" + \"Gotta drop some words in there!\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"jmsandiegoo"},"content":" /* Deadline command messages */","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_DEADLINE_INCORRECT \u003d String.format(","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"jmsandiegoo"},"content":" MESSAGE_INCORRECT_COMMAND_FORMAT,","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"jmsandiegoo"},"content":" \"deadline\",","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"jmsandiegoo"},"content":" \"\\\"deadline \u003ctask description\u003e /by \u003cyyyy-mm-dd[ HH:mm]\u003e\\\"\"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"jmsandiegoo"},"content":" /* Event command messages */","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_EVENT_INCORRECT \u003d String.format(","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"jmsandiegoo"},"content":" MESSAGE_INCORRECT_COMMAND_FORMAT,","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"jmsandiegoo"},"content":" \"event\",","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"jmsandiegoo"},"content":" \"\\\"event \u003ctask description\u003e /from \u003cyyyy-mm-dd[ HH:mm]\u003e /to \u003cyyyy-mm-dd[ HH:mm]\u003e\\\"\"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"jmsandiegoo"},"content":" /* Mark command messages */","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_MARK \u003d \"Dope! Check it, I\u0027ve tagged this task as handled:\\n%1s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"jmsandiegoo"},"content":" /* Unmark command messages */","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_UNMARK \u003d \"A\u0027ight, I\u0027ve stamped this task as still in the works:\\n%1s\";","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"jmsandiegoo"},"content":" /* Delete command messages */","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"jmsandiegoo"},"content":" public static String MESSAGE_DELETE \u003d \"Boom! Task officially evicted from the list. Consider it gone:\\n%1s\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"jmsandiegoo"},"content":" + \"Now you have %2d in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":58}},{"path":"src/jmsandiegoo/tyrone/exceptions/CommandExecutionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"public class CommandExecutionException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":" public CommandExecutionException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":7}},{"path":"src/jmsandiegoo/tyrone/exceptions/IncorrectCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"public class IncorrectCommandException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":" public IncorrectCommandException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":7}},{"path":"src/jmsandiegoo/tyrone/exceptions/StorageHelperException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"public class StorageHelperException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":" public StorageHelperException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":7}},{"path":"src/jmsandiegoo/tyrone/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.commands.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.DateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.data.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.data.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.data.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.exceptions.IncorrectCommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" private static final Pattern TODO_ARGS_FORMAT \u003d Pattern.compile(\"(?\u003cdescription\u003e.+)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" private static final Pattern DEADLINE_ARGS_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" \"(?\u003cdescription\u003e[^/]+)\\\\s+/by\\\\s+(?\u003cdateTime\u003e[^/]+)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" private static final Pattern EVENT_ARGS_FORMAT \u003d Pattern.compile(","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" \"(?\u003cdescription\u003e[^/]+)\\\\s+/from\\\\s+(?\u003cfromDateTime\u003e[^/]+)\\\\s+/to\\\\s+(?\u003ctoDateTime\u003e[^/]+)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" private static final Pattern INDEX_ARGS_FORMAT \u003d Pattern.compile(\"(?\u003ctargetIndex\u003e\\\\d+)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" public Command parseRawUserCommand(String rawUserInput) throws IncorrectCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(rawUserInput.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(Messages.MESSAGE_NOT_EXIST_CMD);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":" Command command;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"jmsandiegoo"},"content":" // execute cmd logic respectively","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"jmsandiegoo"},"content":" switch (commandWord) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jmsandiegoo"},"content":" case ByeCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"jmsandiegoo"},"content":" command \u003d parseByeCommandArgs(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"jmsandiegoo"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"jmsandiegoo"},"content":" command \u003d parseListCommandArgs(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"jmsandiegoo"},"content":" case TodoCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"jmsandiegoo"},"content":" command \u003d parseTodoCommandArgs(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"jmsandiegoo"},"content":" case DeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"jmsandiegoo"},"content":" command \u003d parseDeadlineCommandArgs(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"jmsandiegoo"},"content":" case EventCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"jmsandiegoo"},"content":" command \u003d parseEventCommandArgs(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"jmsandiegoo"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"jmsandiegoo"},"content":" command \u003d parseMarkupCommandArgs(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"jmsandiegoo"},"content":" case UnmarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"jmsandiegoo"},"content":" command \u003d parseUnmarkCommandArgs(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"jmsandiegoo"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"jmsandiegoo"},"content":" command \u003d parseDeleteCommandArgs(arguments);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"jmsandiegoo"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"jmsandiegoo"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(Messages.MESSAGE_NOT_EXIST_CMD);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"jmsandiegoo"},"content":" return command;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"jmsandiegoo"},"content":" private Command parseByeCommandArgs(String arguments) throws IncorrectCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"jmsandiegoo"},"content":" if (!arguments.trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_INCORRECT_COMMAND_FORMAT, \"bye\", \"no arguments allowed\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"jmsandiegoo"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"jmsandiegoo"},"content":" private Command parseListCommandArgs(String arguments) throws IncorrectCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"jmsandiegoo"},"content":" if (!arguments.trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_INCORRECT_COMMAND_FORMAT, \"list\", \"no arguments allowed\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"jmsandiegoo"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"jmsandiegoo"},"content":" private Command parseTodoCommandArgs(String arguments) throws IncorrectCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"jmsandiegoo"},"content":" final Matcher matcher \u003d TODO_ARGS_FORMAT.matcher(arguments.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"jmsandiegoo"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(String.format(Messages.MESSAGE_TODO_EMPTY_DESC));","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"jmsandiegoo"},"content":" ToDo item \u003d new ToDo(matcher.group(\"description\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"jmsandiegoo"},"content":" return new TodoCommand(item);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"jmsandiegoo"},"content":" } catch(IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_INCORRECT_COMMAND_FORMAT, \"todo\", \"todo \u003cdescription\u003e\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"jmsandiegoo"},"content":" private Command parseDeadlineCommandArgs(String arguments) throws IncorrectCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"jmsandiegoo"},"content":" final Matcher matcher \u003d DEADLINE_ARGS_FORMAT.matcher(arguments.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"jmsandiegoo"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(Messages.MESSAGE_DEADLINE_INCORRECT);","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"jmsandiegoo"},"content":" Deadline item \u003d new Deadline(","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"jmsandiegoo"},"content":" matcher.group(\"description\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"jmsandiegoo"},"content":" new DateTime(matcher.group(\"dateTime\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"jmsandiegoo"},"content":" return new DeadlineCommand(item);","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IllegalArgumentException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(Messages.MESSAGE_DEADLINE_INCORRECT);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"jmsandiegoo"},"content":" private Command parseEventCommandArgs(String arguments) throws IncorrectCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"jmsandiegoo"},"content":" final Matcher matcher \u003d EVENT_ARGS_FORMAT.matcher(arguments.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"jmsandiegoo"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(Messages.MESSAGE_EVENT_INCORRECT);","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"jmsandiegoo"},"content":" Event item \u003d new Event(","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"jmsandiegoo"},"content":" matcher.group(\"description\"),","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"jmsandiegoo"},"content":" new DateTime(matcher.group(\"fromDateTime\")),","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"jmsandiegoo"},"content":" new DateTime(matcher.group(\"toDateTime\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"jmsandiegoo"},"content":" return new EventCommand(item);","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IllegalArgumentException | DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(Messages.MESSAGE_EVENT_INCORRECT);","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"jmsandiegoo"},"content":" private Command parseMarkupCommandArgs(String arguments) throws IncorrectCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"jmsandiegoo"},"content":" final Matcher matcher \u003d INDEX_ARGS_FORMAT.matcher(arguments.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"jmsandiegoo"},"content":" final String MESSAGE_INCORRECT_MARK_INDEX \u003d String.format(Messages.MESSAGE_INCORRECT_COMMAND_INDEX, \"mark\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"jmsandiegoo"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(MESSAGE_INCORRECT_MARK_INDEX);","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"jmsandiegoo"},"content":" return new MarkCommand(Integer.parseInt(matcher.group(\"targetIndex\")) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(MESSAGE_INCORRECT_MARK_INDEX);","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"jmsandiegoo"},"content":" private Command parseUnmarkCommandArgs(String arguments) throws IncorrectCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"jmsandiegoo"},"content":" final Matcher matcher \u003d INDEX_ARGS_FORMAT.matcher(arguments.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"jmsandiegoo"},"content":" final String MESSAGE_INCORRECT_UNMARK_INDEX \u003d String.format(Messages.MESSAGE_INCORRECT_COMMAND_INDEX, \"unmark\");","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"jmsandiegoo"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(MESSAGE_INCORRECT_UNMARK_INDEX);","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"jmsandiegoo"},"content":" return new UnmarkCommand(Integer.parseInt(matcher.group(\"targetIndex\")) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(MESSAGE_INCORRECT_UNMARK_INDEX);","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"jmsandiegoo"},"content":" private Command parseDeleteCommandArgs(String arguments) throws IncorrectCommandException {","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"jmsandiegoo"},"content":" final Matcher matcher \u003d INDEX_ARGS_FORMAT.matcher(arguments.trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"jmsandiegoo"},"content":" final String MESSAGE_INCORRECT_DELETE_INDEX \u003d String.format(Messages.MESSAGE_INCORRECT_COMMAND_INDEX, \"delete\");","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"jmsandiegoo"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(MESSAGE_INCORRECT_DELETE_INDEX);","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"jmsandiegoo"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"jmsandiegoo"},"content":" return new DeleteCommand(Integer.parseInt(matcher.group(\"targetIndex\")) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"jmsandiegoo"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"jmsandiegoo"},"content":" throw new IncorrectCommandException(MESSAGE_INCORRECT_DELETE_INDEX);","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":178}},{"path":"src/jmsandiegoo/tyrone/storage/StorageHelper.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"public class StorageHelper {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":" private static final String directoryPath \u003d \"data\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":" private static final String fileName \u003d \"task_list.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":" public File loadFile() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" // check if the directory exists if not create it","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" directory.mkdir();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":" // check if the file exists if not create it","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" File file \u003d new File(directoryPath + \"/\" + fileName);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":" return file;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" public void saveFile(String content) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" // check if the directory exists if not create it","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":" File directory \u003d new File(directoryPath);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":" directory.mkdir();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":" // check if the file exists if not create it","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":" File file \u003d new File(directoryPath + \"/\" + fileName);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"jmsandiegoo"},"content":" // write into the file","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"jmsandiegoo"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jmsandiegoo"},"content":" fw.write(content);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"jmsandiegoo"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":38}},{"path":"src/jmsandiegoo/tyrone/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"package jmsandiegoo.tyrone.ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.commands.CommandResult;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"import jmsandiegoo.tyrone.common.Messages;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"import java.io.OutputStream;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":" private static final String LINE_SEPARATOR \u003d System.lineSeparator();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":" private static final String DIVIDER \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":" private final Scanner input;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":" private final PrintWriter output;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":" this(System.in, System.out);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":" public Ui(InputStream inputStream, OutputStream outputStream) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":" this.input \u003d new Scanner(inputStream);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":" this.output \u003d new PrintWriter(outputStream, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":" private boolean shouldIgnore(String rawInputLine) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":" return rawInputLine.trim().isEmpty();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":" public void outputWelcomeMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":" outputToUser(","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"jmsandiegoo"},"content":" Messages.MESSAGE_LOGO,","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"jmsandiegoo"},"content":" LINE_SEPARATOR,","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jmsandiegoo"},"content":" Messages.MESSAGE_GREET,","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"jmsandiegoo"},"content":" LINE_SEPARATOR,","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"jmsandiegoo"},"content":" DIVIDER","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"jmsandiegoo"},"content":" public void outputByeMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"jmsandiegoo"},"content":" outputToUser(","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"jmsandiegoo"},"content":" DIVIDER,","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"jmsandiegoo"},"content":" LINE_SEPARATOR,","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"jmsandiegoo"},"content":" Messages.MESSAGE_BYE,","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"jmsandiegoo"},"content":" LINE_SEPARATOR,","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"jmsandiegoo"},"content":" DIVIDER","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"jmsandiegoo"},"content":" public void outputFailedInitMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"jmsandiegoo"},"content":" outputToUser(","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"jmsandiegoo"},"content":" DIVIDER,","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"jmsandiegoo"},"content":" LINE_SEPARATOR,","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"jmsandiegoo"},"content":" Messages.MESSAGE_INITIALIZE_FAIL,","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"jmsandiegoo"},"content":" LINE_SEPARATOR,","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"jmsandiegoo"},"content":" DIVIDER","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"jmsandiegoo"},"content":" public String getRawUserCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"jmsandiegoo"},"content":" String rawInputLine \u003d input.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"jmsandiegoo"},"content":" while (shouldIgnore(rawInputLine)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"jmsandiegoo"},"content":" rawInputLine \u003d input.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"jmsandiegoo"},"content":" return rawInputLine;","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"jmsandiegoo"},"content":" public void outputResultToUser(CommandResult cmdResult) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"jmsandiegoo"},"content":" outputToUser(","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"jmsandiegoo"},"content":" DIVIDER,","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"jmsandiegoo"},"content":" LINE_SEPARATOR,","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"jmsandiegoo"},"content":" cmdResult.toString(),","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"jmsandiegoo"},"content":" LINE_SEPARATOR,","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"jmsandiegoo"},"content":" DIVIDER","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"jmsandiegoo"},"content":" public void outputExceptionToUser(Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"jmsandiegoo"},"content":" outputToUser(","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"jmsandiegoo"},"content":" DIVIDER,","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"jmsandiegoo"},"content":" LINE_SEPARATOR,","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"jmsandiegoo"},"content":" String.format(Messages.MESSAGE_ERROR, e.getMessage()),","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"jmsandiegoo"},"content":" LINE_SEPARATOR,","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"jmsandiegoo"},"content":" DIVIDER","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"jmsandiegoo"},"content":" );","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"jmsandiegoo"},"content":" public void outputToUser(String... messages) {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"jmsandiegoo"},"content":" for (String m : messages) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"jmsandiegoo"},"content":" this.output.println(m);","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"jmsandiegoo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"jmsandiegoo"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jmsandiegoo":95}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jmsandiegoo"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"jmsandiegoo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"jmsandiegoo"},"content":"deadline return book /by 2024-01-25 14:00","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jmsandiegoo"},"content":"event project meeting /from 2024-02-14 /to 2024-02-18","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jmsandiegoo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"jmsandiegoo"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"jmsandiegoo"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"jmsandiegoo"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"jmsandiegoo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"jmsandiegoo"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"jmsandiegoo"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"jmsandiegoo"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"jmsandiegoo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"jmsandiegoo"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"jmsandiegoo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"jmsandiegoo"},"content":"nonexistentcommand","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"deadline /by","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":"deadline return book /by","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":"deadline /by 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"jmsandiegoo"},"content":"deadline return book /by 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jmsandiegoo"},"content":"event","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"jmsandiegoo"},"content":"event /from","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"jmsandiegoo"},"content":"event /to","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"jmsandiegoo"},"content":"event /from /to","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"jmsandiegoo"},"content":"event project meeting /from /to","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"jmsandiegoo"},"content":"event project meeting /from Mon 2pm /to","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"jmsandiegoo"},"content":"event project meeting /from /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"jmsandiegoo"},"content":"event /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"jmsandiegoo"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"jmsandiegoo"},"content":"mark 999","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"jmsandiegoo"},"content":"mark test","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"jmsandiegoo"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"jmsandiegoo"},"content":"unmark 999","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"jmsandiegoo"},"content":"unmark test","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"jmsandiegoo"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"jmsandiegoo"},"content":"delete 999","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"jmsandiegoo"},"content":"delete test","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"jmsandiegoo"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"jmsandiegoo":40}},{"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":"jmsandiegoo"},"content":"if [ -e \"./data\" ]","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jmsandiegoo"},"content":" rm -r data","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jmsandiegoo"},"content":"fi","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jmsandiegoo"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jmsandiegoo"},"content":"# find all Java files and compile them into the bin folder, terminates if an error occurred","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jmsandiegoo"},"content":"if ! find ../src/jmsandiegoo/tyrone -name \u0027*.java\u0027 -type f -print0 | xargs -0 javac -d ../bin -Xlint:none; then","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"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":27,"author":{"gitId":"jmsandiegoo"},"content":"java -classpath ../bin Tyrone \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jmsandiegoo":7,"-":35}}] diff --git a/jmsandiegoo_ip_master/commits.json b/jmsandiegoo_ip_master/commits.json index dd4f7777..0b2add30 100644 --- a/jmsandiegoo_ip_master/commits.json +++ b/jmsandiegoo_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jmsandiegoo":[{"date":"2024-01-23","commitResults":[{"hash":"613b108f1e51f2ba6f33ce12cd810e3e353a6f8d","isMergeCommit":false,"messageTitle":"Renamed Bot to Tyrone and updated personality message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":10}}},{"hash":"74e36c270ca52ab084ad1116419465902eaf6fec","isMergeCommit":false,"messageTitle":"Added echo and bye functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":14}}},{"hash":"92344a5011bc20394b575a65a94bc39c35f90565","isMergeCommit":false,"messageTitle":"changed input reader to scanner","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":5}}},{"hash":"c3a4e5cfa745389f764680b897929aaf26a14cda","isMergeCommit":false,"messageTitle":"add and display list function done","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":18}}},{"hash":"1866de257f534cd8ef13668b2d3fafd3e4188c0b","isMergeCommit":false,"messageTitle":"Added TodoItem to support more functionality for todo item","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"e092edc301fe620d49a090089ac68a858d443568","isMergeCommit":false,"messageTitle":"Updated TodoList and Tyrone classes to support marking and unmarking feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":15}}},{"hash":"03b14af0421c45a3292f65d98557605f995fbe51","isMergeCommit":false,"messageTitle":"Fixed some print formatting issues","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"83c07adff4f8c1ed47246d63fdca8e469420670a","isMergeCommit":false,"messageTitle":"Fixed unmark cmd freeze bug","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a44cc5006f77af331b01b5cdf6f2642ba70b5ef5","isMergeCommit":false,"messageTitle":"rename classes to suit the three types of tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":10}}},{"hash":"174c454b3768cd51a5cdb624b1f1dc314388847b","isMergeCommit":false,"messageTitle":"Added three subtypes of Tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":20}}},{"hash":"7bc2f0e265c8595c5ac234414a80b5beaf4c8204","isMergeCommit":false,"messageTitle":"updated tyrone and tasklist to support three task functionality","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":25}}}]},{"date":"2024-01-24","commitResults":[{"hash":"027228d41f8fde830378c1ea16c422bb83c62c3b","isMergeCommit":false,"messageTitle":"implemented cli text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}},{"hash":"5878b8914e4229de22abd2682095a3c949c7cc47","isMergeCommit":false,"messageTitle":"Added command not exist error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":18}}},{"hash":"8c9ca9090345dcf413d122cb4f44e1fde1997ae7","isMergeCommit":false,"messageTitle":"Implemented enums for commands, implemented overall error handling","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":186,"deletions":65}}},{"hash":"4c644a32de703f0dc274e40e6e90e13eacbf3184","isMergeCommit":false,"messageTitle":"Fixed error messages output and typos","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":7}}},{"hash":"b56af291a6dd4802214b35cc912de0c691caf010","isMergeCommit":false,"messageTitle":"Updated test case with error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":20,"deletions":0}}},{"hash":"96434aff232c35b27705d3c88835091df05facc1","isMergeCommit":false,"messageTitle":"delete feature added","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":6}}},{"hash":"4190ecf1ff8b718551fe0c1d063cccbd473ac254","isMergeCommit":false,"messageTitle":"updated test to include delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"59de4f10d627d916c5c2bbb6e296210e54044ad6","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":9,"deletions":8}}},{"hash":"4abc45c18eb484babd771b976ef1a4f8f8e4ee7f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"be531e92d0268ecd65c7ac8011e6c55d217329df","isMergeCommit":false,"messageTitle":"Tyrone class: update method to private except main","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":10}}},{"hash":"ddd9d87ce8180642c57a14e42284eb2fa1d41c17","isMergeCommit":false,"messageTitle":"Implement load file without error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":60,"deletions":4}}},{"hash":"4bdc696bb56abd4c73ab394aea1aa6f72baa9bf1","isMergeCommit":false,"messageTitle":"Add task list local saves with basic error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":113,"deletions":59}}},{"hash":"013cf39b252f4d3e9b80308101f06ea03294aafd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"4cd5f094a3653f4a48d6827b46d37ff10def54cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:jmsandiegoo/ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"5a657a2c595c8c68feccdce9af8dfb0116d64364","isMergeCommit":false,"messageTitle":"Add datetime support for deadline event","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":143,"deletions":68}}},{"hash":"d806e5d3a65230049e8983df44ddad483ffbebfc","isMergeCommit":false,"messageTitle":"Add datetime support for event task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":66,"deletions":71}}},{"hash":"beca505e82edc988b1a4a6af3171049654ac6f73","isMergeCommit":false,"messageTitle":"Update text-ui-test to include new features","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"sh":{"insertions":5,"deletions":0}}},{"hash":"cf57e970614813d3d1effe9b15341d26fd279723","isMergeCommit":false,"messageTitle":"Fix event command exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"2287bf61f1bc148d1530044c8a05ebffd3b0b5a9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"1ffa4fa024b111c312c564d3f06907c316ae72b2","isMergeCommit":false,"messageTitle":"Update .gitignore to include data dir","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"jmsandiegoo":{"java":551,"md":9,"fxml":0,"sh":6,"bat":0,"gradle":0,"txt":40}},"authorContributionVariance":{"jmsandiegoo":34529.69},"authorDisplayNameMap":{"jmsandiegoo":"SAN ..ISTA"}} +{"authorDailyContributionsMap":{"jmsandiegoo":[{"date":"2024-01-23","commitResults":[{"hash":"613b108f1e51f2ba6f33ce12cd810e3e353a6f8d","isMergeCommit":false,"messageTitle":"Renamed Bot to Tyrone and updated personality message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":10}}},{"hash":"74e36c270ca52ab084ad1116419465902eaf6fec","isMergeCommit":false,"messageTitle":"Added echo and bye functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":14}}},{"hash":"92344a5011bc20394b575a65a94bc39c35f90565","isMergeCommit":false,"messageTitle":"changed input reader to scanner","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":5}}},{"hash":"c3a4e5cfa745389f764680b897929aaf26a14cda","isMergeCommit":false,"messageTitle":"add and display list function done","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":18}}},{"hash":"1866de257f534cd8ef13668b2d3fafd3e4188c0b","isMergeCommit":false,"messageTitle":"Added TodoItem to support more functionality for todo item","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"e092edc301fe620d49a090089ac68a858d443568","isMergeCommit":false,"messageTitle":"Updated TodoList and Tyrone classes to support marking and unmarking feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":15}}},{"hash":"03b14af0421c45a3292f65d98557605f995fbe51","isMergeCommit":false,"messageTitle":"Fixed some print formatting issues","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"83c07adff4f8c1ed47246d63fdca8e469420670a","isMergeCommit":false,"messageTitle":"Fixed unmark cmd freeze bug","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a44cc5006f77af331b01b5cdf6f2642ba70b5ef5","isMergeCommit":false,"messageTitle":"rename classes to suit the three types of tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":10}}},{"hash":"174c454b3768cd51a5cdb624b1f1dc314388847b","isMergeCommit":false,"messageTitle":"Added three subtypes of Tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":20}}},{"hash":"7bc2f0e265c8595c5ac234414a80b5beaf4c8204","isMergeCommit":false,"messageTitle":"updated tyrone and tasklist to support three task functionality","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":25}}}]},{"date":"2024-01-24","commitResults":[{"hash":"027228d41f8fde830378c1ea16c422bb83c62c3b","isMergeCommit":false,"messageTitle":"implemented cli text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}},{"hash":"5878b8914e4229de22abd2682095a3c949c7cc47","isMergeCommit":false,"messageTitle":"Added command not exist error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":18}}},{"hash":"8c9ca9090345dcf413d122cb4f44e1fde1997ae7","isMergeCommit":false,"messageTitle":"Implemented enums for commands, implemented overall error handling","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":186,"deletions":65}}},{"hash":"4c644a32de703f0dc274e40e6e90e13eacbf3184","isMergeCommit":false,"messageTitle":"Fixed error messages output and typos","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":7}}},{"hash":"b56af291a6dd4802214b35cc912de0c691caf010","isMergeCommit":false,"messageTitle":"Updated test case with error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":20,"deletions":0}}},{"hash":"96434aff232c35b27705d3c88835091df05facc1","isMergeCommit":false,"messageTitle":"delete feature added","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":6}}},{"hash":"4190ecf1ff8b718551fe0c1d063cccbd473ac254","isMergeCommit":false,"messageTitle":"updated test to include delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"59de4f10d627d916c5c2bbb6e296210e54044ad6","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":9,"deletions":8}}},{"hash":"4abc45c18eb484babd771b976ef1a4f8f8e4ee7f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"be531e92d0268ecd65c7ac8011e6c55d217329df","isMergeCommit":false,"messageTitle":"Tyrone class: update method to private except main","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":10}}},{"hash":"ddd9d87ce8180642c57a14e42284eb2fa1d41c17","isMergeCommit":false,"messageTitle":"Implement load file without error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":60,"deletions":4}}},{"hash":"4bdc696bb56abd4c73ab394aea1aa6f72baa9bf1","isMergeCommit":false,"messageTitle":"Add task list local saves with basic error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":113,"deletions":59}}},{"hash":"013cf39b252f4d3e9b80308101f06ea03294aafd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"4cd5f094a3653f4a48d6827b46d37ff10def54cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:jmsandiegoo/ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"5a657a2c595c8c68feccdce9af8dfb0116d64364","isMergeCommit":false,"messageTitle":"Add datetime support for deadline event","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":143,"deletions":68}}},{"hash":"d806e5d3a65230049e8983df44ddad483ffbebfc","isMergeCommit":false,"messageTitle":"Add datetime support for event task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":66,"deletions":71}}},{"hash":"beca505e82edc988b1a4a6af3171049654ac6f73","isMergeCommit":false,"messageTitle":"Update text-ui-test to include new features","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"sh":{"insertions":5,"deletions":0}}},{"hash":"cf57e970614813d3d1effe9b15341d26fd279723","isMergeCommit":false,"messageTitle":"Fix event command exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"2287bf61f1bc148d1530044c8a05ebffd3b0b5a9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"1ffa4fa024b111c312c564d3f06907c316ae72b2","isMergeCommit":false,"messageTitle":"Update .gitignore to include data dir","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4}}},{"hash":"27a4db1323bcaaa508f5464ab85c458d106a4fbb","isMergeCommit":false,"messageTitle":"Refactor DateTime class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":30}}}]},{"date":"2024-01-30","commitResults":[{"hash":"73619cce19a646f38bbc5fe826f08a4d585128ef","isMergeCommit":false,"messageTitle":"Add and implement UI class to handle user interface","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":291,"deletions":167}}},{"hash":"a13f249eb9281d085c8b99a6327ccaac2664d8ab","isMergeCommit":false,"messageTitle":"Implement Parser and Cmd classes to handle user commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":383,"deletions":242}}},{"hash":"cd5d14dd5c3318560a39179bbde99791d5dd9fc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"582a55dc5c706553ab5552cd52763886904dd755","isMergeCommit":false,"messageTitle":"Implement packages in codebase","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":203},"sh":{"insertions":2,"deletions":3}}},{"hash":"e3e323e305519251024776c8c6e5912d74c24bf9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jmsandiegoo":{"java":674,"md":9,"fxml":0,"sh":7,"bat":0,"gradle":0,"txt":40}},"authorContributionVariance":{"jmsandiegoo":148774.02},"authorDisplayNameMap":{"jmsandiegoo":"SAN ..ISTA"}} diff --git a/jskimdev_ip_master/authorship.json b/jskimdev_ip_master/authorship.json index 5d5e6810..9da92cd0 100644 --- a/jskimdev_ip_master/authorship.json +++ b/jskimdev_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"import java.awt.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":" private ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" public void returnList () {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" for (int i \u003d 0; i \u003c storage.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + (i + 1) + \".\" + storage.get(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" public void markTask(String[] split_message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" Integer index \u003d Integer.parseInt(split_message[1]) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" this.storage.get(index).setStatus(true);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + this.storage.get(index).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" public void unmarkTask(String[] split_message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" Integer index \u003d Integer.parseInt(split_message[1]) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" this.storage.get(index).setStatus(false);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + this.storage.get(index).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" public void addTask(String[] split_message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" Task message;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" if (split_message[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" if (split_message.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" throw new DukeException.TODONoTaskException(\"No Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" message \u003d Task.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" String task \u003d \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" for (int i \u003d 1; i \u003c split_message.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" task \u003d task + split_message[i] + \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" task \u003d task.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" message.setTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" } catch (DukeException.TODONoTaskException ex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + ex.getMessage() + \". Please enter the task, too.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" message \u003d Task.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" String content \u003d \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" for (int i \u003d 1; i \u003c split_message.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" if (split_message[i].equals(\"/by\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" content \u003d content.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" message.setTask(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" content \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" content \u003d content + split_message[i] + \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" content \u003d content.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" message.setTo(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[0].equals(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" message \u003d Task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" String content \u003d \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" for (int i \u003d 1; i \u003c split_message.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" if (split_message[i].equals(\"/from\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" content \u003d content.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" message.setTask(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"jskimdev"},"content":" content \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[i].equals(\"/to\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" content \u003d content.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" message.setFrom(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" content \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" content \u003d content + split_message[i] + \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" content \u003d content.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" message.setTo(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" throw new DukeException.UnsupportedTaskException(\"This is unsupported task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"jskimdev"},"content":" storage.add(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + message.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Now you have \" + this.storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" } catch (DukeException.UnsupportedTaskException ex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + ex.getMessage() + \". Please only enter the supported types of task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" public void deleteTask(int position) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" Task task \u003d this.storage.get(position - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" this.storage.remove(position - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Got it. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Now you have \" + this.storage.size() + \" task in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" Duke chatbot \u003d new Duke();","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" -----------------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Hello! I\u0027m ByteTalker\");","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" -----------------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":" while (true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"jskimdev"},"content":" String userInput_String \u003d userInput.nextLine().strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"jskimdev"},"content":" String[] split_message \u003d userInput_String.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" -----------------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"jskimdev"},"content":" if (userInput_String.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"jskimdev"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"jskimdev"},"content":" } else if (userInput_String.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"jskimdev"},"content":" chatbot.returnList();","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"jskimdev"},"content":" chatbot.markTask(split_message);","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"jskimdev"},"content":" chatbot.unmarkTask(split_message);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"jskimdev"},"content":" chatbot.deleteTask(Integer.parseInt(split_message[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"jskimdev"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"jskimdev"},"content":" chatbot.addTask(split_message);","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" -----------------------------------\");","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" -----------------------------------\");","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jskimdev":127,"-":9}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"public class DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":" public static class TODONoTaskException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":" public TODONoTaskException(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" public static class DEADLINEException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":" public DEADLINEException(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":" public static class UnsupportedTaskException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" public UnsupportedTaskException(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jskimdev":19}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"enum Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":" TODO(\"T\") {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":" return \"[\" + getIcon() + \"]\" + \"[\" + getStatusIcon() + \"] \" + getTask();","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" },","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" DEADLINE(\"D\") {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" return \"[\" + getIcon() + \"]\" + \"[\" + getStatusIcon() + \"] \" + getTask() + \" (by: \" + getTo() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" },","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":" Event(\"E\") {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" return \"[\" + getIcon() + \"]\" + \"[\" + getStatusIcon() + \"] \" + getTask() + \" (from: \" + getFrom() + \" to:\" + getTo() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" private String task;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" private String icon;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" private String to;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" private String from;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" Task(String icon) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" this.icon \u003d icon;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" public void setTask(String task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" public String getTask() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" return this.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" public abstract String toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" return this.isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" public void setStatus(boolean status) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" public String getIcon() {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" return this.icon;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" public void setTo(String to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" public String getTo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" return this.to;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" public void setFrom(String from) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" public String getFrom() {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" return this.from;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jskimdev":68}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"import java.awt.*;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":" private ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" public void returnList () {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" for (int i \u003d 0; i \u003c storage.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + (i + 1) + \".\" + storage.get(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" public void markTask(String[] split_message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" Integer index \u003d Integer.parseInt(split_message[1]) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" this.storage.get(index).setStatus(true);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + this.storage.get(index).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" public void unmarkTask(String[] split_message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" Integer index \u003d Integer.parseInt(split_message[1]) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" this.storage.get(index).setStatus(false);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + this.storage.get(index).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" public void addTask(String[] split_message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" Task message;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" if (split_message[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":" if (split_message.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" throw new DukeException.TODONoTaskException(\"No Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" message \u003d Task.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":" String task \u003d \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" for (int i \u003d 1; i \u003c split_message.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":" task \u003d task + split_message[i] + \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" task \u003d task.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" message.setTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":" } catch (DukeException.TODONoTaskException ex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + ex.getMessage() + \". Please enter the task, too.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" message \u003d Task.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" String content \u003d \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" for (int i \u003d 1; i \u003c split_message.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":" if (split_message[i].equals(\"/by\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" content \u003d content.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" message.setTask(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" content \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" content \u003d content + split_message[i] + \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":" content \u003d content.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" message.setTo(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[0].equals(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" message \u003d Task.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":" String content \u003d \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" for (int i \u003d 1; i \u003c split_message.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" if (split_message[i].equals(\"/from\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" content \u003d content.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":" message.setTask(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"jskimdev"},"content":" content \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[i].equals(\"/to\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"jskimdev"},"content":" content \u003d content.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"jskimdev"},"content":" message.setFrom(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"jskimdev"},"content":" content \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"jskimdev"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jskimdev"},"content":" content \u003d content + split_message[i] + \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"jskimdev"},"content":" content \u003d content.strip();","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"jskimdev"},"content":" message.setTo(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"jskimdev"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"jskimdev"},"content":" throw new DukeException.UnsupportedTaskException(\"This is unsupported task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"jskimdev"},"content":" storage.add(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + message.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Now you have \" + this.storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"jskimdev"},"content":" } catch (DukeException.UnsupportedTaskException ex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + ex.getMessage() + \". Please only enter the supported types of task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"jskimdev"},"content":" public void deleteTask(int position) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"jskimdev"},"content":" Task task \u003d this.storage.get(position - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"jskimdev"},"content":" this.storage.remove(position - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Got it. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Now you have \" + this.storage.size() + \" task in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"jskimdev"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"jskimdev"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"jskimdev"},"content":" Duke chatbot \u003d new Duke();","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" -----------------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Hello! I\u0027m ByteTalker\");","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" -----------------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"jskimdev"},"content":" while (true) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"jskimdev"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"jskimdev"},"content":" String userInput_String \u003d userInput.nextLine().strip();","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"jskimdev"},"content":" String[] split_message \u003d userInput_String.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" -----------------------------------\");","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"jskimdev"},"content":" if (userInput_String.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"jskimdev"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"jskimdev"},"content":" } else if (userInput_String.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"jskimdev"},"content":" chatbot.returnList();","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"jskimdev"},"content":" chatbot.markTask(split_message);","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"jskimdev"},"content":" chatbot.unmarkTask(split_message);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"jskimdev"},"content":" } else if (split_message[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"jskimdev"},"content":" chatbot.deleteTask(Integer.parseInt(split_message[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"jskimdev"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"jskimdev"},"content":" chatbot.addTask(split_message);","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" -----------------------------------\");","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"jskimdev"},"content":" System.out.println(\" -----------------------------------\");","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jskimdev":127,"-":9}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"public class DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":" public static class TODONoTaskException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":" public TODONoTaskException(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" public static class DEADLINEException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":" public DEADLINEException(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":" public static class UnsupportedTaskException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" public UnsupportedTaskException(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jskimdev":19}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"enum Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"jskimdev"},"content":" TODO(\"T\") {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"jskimdev"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"jskimdev"},"content":" return \"[\" + getIcon() + \"]\" + \"[\" + getStatusIcon() + \"] \" + getTask();","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"jskimdev"},"content":" },","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jskimdev"},"content":" DEADLINE(\"D\") {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"jskimdev"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"jskimdev"},"content":" return \"[\" + getIcon() + \"]\" + \"[\" + getStatusIcon() + \"] \" + getTask() + \" (by: \" + getTo() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jskimdev"},"content":" },","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jskimdev"},"content":" Event(\"E\") {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jskimdev"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jskimdev"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"jskimdev"},"content":" return \"[\" + getIcon() + \"]\" + \"[\" + getStatusIcon() + \"] \" + getTask() + \" (from: \" + getFrom() + \" to:\" + getTo() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jskimdev"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jskimdev"},"content":" private String task;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jskimdev"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jskimdev"},"content":" private String icon;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jskimdev"},"content":" private String to;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jskimdev"},"content":" private String from;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jskimdev"},"content":" Task(String icon) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jskimdev"},"content":" this.icon \u003d icon;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jskimdev"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jskimdev"},"content":" public void setTask(String task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jskimdev"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jskimdev"},"content":" public String getTask() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"jskimdev"},"content":" return this.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jskimdev"},"content":" public abstract String toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jskimdev"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jskimdev"},"content":" return this.isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jskimdev"},"content":" public void setStatus(boolean status) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jskimdev"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"jskimdev"},"content":" public String getIcon() {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"jskimdev"},"content":" return this.icon;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"jskimdev"},"content":" public void setTo(String to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"jskimdev"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"jskimdev"},"content":" public String getTo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"jskimdev"},"content":" return this.to;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"jskimdev"},"content":" public void setFrom(String from) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"jskimdev"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"jskimdev"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"jskimdev"},"content":" public String getFrom() {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"jskimdev"},"content":" return this.from;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"jskimdev"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"jskimdev"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jskimdev":68}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jskimdev"},"content":"todo read book","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"jskimdev":1}}] diff --git a/jskimdev_ip_master/commits.json b/jskimdev_ip_master/commits.json index 477cfdc7..2e152f12 100644 --- a/jskimdev_ip_master/commits.json +++ b/jskimdev_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jskimdev":[{"date":"2024-01-28","commitResults":[{"hash":"4af29bc6063da578f1831e525633b588b44da5df","isMergeCommit":false,"messageTitle":"Rename Chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"97997f38bbb281f83be858d4d04f8e7be9d34e22","isMergeCommit":false,"messageTitle":"Echo user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"e1eab9592939e0154ce6226e039edef0aaa63f0a","isMergeCommit":false,"messageTitle":"Store message","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":1}}},{"hash":"55f2fe37180fd2635f6f9a07e7c51e8220f7dfdc","isMergeCommit":false,"messageTitle":"Include status to task","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":28}}}]},{"date":"2024-01-29","commitResults":[{"hash":"6cdd8b1440c63b493e30f9e9eddda6f700bcd328","isMergeCommit":false,"messageTitle":"Add types to task","messageBody":"","tags":["Level-4","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":16}}}]},{"date":"2024-01-30","commitResults":[{"hash":"9b8151e766a964d142400887986b116597a6f32c","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":63}}},{"hash":"32e65e6330858990d7aa9691afbef49425a6a825","isMergeCommit":false,"messageTitle":"Add delete task feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"jskimdev":{"java":214,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"jskimdev":4206.854},"authorDisplayNameMap":{"jskimdev":"CS2103T-T14-2 KIM ..NSEO"}} +{"authorDailyContributionsMap":{"jskimdev":[{"date":"2024-01-28","commitResults":[{"hash":"4af29bc6063da578f1831e525633b588b44da5df","isMergeCommit":false,"messageTitle":"Rename Chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"97997f38bbb281f83be858d4d04f8e7be9d34e22","isMergeCommit":false,"messageTitle":"Echo user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"e1eab9592939e0154ce6226e039edef0aaa63f0a","isMergeCommit":false,"messageTitle":"Store message","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":1}}},{"hash":"55f2fe37180fd2635f6f9a07e7c51e8220f7dfdc","isMergeCommit":false,"messageTitle":"Include status to task","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":28}}}]},{"date":"2024-01-29","commitResults":[{"hash":"6cdd8b1440c63b493e30f9e9eddda6f700bcd328","isMergeCommit":false,"messageTitle":"Add types to task","messageBody":"","tags":["Level-4","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":16}}}]},{"date":"2024-01-30","commitResults":[{"hash":"9b8151e766a964d142400887986b116597a6f32c","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":63}}},{"hash":"32e65e6330858990d7aa9691afbef49425a6a825","isMergeCommit":false,"messageTitle":"Add delete task feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"0475ab234e90e6555dd3fe1f864de34e7ae531ed","isMergeCommit":false,"messageTitle":"Automate Text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"jskimdev":{"java":214,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":1}},"authorContributionVariance":{"jskimdev":4232.722},"authorDisplayNameMap":{"jskimdev":"CS2103T-T14-2 KIM ..NSEO"}} diff --git a/julia-cp_ip_master/authorship.json b/julia-cp_ip_master/authorship.json index fe51488c..0d19556f 100644 --- a/julia-cp_ip_master/authorship.json +++ b/julia-cp_ip_master/authorship.json @@ -1 +1 @@ -[] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"julia-cp"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"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":"julia-cp"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"julia-cp"},"content":" String[] list \u003d new String[100];","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"julia-cp"},"content":" int count \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"julia-cp"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"julia-cp"},"content":" System.out.println(\"Hello! I\u0027m Blob.\\nWhat can I do for you?\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"julia-cp"},"content":" String message \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"julia-cp"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"julia-cp"},"content":" while (!message.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"julia-cp"},"content":" if (message.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"julia-cp"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"julia-cp"},"content":" System.out.println(list[i] + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"julia-cp"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"julia-cp"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"julia-cp"},"content":" list[count] \u003d (count + 1) + \". \" + message;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"julia-cp"},"content":" count++;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"julia-cp"},"content":" System.out.println(\"added: \" + message + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"julia-cp"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"julia-cp"},"content":" message \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"julia-cp"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"julia-cp"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"julia-cp"},"content":" System.out.println(\"Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"julia-cp":22,"-":4}}] diff --git a/julia-cp_ip_master/commits.json b/julia-cp_ip_master/commits.json index 28fe72e2..b804fb82 100644 --- a/julia-cp_ip_master/commits.json +++ b/julia-cp_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"julia-cp":[]},"authorFileTypeContributionMap":{"julia-cp":{"java":0,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"julia-cp":0.0},"authorDisplayNameMap":{"julia-cp":"CS2103T-F12-4 JULI..URBA"}} +{"authorDailyContributionsMap":{"julia-cp":[{"date":"2024-01-30","commitResults":[{"hash":"e3e2ac4ba1093652e4dbdca82b8e415ef8ff0687","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"d887e493c16e62878e3fcf687d71c5595e9f36a5","isMergeCommit":false,"messageTitle":"echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"29f0fb423d410bc4075f1fc90dc557f67b5d61e8","isMergeCommit":false,"messageTitle":"add, list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"julia-cp":{"java":22,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"julia-cp":78.22222},"authorDisplayNameMap":{"julia-cp":"CS2103T-F12-4 JULI..URBA"}} diff --git a/kervyntan_ip_master/authorship.json b/kervyntan_ip_master/authorship.json index 76055107..fa60acbd 100644 --- a/kervyntan_ip_master/authorship.json +++ b/kervyntan_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":"kervyntan"},"content":" mainClass.set(\"kervyn.Kervyn\")","lastModifiedDate":"2024-01-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":"kervyntan"},"content":" archiveBaseName \u003d \"kervyn\"","lastModifiedDate":"2024-01-29"},{"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,"kervyntan":2}},{"path":"src/main/java/kervyn/Commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"import kervyn.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" public ByeCommand(TaskList taskList, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" super(\"Bye\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" for (Task userRequest : this.taskList.getTaskList()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" String content \u003d userRequest.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" storage.writeToFile(content);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":21}},{"path":"src/main/java/kervyn/Commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"public class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" private String keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" protected TaskList taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" public Command(String keyword, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" public void taskAdded() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tUnderstood. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" public String convertDate(String inputDateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(inputDateTime, inputFormatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" return dateTime.format(outputFormatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"Invalid date format, please try again with a format that looks like dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {}","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":36}},{"path":"src/main/java/kervyn/Commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" private String userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" public DeadlineCommand(TaskList taskList, String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" super(\"Deadline\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" private Deadline getProcessedDeadline(String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" // Input Format: deadline return book /by Sunday","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" // Output Format: [D][ ] return book (by: Sunday)","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" String[] deadlineProcessedInput \u003d userInput.split(\"/\");","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" if (Objects.equals(deadlineProcessedInput[1], \"\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tThe deadline of a Deadline task cannot be empty. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" String[] deadlineDescriptionArray \u003d deadlineProcessedInput[0].split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" StringBuilder deadlineDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" for (int i \u003d 1; i \u003c deadlineDescriptionArray.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" deadlineDescription.append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" deadlineDescription.append(deadlineDescriptionArray[i]);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" String[] deadlineTimeArray \u003d userInput.split(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" // No longer a String","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" String convertedDeadline \u003d convertDate(deadlineTimeArray[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(convertedDeadline, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" taskAdded();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" return new Deadline(deadlineDescription.toString(), false, deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" catch (ArrayIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tPlease provide the deadline in the required format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" private void deadlineTaskTextDisplay(Deadline deadline, ArrayList\u003cTask\u003e userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + deadline.getCapitalType() + \"]\" + \"[ ]\" + deadline.getDescription() + \" (by: \" + deadline.getDeadline() + \")\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tNow you have \" + userTasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"kervyntan"},"content":" Deadline newDeadline \u003d getProcessedDeadline(this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"kervyntan"},"content":" if (newDeadline !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"kervyntan"},"content":" this.taskList.addTask(newDeadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"kervyntan"},"content":" deadlineTaskTextDisplay(newDeadline, this.taskList.getTaskList());","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":68}},{"path":"src/main/java/kervyn/Commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" private String[] userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" public DeleteCommand(TaskList taskList, String[] userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" super(\"Delete\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" taskList.removeTask(taskList.getTaskList(), this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":16}},{"path":"src/main/java/kervyn/Commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" private String userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" public EventCommand(TaskList taskList, String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" super(\"Event\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" private Event getProcessedEvent(String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" // Input Format: event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" // Output Format: [E][ ] project meeting (from: Mon 2pm to: 4pm)","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" String[] eventProcessedInput \u003d userInput.split(\"/\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" if (Objects.equals(eventProcessedInput[1], \"\") || Objects.equals(eventProcessedInput[2], \"\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tThe description/startDate/endDate for an event cannot be empty. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" String[] eventDescriptionArray \u003d eventProcessedInput[0].split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" String[] eventDateArray \u003d userInput.split(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" String eventStartDateStr \u003d eventDateArray[1].split(\"/to\")[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" String eventEndDateStr \u003d eventDateArray[1].split(\"/to\")[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" StringBuilder eventDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" for (int i \u003d 1; i \u003c eventDescriptionArray.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" eventDescription.append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" eventDescription.append(eventDescriptionArray[i]);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" String convertedStartDate \u003d convertDate(eventStartDateStr);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" String convertedEndDate \u003d convertDate(eventEndDateStr);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" // No longer String dates","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" LocalDateTime startDate \u003d LocalDateTime.parse(convertedStartDate, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" LocalDateTime endDate \u003d LocalDateTime.parse(convertedEndDate, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" taskAdded();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" return new Event(eventDescription.toString(), false, startDate, endDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" } catch (ArrayIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tPlease provide the start date / end date in the required format that looks like dd-MM-yyyy HHmm.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" private void eventTaskTextDisplay(Event event, ArrayList\u003cTask\u003e userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + event.getCapitalType() + \"]\" + \"[ ]\" + event.getDescription() + \" (from: \" + event.getStartDate() + \" to: \" + event.getEndDate() + \")\");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tNow you have \" + userTasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":" Event newEvent \u003d getProcessedEvent(this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" if (newEvent !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":" this.taskList.addTask(newEvent);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"kervyntan"},"content":" eventTaskTextDisplay(newEvent, this.taskList.getTaskList());","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":65}},{"path":"src/main/java/kervyn/Commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" public ListCommand(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" super(\"List\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" taskList.listTasks(taskList.getTaskList());","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":14}},{"path":"src/main/java/kervyn/Commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" private String[] userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" public MarkCommand(TaskList taskList, String[] userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" super(\"Mark\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" taskList.markTask(taskList.getTaskList(), this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":16}},{"path":"src/main/java/kervyn/Commands/ToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"public class ToDoCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" private String userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" public ToDoCommand(TaskList taskList, String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" super(\"ToDo\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" private ToDo getProcessedToDo(String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" String[] toDoDescriptionArray \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" if (Objects.equals(toDoDescriptionArray[1], \"\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tThe description of a todo cannot be empty. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" StringBuilder toDoDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" for (int i \u003d 1; i \u003c toDoDescriptionArray.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" toDoDescription.append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" toDoDescription.append(toDoDescriptionArray[i]);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" taskAdded();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" return new ToDo(toDoDescription.toString(), false);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tPlease provide the ToDo task in the required format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" private void toDoTaskTextDisplay(ToDo toDo, ArrayList\u003cTask\u003e userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + toDo.getCapitalType() + \"]\" + \"[ ]\" + toDo.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tNow you have \" + userTasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" ToDo newToDo \u003d getProcessedToDo(this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" if (newToDo !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" this.taskList.addTask(newToDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" toDoTaskTextDisplay(newToDo, this.taskList.getTaskList());","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":55}},{"path":"src/main/java/kervyn/Commands/UnMarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"public class UnMarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" private String[] userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" public UnMarkCommand(TaskList taskList, String[] userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" super(\"UnMark\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" taskList.unMarkTask(taskList.getTaskList(), this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":16}},{"path":"src/main/java/kervyn/Kervyn.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"import kervyn.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"public class Kervyn {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" public Kervyn(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" taskList \u003d new TaskList(storage.readTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" public void run() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" ui.startChatBot(this.taskList, this.storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" new Kervyn(\"data/tasks.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":29}},{"path":"src/main/java/kervyn/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Commands.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" public Parser(Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" public void deduceCommand(String userInput, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" String[] processedUserInput \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" switch (processedUserInput[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" new ByeCommand(taskList, this.storage).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" new ListCommand(taskList).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" new MarkCommand(taskList, processedUserInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" new UnMarkCommand(taskList, processedUserInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" new DeleteCommand(taskList, processedUserInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" new ToDoCommand(taskList, userInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" new DeadlineCommand(taskList, userInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" new EventCommand(taskList, userInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t I\u0027m not sure what that means. Please specify the type of task eg. todo, deadline or event to create a task.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":44}},{"path":"src/main/java/kervyn/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"import java.nio.charset.StandardCharsets;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" private String path;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" public Storage(String path) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" public void writeToFile(String content) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" String[] dirName \u003d this.path.split(\"/\");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" File dir \u003d new File(dirName[0]);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" if (!dir.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" dir.mkdir();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" File file \u003d new File(this.path);","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" // Check for existence of file is inherent in this","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" FileWriter fw \u003d new FileWriter(file.getAbsoluteFile(), true);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" BufferedWriter bw \u003d new BufferedWriter(fw);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" bw.write(content + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" bw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"Uh oh, the file/directory doesn\u0027t seem to exist. No worries, one will be created for you at the end of your conversation!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" public ArrayList\u003cTask\u003e readTasks() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" ArrayList\u003cTask\u003e userRequests \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" ArrayList\u003cString\u003e lines \u003d (ArrayList\u003cString\u003e) Files.readAllLines(Paths.get(this.path), StandardCharsets.UTF_8);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy, ha\");","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":" char[] lineToCharArr \u003d line.toCharArray();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":" char type \u003d lineToCharArr[1];","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" String description \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":" // Finding content for the description","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"kervyntan"},"content":" String[] splitContent \u003d line.split(\"]\");","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"kervyntan"},"content":" switch (type) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"kervyntan"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"kervyntan"},"content":" description \u003d splitContent[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"kervyntan"},"content":" ToDo newToDo \u003d new ToDo(description, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"kervyntan"},"content":" userRequests.add(newToDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"kervyntan"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"kervyntan"},"content":" // Further split the last part","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"kervyntan"},"content":" String[] furtherSplitContent \u003d splitContent[2].split(\"\\\\(\");","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"kervyntan"},"content":" String[] finalSplitContent \u003d furtherSplitContent[1].split(\":\");","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"kervyntan"},"content":" String temp \u003d finalSplitContent[1];","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"kervyntan"},"content":" String deadlineStr \u003d temp.substring(0, temp.length() - 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"kervyntan"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(deadlineStr, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"kervyntan"},"content":" description \u003d furtherSplitContent[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"kervyntan"},"content":" Deadline newDeadline \u003d new Deadline(description, false, deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"kervyntan"},"content":" userRequests.add(newDeadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"kervyntan"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"kervyntan"},"content":" furtherSplitContent \u003d splitContent[2].split(\"\\\\(\");","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"kervyntan"},"content":" description \u003d furtherSplitContent[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"kervyntan"},"content":" String[] splitAtTo \u003d furtherSplitContent[1].split(\"to:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"kervyntan"},"content":" String[] splitAtFrom \u003d splitAtTo[0].split(\"from:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"kervyntan"},"content":" String startDateStr \u003d splitAtFrom[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"kervyntan"},"content":" temp \u003d splitAtTo[1];","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"kervyntan"},"content":" String endDateStr \u003d temp.substring(0, temp.length() - 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"kervyntan"},"content":" LocalDateTime startDate \u003d LocalDateTime.parse(startDateStr, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"kervyntan"},"content":" LocalDateTime endDate \u003d LocalDateTime.parse(endDateStr, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"kervyntan"},"content":" Event newEvent \u003d new Event(description, false, startDate, endDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"kervyntan"},"content":" userRequests.add(newEvent);","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"kervyntan"},"content":" catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"Uh oh, the file/directory doesn\u0027t seem to exist. No worries, one will be created for you at the end of your conversation!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"kervyntan"},"content":" return userRequests;","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"kervyntan":106}},{"path":"src/main/java/kervyn/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" public Deadline(String description, boolean status, LocalDateTime deadline) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" super(description, status, Type.DEADLINE);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" public String getDeadline() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" String formattedDeadline \u003d this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, ha\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" return formattedDeadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":18}},{"path":"src/main/java/kervyn/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" public Event(String description, boolean status, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" super(description, status, Type.EVENT);","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" public String getStartDate() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" String formattedStartDate \u003d this.startDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, ha\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" return formattedStartDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" public String getEndDate() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" String formattedEndDate \u003d this.endDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, ha\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" return formattedEndDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":25}},{"path":"src/main/java/kervyn/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":" private String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":" private boolean status;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" private Type type;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" public Task(String description, boolean status, Type type) {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" this.status \u003d status;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" return this.status;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" public Type getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" return this.type;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" public char getCapitalType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" switch(this.type) {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" case TODO:","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" return \u0027T\u0027;","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" return \u0027D\u0027;","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" case EVENT:","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" return \u0027E\u0027;","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" return \u0027 \u0027;","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" public void updateStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" this.status \u003d !this.status;","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" char check \u003d this.getStatus() ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" char letterType \u003d this.getCapitalType();","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" switch (letterType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" return \"[\" + letterType + \"] \" + \"[\" + check + \"] \" + this.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" Deadline deadlineTask \u003d (Deadline) this;","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" return \"[\" + letterType + \"] \" + \"[\" + check + \"] \" + deadlineTask.getDescription() + \" (by: \" + deadlineTask.getDeadline() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" Event eventTask \u003d (Event) this;","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" return \"[\" + letterType + \"] \" + \"[\" + check + \"] \" + eventTask.getDescription() + \" (from: \" + eventTask.getStartDate() + \" to: \" + eventTask.getEndDate() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" return \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":58}},{"path":"src/main/java/kervyn/Tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" // Contains task-related operations","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" public TaskList (ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" return this.taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" // List tasks","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" public void listTasks(ArrayList\u003cTask\u003e userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tHere are the tasks on your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" for (int i \u003d 0; i \u003c userTasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" Task task \u003d userTasks.get(i);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" char check \u003d task.getStatus() ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" char type \u003d task.getCapitalType();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" switch (type) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + \"[\" + type + \"] \" + \"[\" + check + \"] \" + task.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" Deadline deadlineTask \u003d (Deadline) task;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + \"[\" + type + \"] \" + \"[\" + check + \"] \" + deadlineTask.getDescription() + \" (by: \" + deadlineTask.getDeadline() + \")\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + \"[\" + type + \"] \" + \"[\" + check + \"] \" + eventTask.getDescription() + \" (from: \" + eventTask.getStartDate() + \" to: \" + eventTask.getEndDate() + \")\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" // mark task","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" public void markTask(ArrayList\u003cTask\u003e userTasks, String[] processedUserInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" Task task \u003d userTasks.get(Integer.parseInt(processedUserInput[1]) - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" if (task.getStatus()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" taskAlreadyMarked();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" task.updateStatus();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" char check \u003d task.getStatus() ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":" char type \u003d task.getCapitalType();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + type + \"] \" + \"[\" + check + \"] \" + task.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"kervyntan"},"content":" catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"kervyntan"},"content":" // Need to account for trying to mark a task that doesn\u0027t exist","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tTask number provided doesn\u0027t exist. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"kervyntan"},"content":" // Unmark task","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"kervyntan"},"content":" public void unMarkTask(ArrayList\u003cTask\u003e userTasks, String[] processedUserInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"kervyntan"},"content":" Task task \u003d userTasks.get(Integer.parseInt(processedUserInput[1]) - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"kervyntan"},"content":" if (!task.getStatus()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"kervyntan"},"content":" taskAlreadyUnMarked();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"kervyntan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tOK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"kervyntan"},"content":" task.updateStatus();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"kervyntan"},"content":" char check \u003d task.getStatus() ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"kervyntan"},"content":" char type \u003d task.getCapitalType();","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + type + \"] \" + \"[\" + check + \"] \" + task.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"kervyntan"},"content":" catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"kervyntan"},"content":" // Need to account for trying to unmark a task that doesn\u0027t exist","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tTask number provided doesn\u0027t exist. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"kervyntan"},"content":" private static void taskAlreadyMarked() {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tUh oh! It looks like this task is already marked as done, please try again with another task!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"kervyntan"},"content":" private static void taskAlreadyUnMarked() {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tUh oh! It looks like this task is already marked as not done, please try again with another task!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"kervyntan"},"content":" // Delete task","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"kervyntan"},"content":" public void removeTask(ArrayList\u003cTask\u003e userTasks, String[] processedUserInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"kervyntan"},"content":" Task task \u003d userTasks.get(Integer.parseInt(processedUserInput[1]) - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tOK, I\u0027ve removed this task as per your request:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"kervyntan"},"content":" char check \u003d task.getStatus() ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"kervyntan"},"content":" char type \u003d task.getCapitalType();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + type + \"] \" + \"[\" + check + \"] \" + task.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"kervyntan"},"content":" userTasks.remove(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"kervyntan"},"content":" catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"kervyntan"},"content":" // Need to account for trying to delete a task that doesn\u0027t exist","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tTask number provided doesn\u0027t exist. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":111}},{"path":"src/main/java/kervyn/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":" public ToDo(String description, boolean status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":" super(description, status, Type.TODO);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":6}},{"path":"src/main/java/kervyn/Tasks/Type.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"public enum Type {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":" TODO,","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":" DEADLINE,","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" EVENT","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":7}},{"path":"src/main/java/kervyn/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" private final String CHATBOTNAME \u003d \"Kervyn\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" public Ui() {}","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" public void startChatBot(TaskList taskList, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" Parser parser \u003d new Parser(storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tHello! I\u0027m \" + this.CHATBOTNAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" String userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" do {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" parser.deduceCommand(userInput, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" } while (!Objects.equals(userInput, \"bye\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"unmark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"byer","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"kervyntan":12}},{"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":"kervyntan"},"content":"java -classpath ../bin Kervyn \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"kervyntan":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":"kervyntan"},"content":" mainClass.set(\"kervyn.Kervyn\")","lastModifiedDate":"2024-01-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":"kervyntan"},"content":" archiveBaseName \u003d \"kervyn\"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" archiveFileName \u003d \"kervyn.jar\"","lastModifiedDate":"2024-01-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":{"-":40,"kervyntan":3}},{"path":"src/main/java/kervyn/Commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"import kervyn.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" * Represents the \"Bye\" command in the application. This command is used to exit the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" * Constructs a ByeCommand with the specified TaskList and Storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" * @param taskList The TaskList associated with this command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" * @param storage The Storage object used for saving tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" public ByeCommand(TaskList taskList, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" super(\"Bye\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" * Executes the \"Bye\" command.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" * This method outputs a farewell message, saves the current tasks to storage, and prepares for application exit.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" StringBuilder content \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" for (Task userRequest : this.taskList.getTaskList()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" content.append(userRequest.toString()).append(\"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" storage.writeToFile(content.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":38}},{"path":"src/main/java/kervyn/Commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" * Represents a generic command in the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" * This class is designed to be extended by specific command types.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"public class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" private String keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" protected TaskList taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" * Constructs a Command object with a specific keyword and associated TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" * @param keyword The keyword that triggers this command.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" * @param taskList The TaskList associated with this command.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" public Command(String keyword, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" * Displays a message indicating that a task has been added.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" public void taskAdded() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tUnderstood. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" * Converts a date string from the format \"dd-MM-yyyy HHmm\" to \"yyyy-MM-dd HHmm\".","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" * @param inputDateTime The date string to be converted.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" * @return The converted date string or null if the input format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" public String convertDate(String inputDateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(inputDateTime, inputFormatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" return dateTime.format(outputFormatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"Invalid date format, please try again with a format that looks like dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" * Executes the command. This method is intended to be overridden by subclasses.","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {}","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":58}},{"path":"src/main/java/kervyn/Commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" * Represents the \"Deadline\" command in the application, used to create and add a Deadline task to the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" private String userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" * Constructs a DeadlineCommand with the specified TaskList and user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" * @param taskList The TaskList associated with this command.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" * @param userInput The user input string containing the deadline details.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" public DeadlineCommand(TaskList taskList, String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" super(\"Deadline\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" * Processes the user input and creates a Deadline task.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" * The method parses the input, converts the date, and constructs a Deadline object.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" * @param userInput The user input string to process.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" * @return A Deadline object, or null if the input format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" private Deadline getProcessedDeadline(String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" // Input Format: deadline return book /by Sunday","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" // Output Format: [D][ ] return book (by: Sunday)","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" String[] deadlineProcessedInput \u003d userInput.split(\"/\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" if (Objects.equals(deadlineProcessedInput[1], \"\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tThe deadline of a Deadline task cannot be empty. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" String[] deadlineDescriptionArray \u003d deadlineProcessedInput[0].split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" StringBuilder deadlineDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" for (int i \u003d 1; i \u003c deadlineDescriptionArray.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" deadlineDescription.append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" deadlineDescription.append(deadlineDescriptionArray[i]);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" String[] deadlineTimeArray \u003d userInput.split(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" // No longer a String","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" String convertedDeadline \u003d convertDate(deadlineTimeArray[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(convertedDeadline, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"kervyntan"},"content":" taskAdded();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"kervyntan"},"content":" return new Deadline(deadlineDescription.toString(), false, deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"kervyntan"},"content":" catch (ArrayIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tPlease provide the deadline in the required format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kervyntan"},"content":" * Displays information about the newly added Deadline task.","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"kervyntan"},"content":" * @param deadline The Deadline task that was added.","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"kervyntan"},"content":" * @param userTasks The current list of tasks, including the newly added deadline task.","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"kervyntan"},"content":" private void deadlineTaskTextDisplay(Deadline deadline, ArrayList\u003cTask\u003e userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + deadline.getCapitalType() + \"]\" + \"[ ]\" + deadline.getDescription() + \" (by: \" + deadline.getDeadline() + \")\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tNow you have \" + userTasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"kervyntan"},"content":" * Executes the \"Deadline\" command.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"kervyntan"},"content":" * This method processes the user input, creates a new Deadline task, adds it to the task list, and displays a confirmation message.","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"kervyntan"},"content":" Deadline newDeadline \u003d getProcessedDeadline(this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"kervyntan"},"content":" if (newDeadline !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"kervyntan"},"content":" this.taskList.addTask(newDeadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"kervyntan"},"content":" deadlineTaskTextDisplay(newDeadline, this.taskList.getTaskList());","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":95}},{"path":"src/main/java/kervyn/Commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" * Represents the \"Delete\" command in the application, used to delete a task from the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" private String[] userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" * Constructs a DeleteCommand with the specified TaskList and user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" * @param taskList The TaskList associated with this command.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" * @param userInput The user input array containing details for the deletion command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" public DeleteCommand(TaskList taskList, String[] userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" super(\"Delete\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" * Executes the \"Delete\" command.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" * This method removes a task from the task list based on the index provided in the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" taskList.removeTask(taskList.getTaskList(), this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":30}},{"path":"src/main/java/kervyn/Commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" * Represents the \"Event\" command in the application, used to create and add an Event task to the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" private String userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" * Constructs an EventCommand with the specified TaskList and user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" * @param taskList The TaskList associated with this command.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" * @param userInput The user input string containing the event details.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" public EventCommand(TaskList taskList, String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" super(\"Event\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" * Processes the user input and creates an Event task.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" * The method parses the input, converts the start and end dates, and constructs an Event object.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" * @param userInput The user input string to process.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" * @return An Event object, or null if the input format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" private Event getProcessedEvent(String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" // Input Format: event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" // Output Format: [E][ ] project meeting (from: Mon 2pm to: 4pm)","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" String[] eventProcessedInput \u003d userInput.split(\"/\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" if (Objects.equals(eventProcessedInput[1], \"\") || Objects.equals(eventProcessedInput[2], \"\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tThe description/startDate/endDate for an event cannot be empty. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" String[] eventDescriptionArray \u003d eventProcessedInput[0].split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" String[] eventDateArray \u003d userInput.split(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" String eventStartDateStr \u003d eventDateArray[1].split(\"/to\")[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" String eventEndDateStr \u003d eventDateArray[1].split(\"/to\")[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" StringBuilder eventDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" for (int i \u003d 1; i \u003c eventDescriptionArray.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" eventDescription.append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" eventDescription.append(eventDescriptionArray[i]);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" String convertedStartDate \u003d convertDate(eventStartDateStr);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" String convertedEndDate \u003d convertDate(eventEndDateStr);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":" // No longer String dates","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":" LocalDateTime startDate \u003d LocalDateTime.parse(convertedStartDate, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" LocalDateTime endDate \u003d LocalDateTime.parse(convertedEndDate, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"kervyntan"},"content":" taskAdded();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"kervyntan"},"content":" return new Event(eventDescription.toString(), false, startDate, endDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"kervyntan"},"content":" } catch (ArrayIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tPlease provide the start date / end date in the required format that looks like dd-MM-yyyy HHmm.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kervyntan"},"content":" * Displays information about the newly added Event task.","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"kervyntan"},"content":" * @param event The Event task that was added.","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"kervyntan"},"content":" * @param userTasks The current list of tasks, including the newly added event task.","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"kervyntan"},"content":" private void eventTaskTextDisplay(Event event, ArrayList\u003cTask\u003e userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + event.getCapitalType() + \"]\" + \"[ ]\" + event.getDescription() + \" (from: \" + event.getStartDate() + \" to: \" + event.getEndDate() + \")\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tNow you have \" + userTasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"kervyntan"},"content":" * Executes the \"Event\" command.","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"kervyntan"},"content":" * This method processes the user input, creates a new Event task, adds it to the task list, and displays a confirmation message.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"kervyntan"},"content":" Event newEvent \u003d getProcessedEvent(this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"kervyntan"},"content":" if (newEvent !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"kervyntan"},"content":" this.taskList.addTask(newEvent);","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"kervyntan"},"content":" eventTaskTextDisplay(newEvent, this.taskList.getTaskList());","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":94}},{"path":"src/main/java/kervyn/Commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" * Represents the \"List\" command in the application, used to list all tasks in the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" * Constructs a ListCommand with the specified TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" * @param taskList The TaskList associated with this command.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" public ListCommand(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" super(\"List\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" * Executes the \"List\" command.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" * This method invokes the listing of all tasks present in the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" taskList.listTasks(taskList.getTaskList());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":27}},{"path":"src/main/java/kervyn/Commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" * Represents the \"Mark\" command in the application, used to mark a task as completed in the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" private String[] userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" * Constructs a MarkCommand with the specified TaskList and user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" * @param taskList The TaskList associated with this command.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" * @param userInput The user input array containing the index of the task to be marked.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" public MarkCommand(TaskList taskList, String[] userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" super(\"Mark\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" * Executes the \"Mark\" command.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" * This method marks a task as completed in the task list based on the index provided in the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" taskList.markTask(taskList.getTaskList(), this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":30}},{"path":"src/main/java/kervyn/Commands/ToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" * Represents the \"ToDo\" command in the application, used to create and add a ToDo task to the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"public class ToDoCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" private String userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" * Constructs a ToDoCommand with the specified TaskList and user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" * @param taskList The TaskList associated with this command.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" * @param userInput The user input string containing the ToDo task details.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" public ToDoCommand(TaskList taskList, String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" super(\"ToDo\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" * Processes the user input and creates a ToDo task.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" * The method parses the input to construct a ToDo object.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" * @param userInput The user input string to process.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" * @return A ToDo object, or null if the input format is invalid.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" private ToDo getProcessedToDo(String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" String[] toDoDescriptionArray \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" if (Objects.equals(toDoDescriptionArray[1], \"\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tThe description of a todo cannot be empty. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" StringBuilder toDoDescription \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" for (int i \u003d 1; i \u003c toDoDescriptionArray.length; i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" toDoDescription.append(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" toDoDescription.append(toDoDescriptionArray[i]);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" taskAdded();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" return new ToDo(toDoDescription.toString(), false);","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tPlease provide the ToDo task in the required format.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" * Displays information about the newly added ToDo task.","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"kervyntan"},"content":" * @param toDo The ToDo task that was added.","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"kervyntan"},"content":" * @param userTasks The current list of tasks, including the newly added ToDo task.","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"kervyntan"},"content":" private void toDoTaskTextDisplay(ToDo toDo, ArrayList\u003cTask\u003e userTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + toDo.getCapitalType() + \"]\" + \"[ ]\" + toDo.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tNow you have \" + userTasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"kervyntan"},"content":" * Executes the \"ToDo\" command.","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kervyntan"},"content":" * This method processes the user input, creates a new ToDo task, adds it to the task list, and displays a confirmation message.","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"kervyntan"},"content":" ToDo newToDo \u003d getProcessedToDo(this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"kervyntan"},"content":" if (newToDo !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"kervyntan"},"content":" this.taskList.addTask(newToDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"kervyntan"},"content":" toDoTaskTextDisplay(newToDo, this.taskList.getTaskList());","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":82}},{"path":"src/main/java/kervyn/Commands/UnMarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" * Represents the \"UnMark\" command in the application, used to mark a task as not completed in the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"public class UnMarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" private String[] userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" * Constructs an UnMarkCommand with the specified TaskList and user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" * @param taskList The TaskList associated with this command.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" * @param userInput The user input array containing the index of the task to be unmarked.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" public UnMarkCommand(TaskList taskList, String[] userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" super(\"UnMark\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" this.userInput \u003d userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" * Executes the \"UnMark\" command.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" * This method marks a task as not completed in the task list based on the index provided in the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" public void executeCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" taskList.unMarkTask(taskList.getTaskList(), this.userInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":30}},{"path":"src/main/java/kervyn/Kervyn.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import kervyn.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" * Main class for the Kervyn application.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" * This class initializes the application and starts the interaction with the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"public class Kervyn {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" * Constructs a new instance of the Kervyn application with the specified file path.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" * @param filePath The path to the file where tasks are stored.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" * @throws RuntimeException If an I/O error occurs when reading tasks from storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" public Kervyn(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" taskList \u003d new TaskList(storage.readTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" * Starts the Kervyn application. Initializes the chatbot interface and begins interaction.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" * @throws IOException If an I/O error occurs during the interaction.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" public void run() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" ui.startChatBot(this.taskList, this.storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" * The entry point for the Kervyn application.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" * @param args Command-line arguments, not used in this application.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" * @throws IOException If an I/O error occurs when starting the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" new Kervyn(\"data/tasks.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":54}},{"path":"src/main/java/kervyn/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Commands.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" * The Parser class is responsible for parsing user input and executing commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" * Constructs a Parser instance using the specified Storage object.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" * @param storage The Storage object that is used to read and write tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" public Parser(Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" * Takes the user\u0027s input, deduces the command to execute, and triggers the command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" * Commands include bye, list, mark, unmark, delete, todo, deadline, and event.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" * If the command is not recognized, an error message is displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" * @param userInput The raw input string from the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" * @param taskList The current list of tasks which may be modified or used by the commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" public void deduceCommand(String userInput, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" String[] processedUserInput \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" switch (processedUserInput[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" new ByeCommand(taskList, this.storage).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" new ListCommand(taskList).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" new MarkCommand(taskList, processedUserInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" new UnMarkCommand(taskList, processedUserInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" new DeleteCommand(taskList, processedUserInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" new ToDoCommand(taskList, userInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" new DeadlineCommand(taskList, userInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" new EventCommand(taskList, userInput).executeCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t I\u0027m not sure what that means. Please specify the type of task eg. todo, deadline or event to create a task.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":61}},{"path":"src/main/java/kervyn/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"import java.nio.charset.StandardCharsets;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" * The Storage class is responsible for handling file operations such as reading from and writing to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" private String path;","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" * Constructs a Storage object associated with the file path provided.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" * @param path The file path where tasks are saved and read from.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" public Storage(String path) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" * Writes the content to the file specified by this.path. If the file or directory does not exist, they will be created.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" * @param content The content to be written to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" * @return Returns 1 if the write operation was successful, 0 otherwise.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" public short writeToFile(String content) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" String[] dirName \u003d this.path.split(\"/\");","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" File dir \u003d new File(dirName[0]);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" if (!dir.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" dir.mkdir();","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" File file \u003d new File(this.path);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" FileWriter fw \u003d new FileWriter(file.getAbsoluteFile(), false);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":"// BufferedWriter bw \u003d new BufferedWriter(fw);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" fw.write(content);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":" return 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":" catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"Uh oh, the file/directory doesn\u0027t seem to exist. No worries, one will be created for you at the end of your conversation!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"kervyntan"},"content":" return 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"kervyntan"},"content":" * Reads tasks from the file specified by this.path and constructs an ArrayList of Task objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"kervyntan"},"content":" * @return Returns an ArrayList of Task objects read from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"kervyntan"},"content":" * @throws IOException If there is an issue reading from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kervyntan"},"content":" public ArrayList\u003cTask\u003e readTasks() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"kervyntan"},"content":" ArrayList\u003cTask\u003e userRequests \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"kervyntan"},"content":" ArrayList\u003cString\u003e lines \u003d (ArrayList\u003cString\u003e) Files.readAllLines(Paths.get(this.path), StandardCharsets.UTF_8);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"kervyntan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy, ha\");","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"kervyntan"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"kervyntan"},"content":" char[] lineToCharArr \u003d line.toCharArray();","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"kervyntan"},"content":" char type \u003d lineToCharArr[1];","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"kervyntan"},"content":" String description \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"kervyntan"},"content":" // Finding content for the description","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"kervyntan"},"content":" String[] splitContent \u003d line.split(\"]\");","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"kervyntan"},"content":" switch (type) {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"kervyntan"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"kervyntan"},"content":" description \u003d splitContent[2].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"kervyntan"},"content":" ToDo newToDo \u003d new ToDo(description, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"kervyntan"},"content":" userRequests.add(newToDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"kervyntan"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"kervyntan"},"content":" // Further split the last part","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"kervyntan"},"content":" String[] furtherSplitContent \u003d splitContent[2].split(\"\\\\(\");","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"kervyntan"},"content":" String[] finalSplitContent \u003d furtherSplitContent[1].split(\":\");","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"kervyntan"},"content":" String temp \u003d finalSplitContent[1];","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"kervyntan"},"content":" String deadlineStr \u003d temp.substring(0, temp.length() - 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"kervyntan"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(deadlineStr, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"kervyntan"},"content":" description \u003d furtherSplitContent[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"kervyntan"},"content":" Deadline newDeadline \u003d new Deadline(description, false, deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"kervyntan"},"content":" userRequests.add(newDeadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"kervyntan"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"kervyntan"},"content":" furtherSplitContent \u003d splitContent[2].split(\"\\\\(\");","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"kervyntan"},"content":" description \u003d furtherSplitContent[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"kervyntan"},"content":" String[] splitAtTo \u003d furtherSplitContent[1].split(\"to:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"kervyntan"},"content":" String[] splitAtFrom \u003d splitAtTo[0].split(\"from:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"kervyntan"},"content":" String startDateStr \u003d splitAtFrom[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"kervyntan"},"content":" temp \u003d splitAtTo[1];","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"kervyntan"},"content":" String endDateStr \u003d temp.substring(0, temp.length() - 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"kervyntan"},"content":" LocalDateTime startDate \u003d LocalDateTime.parse(startDateStr, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"kervyntan"},"content":" LocalDateTime endDate \u003d LocalDateTime.parse(endDateStr, formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"kervyntan"},"content":" Event newEvent \u003d new Event(description, false, startDate, endDate);","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"kervyntan"},"content":" userRequests.add(newEvent);","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"kervyntan"},"content":" catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"Uh oh, the file/directory doesn\u0027t seem to exist. No worries, one will be created for you at the end of your conversation!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"kervyntan"},"content":" return userRequests;","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"kervyntan":127}},{"path":"src/main/java/kervyn/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" * Represents a Deadline task, which is an extension of the Task class with an additional deadline date.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" * Constructs a Deadline task with a description, status, and deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" * @param status The completion status of the deadline task.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" * @param deadline The LocalDateTime representing the deadline of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" public Deadline(String description, boolean status, LocalDateTime deadline) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" super(description, status, Type.DEADLINE);","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" * Gets the formatted deadline of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" * @return A string representing the formatted deadline (e.g., \"Jan 1 2020, 5PM\").","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" public String getDeadline() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" String formattedDeadline \u003d this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, ha\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" return formattedDeadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":33}},{"path":"src/main/java/kervyn/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" * Represents an Event task, which is an extension of the Task class with additional start and end dates.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" * Constructs an Event task with a description, status, start date, and end date.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" * @param description The description of the event task.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" * @param status The completion status of the event task.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" * @param startDate The LocalDateTime representing the start date of the event.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" * @param endDate The LocalDateTime representing the end date of the event.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" public Event(String description, boolean status, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" super(description, status, Type.EVENT);","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" * Gets the formatted start date of the event.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" * @return A string representing the formatted start date (e.g., \"Jan 1 2020, 5PM\").","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" public String getStartDate() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" String formattedStartDate \u003d this.startDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, ha\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" return formattedStartDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" * Gets the formatted end date of the event.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" * @return A string representing the formatted end date (e.g., \"Jan 2 2020, 5PM\").","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" public String getEndDate() {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" String formattedEndDate \u003d this.endDate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, ha\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" return formattedEndDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":46}},{"path":"src/main/java/kervyn/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":" * Represents a task with a description, status, and type.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":" * The type can be TODO, DEADLINE, or EVENT.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" private String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" private boolean status;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" private Type type;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" * Constructs a new Task.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" * @param status The status of the task, where true indicates completed and false indicates not completed.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" * @param type The type of the task, which can be TODO, DEADLINE, or EVENT.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" public Task(String description, boolean status, Type type) {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" this.status \u003d status;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" * @return The description of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" * Gets the status of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" * @return The status of the task, where true indicates completed and false indicates not completed.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" return this.status;","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" * Gets the type of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" * @return The type of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" public Type getType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" return this.type;","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" * Gets the first letter of the task type in uppercase.","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" * @return The first letter of the task type in uppercase.","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" public char getCapitalType() {","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":" switch(this.type) {","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":" case TODO:","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" return \u0027T\u0027;","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"kervyntan"},"content":" return \u0027D\u0027;","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"kervyntan"},"content":" case EVENT:","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"kervyntan"},"content":" return \u0027E\u0027;","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"kervyntan"},"content":" return \u0027 \u0027;","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"kervyntan"},"content":" * Toggles the status of the task between complete and incomplete.","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kervyntan"},"content":" public void updateStatus() {","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"kervyntan"},"content":" this.status \u003d !this.status;","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"kervyntan"},"content":" * Converts the task to a string representation, including type, status, and description.","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"kervyntan"},"content":" * @return A string representation of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"kervyntan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"kervyntan"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"kervyntan"},"content":" char check \u003d this.getStatus() ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"kervyntan"},"content":" char letterType \u003d this.getCapitalType();","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"kervyntan"},"content":" switch (letterType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"kervyntan"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"kervyntan"},"content":" return \"[\" + letterType + \"] \" + \"[\" + check + \"] \" + this.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"kervyntan"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"kervyntan"},"content":" Deadline deadlineTask \u003d (Deadline) this;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"kervyntan"},"content":" return \"[\" + letterType + \"] \" + \"[\" + check + \"] \" + deadlineTask.getDescription() + \" (by: \" + deadlineTask.getDeadline() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"kervyntan"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"kervyntan"},"content":" Event eventTask \u003d (Event) this;","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"kervyntan"},"content":" return \"[\" + letterType + \"] \" + \"[\" + check + \"] \" + eventTask.getDescription() + \" (from: \" + eventTask.getStartDate() + \" to: \" + eventTask.getEndDate() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"kervyntan"},"content":" return \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":97}},{"path":"src/main/java/kervyn/Tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":" * Represents a list of tasks and provides operations for managing tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" // Contains task-related operations","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" * Constructs a TaskList with an existing list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" * @param taskList The ArrayList of Task objects to initialize the TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" public TaskList (ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" * Gets the list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" * @return The ArrayList of Task objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" return this.taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"kervyntan"},"content":" * @param task The Task object to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"kervyntan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"kervyntan"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"kervyntan"},"content":" * Lists all tasks in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"kervyntan"},"content":" * @param userTasks The ArrayList of Task objects to be listed.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"kervyntan"},"content":" * @return Returns 1 if the list operation was successful, 0 otherwise.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"kervyntan"},"content":" public short listTasks(ArrayList\u003cTask\u003e userTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tHere are the tasks on your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"kervyntan"},"content":" for (int i \u003d 0; i \u003c userTasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"kervyntan"},"content":" Task task \u003d userTasks.get(i);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"kervyntan"},"content":" char check \u003d task.getStatus() ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"kervyntan"},"content":" char type \u003d task.getCapitalType();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"kervyntan"},"content":" switch (type) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"kervyntan"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + \"[\" + type + \"] \" + \"[\" + check + \"] \" + task.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"kervyntan"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"kervyntan"},"content":" Deadline deadlineTask \u003d (Deadline) task;","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"kervyntan"},"content":" if (deadlineTask \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"kervyntan"},"content":" return 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + \"[\" + type + \"] \" + \"[\" + check + \"] \" + deadlineTask.getDescription() + \" (by: \" + deadlineTask.getDeadline() + \")\");","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"kervyntan"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"kervyntan"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"kervyntan"},"content":" if (eventTask \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"kervyntan"},"content":" return 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t\" + (i + 1) + \".\" + \"[\" + type + \"] \" + \"[\" + check + \"] \" + eventTask.getDescription() + \" (from: \" + eventTask.getStartDate() + \" to: \" + eventTask.getEndDate() + \")\");","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"kervyntan"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"kervyntan"},"content":" return 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"kervyntan"},"content":" * Marks a task as completed in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"kervyntan"},"content":" * @param userTasks The ArrayList of Task objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"kervyntan"},"content":" * @param processedUserInput The user input processed into an array of Strings.","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"kervyntan"},"content":" * @return Returns 1 if the mark operation was successful, 0 otherwise.","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"kervyntan"},"content":" public short markTask(ArrayList\u003cTask\u003e userTasks, String[] processedUserInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"kervyntan"},"content":" Task task \u003d userTasks.get(Integer.parseInt(processedUserInput[1]) - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"kervyntan"},"content":" if (task.getStatus()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"kervyntan"},"content":" taskAlreadyMarked();","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"kervyntan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tNice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"kervyntan"},"content":" task.updateStatus();","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"kervyntan"},"content":" char check \u003d task.getStatus() ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"kervyntan"},"content":" char type \u003d task.getCapitalType();","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + type + \"] \" + \"[\" + check + \"] \" + task.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"kervyntan"},"content":" return 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"kervyntan"},"content":" catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"kervyntan"},"content":" // Need to account for trying to mark a task that doesn\u0027t exist","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tTask number provided doesn\u0027t exist. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"kervyntan"},"content":" return 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"kervyntan"},"content":" * Unmarks a task as not completed in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"kervyntan"},"content":" * @param userTasks The ArrayList of Task objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"kervyntan"},"content":" * @param processedUserInput The user input processed into an array of Strings.","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"kervyntan"},"content":" * @return Returns 1 if the unmark operation was successful, 0 otherwise.","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"kervyntan"},"content":" public short unMarkTask(ArrayList\u003cTask\u003e userTasks, String[] processedUserInput) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"kervyntan"},"content":" Task task \u003d userTasks.get(Integer.parseInt(processedUserInput[1]) - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"kervyntan"},"content":" if (!task.getStatus()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"kervyntan"},"content":" taskAlreadyUnMarked();","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"kervyntan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tOK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"kervyntan"},"content":" task.updateStatus();","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"kervyntan"},"content":" char check \u003d task.getStatus() ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"kervyntan"},"content":" char type \u003d task.getCapitalType();","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + type + \"] \" + \"[\" + check + \"] \" + task.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"kervyntan"},"content":" return 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"kervyntan"},"content":" catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"kervyntan"},"content":" // Need to account for trying to unmark a task that doesn\u0027t exist","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tTask number provided doesn\u0027t exist. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"kervyntan"},"content":" return 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"kervyntan"},"content":" * Private method to handle the scenario when a task is already marked.","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"kervyntan"},"content":" private static void taskAlreadyMarked() {","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tUh oh! It looks like this task is already marked as done, please try again with another task!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"kervyntan"},"content":" * Private method to handle the scenario when a task is already unmarked.","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"kervyntan"},"content":" private static void taskAlreadyUnMarked() {","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tUh oh! It looks like this task is already marked as not done, please try again with another task!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"kervyntan"},"content":" * Removes a task from the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"kervyntan"},"content":" * @param userTasks The ArrayList of Task objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"kervyntan"},"content":" * @param processedUserInput The user input processed into an array of Strings.","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"kervyntan"},"content":" public void removeTask(ArrayList\u003cTask\u003e userTasks, String[] processedUserInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"kervyntan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"kervyntan"},"content":" Task task \u003d userTasks.get(Integer.parseInt(processedUserInput[1]) - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tOK, I\u0027ve removed this task as per your request:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"kervyntan"},"content":" char check \u003d task.getStatus() ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"kervyntan"},"content":" char type \u003d task.getCapitalType();","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\t[\" + type + \"] \" + \"[\" + check + \"] \" + task.getDescription());","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"kervyntan"},"content":" userTasks.remove(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"kervyntan"},"content":" catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"kervyntan"},"content":" // Need to account for trying to delete a task that doesn\u0027t exist","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tTask number provided doesn\u0027t exist. Please try again.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":175}},{"path":"src/main/java/kervyn/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":" * Represents a ToDo task, which is a specific type of Task without additional date information.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" * Constructs a ToDo task with a description and status.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" * @param status The completion status of the to-do task.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" public ToDo(String description, boolean status) {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" super(description, status, Type.TODO);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":17}},{"path":"src/main/java/kervyn/Tasks/Type.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":" * Enumerates the different types of tasks available in the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":" * Includes TODO, DEADLINE, and EVENT as the possible types.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"public enum Type {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":" /** Represents a ToDo type task. */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" TODO,","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" /** Represents a Deadline type task with a specific due date. */","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" DEADLINE,","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" /** Represents an Event type task with a start and end date. */","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" EVENT","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kervyntan":16}},{"path":"src/main/java/kervyn/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":" * The Ui class is responsible for handling user interactions.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":" * It captures user input and displays output from the chatbot.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" private final String CHATBOTNAME \u003d \"Kervyn\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" * Constructs a Ui instance.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" public Ui() {}","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" * Starts the chatbot interaction loop. It takes user input, processes it using the Parser,","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" * and continues until the user inputs \u0027bye\u0027.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" * @param taskList The TaskList object containing the list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":" * @param storage The Storage object used for reading and writing tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" public void startChatBot(TaskList taskList, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" Parser parser \u003d new Parser(storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tHello! I\u0027m \" + this.CHATBOTNAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":" String userInput;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" do {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" parser.deduceCommand(userInput, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" } while (!Objects.equals(userInput, \"bye\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"kervyntan":40}},{"path":"src/test/java/kervyn/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":" ArrayList\u003cTask\u003e userTasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" ToDo todo \u003d new ToDo(\"This is for a test case.\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" ToDo todo2 \u003d new ToDo(\"This is for a test case again.\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" String[] markTaskUserInput \u003d \"mark 1\".split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" String[] unMarkTaskUserInput \u003d \"unmark 1\".split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" TaskList tasklist \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" public void parseCommand_caseList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":" tasklist.addTask(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":" tasklist.addTask(todo2);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":" assertEquals(1, tasklist.listTasks(tasklist.getTaskList()));","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":" public void parseCommand_markTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":" tasklist.addTask(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":" tasklist.addTask(todo2);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":" assertEquals(1, tasklist.markTask(tasklist.getTaskList(), markTaskUserInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":" public void parseCommand_unMarkTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kervyntan"},"content":" tasklist.addTask(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kervyntan"},"content":" tasklist.addTask(todo2);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kervyntan"},"content":" assertEquals(1, tasklist.unMarkTask(tasklist.getTaskList(), unMarkTaskUserInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"kervyntan":41}},{"path":"src/test/java/kervyn/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"package kervyn;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"import kervyn.Tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"public class StorageTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":" private ArrayList\u003cTask\u003e testArr \u003d new Storage(\"testData/tasks.txt\").readTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kervyntan"},"content":" public StorageTest() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kervyntan"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kervyntan"},"content":" public void writeToFile_withoutFileExisting() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kervyntan"},"content":" short result \u003d new Storage(\"testData/tasks.txt\").writeToFile(\"[T] [ ] software engineering\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kervyntan"},"content":" assertEquals(1, result);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kervyntan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kervyntan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kervyntan"},"content":"// @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kervyntan"},"content":"// public void readTasks_withoutFileExisting_throwsException() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kervyntan"},"content":"// try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kervyntan"},"content":"// ArrayList\u003cTask\u003e result \u003d new Storage(\"testData/tasks.txt\").readTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kervyntan"},"content":"// ToDo testToDo \u003d new ToDo(\"software engineering\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kervyntan"},"content":"// this.testArr.add(testToDo);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kervyntan"},"content":"// assertEquals(testArr.size(), result.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kervyntan"},"content":"// fail(\"Expected IOException not thrown\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kervyntan"},"content":"// } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kervyntan"},"content":"// assertEquals(\"Uh oh, the file/directory doesn\u0027t seem to exist. No worries, one will be created for you at the end of your conversation!\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kervyntan"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kervyntan"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kervyntan"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"kervyntan":35}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kervyntan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"kervyntan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"kervyntan"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"kervyntan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"kervyntan"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"kervyntan"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"kervyntan"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"kervyntan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"kervyntan"},"content":"unmark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"kervyntan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"kervyntan"},"content":"byer","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"kervyntan"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"kervyntan":12}},{"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":"kervyntan"},"content":"java -classpath ../bin Kervyn \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"kervyntan":1}}] diff --git a/kervyntan_ip_master/commits.json b/kervyntan_ip_master/commits.json index 20a475d2..c897c154 100644 --- a/kervyntan_ip_master/commits.json +++ b/kervyntan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"kervyntan":[{"date":"2024-01-22","commitResults":[{"hash":"7f6a4f41deda9f98b1d48f0cc7a815df79658854","isMergeCommit":false,"messageTitle":"Added content for Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"d5582bc4f72fbeea156679b7e909327a3a0a1fc4","isMergeCommit":false,"messageTitle":"Added content for Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"1e3eecd84e9f9a5550a531b1e737851f1a0bbce3","isMergeCommit":false,"messageTitle":"Added content for Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"1dd386bd917e154b09e2ba391146a926f01fd834","isMergeCommit":false,"messageTitle":"Created new class \u0027Task\u0027","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"83f1ee6b3cb12e029af1ffa8a9fb67db08506b14","isMergeCommit":false,"messageTitle":"1. Edited the type of the ArrayList userRequests 2. Added showing of status on list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"938db60a245a3241d07a1fb937c9f16f639e9825","isMergeCommit":false,"messageTitle":"Refactored if conditions into a switch case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":15}}},{"hash":"e0488fdcee0598422c3d5c1822d5199af22e43c1","isMergeCommit":false,"messageTitle":"Added processing for userInput to handle mark/unmark case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"973eb4c4b915712c16885a93759447378b333853","isMergeCommit":false,"messageTitle":"Added logic to handle command for mark/unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":7}}},{"hash":"5a1f09eddee1bcc3717bff56529e3b3270c59f0b","isMergeCommit":false,"messageTitle":"Update name variable to description","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":9}}},{"hash":"09deabc4b15edb00bba344ee80cdc6d11516db39","isMergeCommit":false,"messageTitle":"Created different types of Task - ToDo, Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}},{"hash":"f0684f796f92f6ce14ca6290b6a6af25349968cf","isMergeCommit":false,"messageTitle":"Created Type Enum and used it in all types of task constructors","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":5}}},{"hash":"80c0e6f6d24fde7ed0fe7cc18f1783cf92095c34","isMergeCommit":false,"messageTitle":"Huge commit - Refactored/abstracted much of the logic into respective functions, added more logic to fit for the tasks, adding appropriate getters to the different types of Tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":182,"deletions":25}}}]},{"date":"2024-01-23","commitResults":[{"hash":"bea22f34349e1c59e7518aa05d2558c72e471922","isMergeCommit":false,"messageTitle":"Edited runtest.sh, ran tests and updated input.txt, EXPECTED.txt based on results","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"b1a4c7652c79ff19933b3bc297ec924897543e44","isMergeCommit":false,"messageTitle":"added error handling for Kervyn.java","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":11}}},{"hash":"4562b69e81a1f62d8768c95df9c99cf4c9a26a62","isMergeCommit":false,"messageTitle":"Added error handling for mark, unmark and delete commands, added delete command logic","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":26}}},{"hash":"75721945ac025c54140ef9a1fe7b34af44bb5c6b","isMergeCommit":false,"messageTitle":"Clean up code, refactor and remove unused variable(s)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"3f6682ed1b814aeb03f7133ac2b582e619b0fb21","isMergeCommit":false,"messageTitle":"remove variable char","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"a8aeb5faae5590836a052742a69be9cbecfedfed","isMergeCommit":false,"messageTitle":"use of constant variable for chatbot name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"e2d168a0959cfc7abfc78bf29f42e6aa8300b728","isMergeCommit":false,"messageTitle":"Create Writer class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"09ec7464b0699c55e95838c63fa3d1dbe73824f7","isMergeCommit":false,"messageTitle":"Ability to write/save data to text file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":11}}},{"hash":"f5a07c1cc9a583ddef5fc6a94ed5868795644dc5","isMergeCommit":false,"messageTitle":"Updated reading of tasks from text file and using it as existing list","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":4}}}]},{"date":"2024-01-29","commitResults":[{"hash":"5aa1c3d829e3b2281b637306bab3f74a82223f2b","isMergeCommit":false,"messageTitle":"Resolved issues with displaying and saving Event from/to timings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":32}}},{"hash":"21c32d398c46bcc9f1085ea0701dc696930476d0","isMergeCommit":false,"messageTitle":"Resolved issues for Deadline input","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":14}}},{"hash":"3a596071763971629c2ec3dcac029dba6f3d8ae9","isMergeCommit":false,"messageTitle":"Handle read and write for deadline and events with new DateTime formats","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":10}}},{"hash":"bff4e978eb93d48daa0fddd7b37024acc55e9648","isMergeCommit":false,"messageTitle":"Created base Skeleton and abstracted Ui and Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":300,"deletions":284}}},{"hash":"be391a4571a095b377220ec2c6adab51becb7d8f","isMergeCommit":false,"messageTitle":"Added ability to load tasks form storage into a TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":38}}},{"hash":"75487da108b02a11a346ea0e67e97a5769ac5847","isMergeCommit":false,"messageTitle":"Operations moved to TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":93}}},{"hash":"5c483c0fa5b7091bec52e56459a6b942868e57d7","isMergeCommit":false,"messageTitle":"Refactored Commands, Storage, UI, Parser and added packages","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":395,"deletions":214}}},{"hash":"76fdc73f6ab00d24f35314cb844099e4031a4c95","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"* add-gradle-support:\n Bump gradle and lib version\n Add Gradle support\n docs/README.md: Tweak document template\n","fileTypesAndContributionMap":{}},{"hash":"f76a16a16db93b9b3127b46acd6b082b30423047","isMergeCommit":false,"messageTitle":"Updated build.gradle with the appropriate class name","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"kervyntan":{"java":739,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":2,"txt":12}},"authorContributionVariance":{"kervyntan":220706.45},"authorDisplayNameMap":{"kervyntan":"CS2103T-T12-2 KERV..AWEI"}} +{"authorDailyContributionsMap":{"kervyntan":[{"date":"2024-01-22","commitResults":[{"hash":"7f6a4f41deda9f98b1d48f0cc7a815df79658854","isMergeCommit":false,"messageTitle":"Added content for Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":10}}},{"hash":"d5582bc4f72fbeea156679b7e909327a3a0a1fc4","isMergeCommit":false,"messageTitle":"Added content for Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"1e3eecd84e9f9a5550a531b1e737851f1a0bbce3","isMergeCommit":false,"messageTitle":"Added content for Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"1dd386bd917e154b09e2ba391146a926f01fd834","isMergeCommit":false,"messageTitle":"Created new class \u0027Task\u0027","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"83f1ee6b3cb12e029af1ffa8a9fb67db08506b14","isMergeCommit":false,"messageTitle":"1. Edited the type of the ArrayList userRequests 2. Added showing of status on list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"938db60a245a3241d07a1fb937c9f16f639e9825","isMergeCommit":false,"messageTitle":"Refactored if conditions into a switch case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":15}}},{"hash":"e0488fdcee0598422c3d5c1822d5199af22e43c1","isMergeCommit":false,"messageTitle":"Added processing for userInput to handle mark/unmark case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"973eb4c4b915712c16885a93759447378b333853","isMergeCommit":false,"messageTitle":"Added logic to handle command for mark/unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":7}}},{"hash":"5a1f09eddee1bcc3717bff56529e3b3270c59f0b","isMergeCommit":false,"messageTitle":"Update name variable to description","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":9}}},{"hash":"09deabc4b15edb00bba344ee80cdc6d11516db39","isMergeCommit":false,"messageTitle":"Created different types of Task - ToDo, Deadline and Event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}},{"hash":"f0684f796f92f6ce14ca6290b6a6af25349968cf","isMergeCommit":false,"messageTitle":"Created Type Enum and used it in all types of task constructors","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":5}}},{"hash":"80c0e6f6d24fde7ed0fe7cc18f1783cf92095c34","isMergeCommit":false,"messageTitle":"Huge commit - Refactored/abstracted much of the logic into respective functions, added more logic to fit for the tasks, adding appropriate getters to the different types of Tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":182,"deletions":25}}}]},{"date":"2024-01-23","commitResults":[{"hash":"bea22f34349e1c59e7518aa05d2558c72e471922","isMergeCommit":false,"messageTitle":"Edited runtest.sh, ran tests and updated input.txt, EXPECTED.txt based on results","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"b1a4c7652c79ff19933b3bc297ec924897543e44","isMergeCommit":false,"messageTitle":"added error handling for Kervyn.java","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":11}}},{"hash":"4562b69e81a1f62d8768c95df9c99cf4c9a26a62","isMergeCommit":false,"messageTitle":"Added error handling for mark, unmark and delete commands, added delete command logic","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":26}}},{"hash":"75721945ac025c54140ef9a1fe7b34af44bb5c6b","isMergeCommit":false,"messageTitle":"Clean up code, refactor and remove unused variable(s)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"3f6682ed1b814aeb03f7133ac2b582e619b0fb21","isMergeCommit":false,"messageTitle":"remove variable char","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"a8aeb5faae5590836a052742a69be9cbecfedfed","isMergeCommit":false,"messageTitle":"use of constant variable for chatbot name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"e2d168a0959cfc7abfc78bf29f42e6aa8300b728","isMergeCommit":false,"messageTitle":"Create Writer class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"09ec7464b0699c55e95838c63fa3d1dbe73824f7","isMergeCommit":false,"messageTitle":"Ability to write/save data to text file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":11}}},{"hash":"f5a07c1cc9a583ddef5fc6a94ed5868795644dc5","isMergeCommit":false,"messageTitle":"Updated reading of tasks from text file and using it as existing list","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":4}}}]},{"date":"2024-01-29","commitResults":[{"hash":"5aa1c3d829e3b2281b637306bab3f74a82223f2b","isMergeCommit":false,"messageTitle":"Resolved issues with displaying and saving Event from/to timings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":32}}},{"hash":"21c32d398c46bcc9f1085ea0701dc696930476d0","isMergeCommit":false,"messageTitle":"Resolved issues for Deadline input","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":14}}},{"hash":"3a596071763971629c2ec3dcac029dba6f3d8ae9","isMergeCommit":false,"messageTitle":"Handle read and write for deadline and events with new DateTime formats","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":10}}},{"hash":"bff4e978eb93d48daa0fddd7b37024acc55e9648","isMergeCommit":false,"messageTitle":"Created base Skeleton and abstracted Ui and Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":300,"deletions":284}}},{"hash":"be391a4571a095b377220ec2c6adab51becb7d8f","isMergeCommit":false,"messageTitle":"Added ability to load tasks form storage into a TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":38}}},{"hash":"75487da108b02a11a346ea0e67e97a5769ac5847","isMergeCommit":false,"messageTitle":"Operations moved to TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":93}}},{"hash":"5c483c0fa5b7091bec52e56459a6b942868e57d7","isMergeCommit":false,"messageTitle":"Refactored Commands, Storage, UI, Parser and added packages","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":395,"deletions":214}}},{"hash":"76fdc73f6ab00d24f35314cb844099e4031a4c95","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"* add-gradle-support:\n Bump gradle and lib version\n Add Gradle support\n docs/README.md: Tweak document template\n","fileTypesAndContributionMap":{}},{"hash":"f76a16a16db93b9b3127b46acd6b082b30423047","isMergeCommit":false,"messageTitle":"Updated build.gradle with the appropriate class name","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-30","commitResults":[{"hash":"718ff192528713057fd1526a8b408151d289be6c","isMergeCommit":false,"messageTitle":"Created JUnit tests for Parser, Storage classes","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":8}}},{"hash":"cc92bfe9a3e8e4654c385611ff77f6601fef41db","isMergeCommit":false,"messageTitle":"Packaged and built jar","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"641c4a61b0e606e4f6e7ad117feafd65abb832ef","isMergeCommit":false,"messageTitle":"Revert \"Packaged and built jar\"","messageBody":"This reverts commit cc92bfe9a3e8e4654c385611ff77f6601fef41db.\n","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":1}}},{"hash":"683f131c0cae32e3902f29af2a1e39d6750d30ea","isMergeCommit":false,"messageTitle":"Packaged and built jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"93346669b10f6aa663df2ed67a5b06fa6e3168b7","isMergeCommit":false,"messageTitle":"Added JavaDocs for all Tasks, common classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":230,"deletions":10}}},{"hash":"6311976e1e8596460b67bc0642a677c650bde0fa","isMergeCommit":false,"messageTitle":"Added JavaDocs for Commands","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":175,"deletions":0}}},{"hash":"9bd367cfa11f01a1a2d88c8ade70b8126ce292a8","isMergeCommit":false,"messageTitle":"Amended fixes for how I am writing to a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":11}}}]}]},"authorFileTypeContributionMap":{"kervyntan":{"java":1226,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":3,"txt":12}},"authorContributionVariance":{"kervyntan":210637.61},"authorDisplayNameMap":{"kervyntan":"CS2103T-T12-2 KERV..AWEI"}} diff --git a/kokerinks_ip_master/authorship.json b/kokerinks_ip_master/authorship.json index 81353727..0a1a0f18 100644 --- a/kokerinks_ip_master/authorship.json +++ b/kokerinks_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"AI.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"Week 2 tasks done all by hand.","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"Week 3 tasks:","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"- Using github copilot for:","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":" - Level 7","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":" - \\+ Sometimes able to predict what I was going to type","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" - \\+ Sometimes able to provide options which I wasn\u0027t even aware of","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":" - \\- Sometimes provides invalid suggestions, may not always be accurate","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" - If invalid suggestions are lazily taken, productivity actually reduces in the long-term","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" - Level 8","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" - \\+ extremely useful in coming up with suitable datetime patterns","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" - \\+ kind of insane how good it is at predicting what i am going to type.. almost a little creepy ngl lol","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"kokerinks":12}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":" protected LocalDateTime dueDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" public Deadline(String description, LocalDateTime newDueDate) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" this.dueDate \u003d newDueDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" public Deadline(String description, String newDueDate) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":" super(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" this.dueDate \u003d LocalDateTime.parse(newDueDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" public String formattedDueDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":" return this.dueDate.format(DateTimeFormatter.ofPattern(this.dateTimeFormat));","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.formattedDueDate());","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" return String.format(\"D,%s,%s\", super.toFileString(), this.dueDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kokerinks":30}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" String botName \u003d \"KokBot\";","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":"// String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":"// + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":"// + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":"// + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":"// + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":"// System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" welcome(botName);","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" lineBreak();","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" Path path \u003d Paths.get(\"data\", \"duke.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"kokerinks"},"content":" File file;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"kokerinks"},"content":" file \u003d getFile(path);","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"kokerinks"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"kokerinks"},"content":" lineBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"kokerinks"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"kokerinks"},"content":" lineBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"kokerinks"},"content":" return;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"kokerinks"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"kokerinks"},"content":" try (Scanner scanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"kokerinks"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"kokerinks"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"kokerinks"},"content":" String[] parts \u003d line.split(\",\");","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"kokerinks"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"kokerinks"},"content":" case \"T\" -\u003e tasks.add(new Todo(parts[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"kokerinks"},"content":" case \"D\" -\u003e tasks.add(new Deadline(parts[2], parts[3]));","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"kokerinks"},"content":" case \"E\" -\u003e tasks.add(new Event(parts[2], parts[3], parts[4]));","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"kokerinks"},"content":" if (parts[1].equals(\"X\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"kokerinks"},"content":" tasks.get(tasks.size() - 1).markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"kokerinks"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"kokerinks"},"content":" System.out.println(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"kokerinks"},"content":" Scanner streamScan \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"kokerinks"},"content":" String input \u003d streamScan.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"kokerinks"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"kokerinks"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"kokerinks"},"content":" String[] parts \u003d input.split(\" \");","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"kokerinks"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"kokerinks"},"content":" case \"list\":","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"kokerinks"},"content":" printList(tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"kokerinks"},"content":" case \"mark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"kokerinks"},"content":" int toMark \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"kokerinks"},"content":" markTask(tasks.get(toMark));","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"kokerinks"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"kokerinks"},"content":" int toUnmark \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"kokerinks"},"content":" unmarkTask(tasks.get(toUnmark));","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"kokerinks"},"content":" case \"todo\":","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"kokerinks"},"content":" tasks.add(createTodo(input));","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"kokerinks"},"content":" numList(tasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"kokerinks"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"kokerinks"},"content":" tasks.add(createDeadline(parts));","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"kokerinks"},"content":" numList(tasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"kokerinks"},"content":" case \"event\":","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"kokerinks"},"content":" tasks.add(createEvent(parts));","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"kokerinks"},"content":" numList(tasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":92,"author":{"gitId":"kokerinks"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"kokerinks"},"content":" deleteTask(parts, tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"kokerinks"},"content":" numList(tasks.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"kokerinks"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"kokerinks"},"content":" updateFile(path, tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"kokerinks"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"kokerinks"},"content":" lineBreak();","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"kokerinks"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"kokerinks"},"content":" lineBreak();","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"kokerinks"},"content":" input \u003d streamScan.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"kokerinks"},"content":" farewell();","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"kokerinks"},"content":" public static File getFile(Path path) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"kokerinks"},"content":" File file \u003d new File(path.toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"kokerinks"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"kokerinks"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"kokerinks"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"kokerinks"},"content":" System.out.println(\" New duke.txt file created!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"kokerinks"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Error creating file\");","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"kokerinks"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"kokerinks"},"content":" System.out.println(\" Existing duke.txt file successfully retrieved!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"kokerinks"},"content":" lineBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"kokerinks"},"content":" return file;","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"kokerinks"},"content":" public static void updateFile(Path path, ArrayList\u003cTask\u003e tasks) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"kokerinks"},"content":" List\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"kokerinks"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"kokerinks"},"content":" lines.add(task.toFileString());","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"kokerinks"},"content":" Files.write(path, lines);","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"kokerinks"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Error writing to file\");","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"kokerinks"},"content":" public static LocalDateTime createDateTime(String input) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"kokerinks"},"content":" //turn possiblePatterns into two arrays","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"kokerinks"},"content":" //one for date, one for time","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"kokerinks"},"content":" //then combine them in a nested loop","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"kokerinks"},"content":" String[] possibleDates \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"kokerinks"},"content":" \"d/M/yyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"kokerinks"},"content":" \"d-M-yyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"kokerinks"},"content":" \"d/M/yy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"kokerinks"},"content":" \"d-M-yy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"kokerinks"},"content":" \"dMMyyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"kokerinks"},"content":" \"dMMyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"kokerinks"},"content":" \"dd/MM/yyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"kokerinks"},"content":" \"dd-MM-yyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"kokerinks"},"content":" \"dd/MM/yy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"kokerinks"},"content":" \"dd-MM-yy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"kokerinks"},"content":" \"ddMMyyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"kokerinks"},"content":" \"ddMMyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"kokerinks"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":160,"author":{"gitId":"kokerinks"},"content":" String[] possibleTimes \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"kokerinks"},"content":" \"HHmm\",","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"kokerinks"},"content":" \"HH:mm\",","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"kokerinks"},"content":" \"HH\",","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"kokerinks"},"content":" \"h:mma\",","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"kokerinks"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"kokerinks"},"content":" for (String datePattern : possibleDates) {","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"kokerinks"},"content":" for (String timePattern : possibleTimes) {","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"kokerinks"},"content":" //check that time pattern comes before date pattern","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"kokerinks"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(timePattern + \" \" + datePattern);","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"kokerinks"},"content":" return LocalDateTime.parse(input, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"kokerinks"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"kokerinks"},"content":" //do nothing","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"kokerinks"},"content":" //check that time pattern comes after date pattern","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"kokerinks"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern + \" \" + timePattern);","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"kokerinks"},"content":" return LocalDateTime.parse(input, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"kokerinks"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"kokerinks"},"content":" //do nothing","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":184,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":185,"author":{"gitId":"kokerinks"},"content":" return null;","lastModifiedDate":"2024-01-28"},{"lineNumber":186,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":188,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"kokerinks"},"content":" public static void lineBreak() {","lastModifiedDate":"2024-01-22"},{"lineNumber":190,"author":{"gitId":"kokerinks"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":191,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":192,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":193,"author":{"gitId":"kokerinks"},"content":" public static void numList(int len) {","lastModifiedDate":"2024-01-22"},{"lineNumber":194,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", len);","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":196,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":197,"author":{"gitId":"kokerinks"},"content":" public static void printList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"kokerinks"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":199,"author":{"gitId":"kokerinks"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"kokerinks"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" %d. %s%n\", i + 1, tasks.get(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":202,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":203,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":204,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":205,"author":{"gitId":"kokerinks"},"content":" public static void markTask(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":206,"author":{"gitId":"kokerinks"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-22"},{"lineNumber":207,"author":{"gitId":"kokerinks"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":208,"author":{"gitId":"kokerinks"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":209,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" %s%n\", task);","lastModifiedDate":"2024-01-28"},{"lineNumber":210,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":211,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":212,"author":{"gitId":"kokerinks"},"content":" public static void unmarkTask(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":213,"author":{"gitId":"kokerinks"},"content":" task.markAsUndone();","lastModifiedDate":"2024-01-22"},{"lineNumber":214,"author":{"gitId":"kokerinks"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":215,"author":{"gitId":"kokerinks"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-22"},{"lineNumber":216,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" %s%n\", task);","lastModifiedDate":"2024-01-28"},{"lineNumber":217,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":218,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":219,"author":{"gitId":"kokerinks"},"content":" public static void welcome(String botName) {","lastModifiedDate":"2024-01-22"},{"lineNumber":220,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"\"\"","lastModifiedDate":"2024-01-28"},{"lineNumber":221,"author":{"gitId":"kokerinks"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-22"},{"lineNumber":222,"author":{"gitId":"kokerinks"},"content":" Hello! I\u0027m %s","lastModifiedDate":"2024-01-22"},{"lineNumber":223,"author":{"gitId":"kokerinks"},"content":" What can I do for you?","lastModifiedDate":"2024-01-22"},{"lineNumber":224,"author":{"gitId":"kokerinks"},"content":" %n\"\"\", botName);","lastModifiedDate":"2024-01-28"},{"lineNumber":225,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":226,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":227,"author":{"gitId":"kokerinks"},"content":" public static Todo createTodo(String input) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"kokerinks"},"content":" if (input.length() \u003c\u003d 5) {","lastModifiedDate":"2024-01-24"},{"lineNumber":229,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - description should of \\\"todo\\\" should not be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":230,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":231,"author":{"gitId":"kokerinks"},"content":" Todo newTodo \u003d new Todo(input.substring(5));","lastModifiedDate":"2024-01-24"},{"lineNumber":232,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"\"\"","lastModifiedDate":"2024-01-28"},{"lineNumber":233,"author":{"gitId":"kokerinks"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-22"},{"lineNumber":234,"author":{"gitId":"kokerinks"},"content":" Got it. I\u0027ve added this task:","lastModifiedDate":"2024-01-22"},{"lineNumber":235,"author":{"gitId":"kokerinks"},"content":" %s%n\"\"\", newTodo);","lastModifiedDate":"2024-01-28"},{"lineNumber":236,"author":{"gitId":"kokerinks"},"content":" return newTodo;","lastModifiedDate":"2024-01-22"},{"lineNumber":237,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":238,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":239,"author":{"gitId":"kokerinks"},"content":" public static Deadline createDeadline(String[] parts) throws DukeException{","lastModifiedDate":"2024-01-24"},{"lineNumber":240,"author":{"gitId":"kokerinks"},"content":" int i;","lastModifiedDate":"2024-01-22"},{"lineNumber":241,"author":{"gitId":"kokerinks"},"content":" for (i \u003d 0; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":242,"author":{"gitId":"kokerinks"},"content":" if (parts[i].equals(\"/by\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":243,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":244,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":245,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":246,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":247,"author":{"gitId":"kokerinks"},"content":" if (i \u003d\u003d parts.length) {","lastModifiedDate":"2024-01-24"},{"lineNumber":248,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - /by not found in \\\"deadline\\\" command.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":249,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":250,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":251,"author":{"gitId":"kokerinks"},"content":" String description \u003d String.join(\" \", Arrays.copyOfRange(parts, 1, i));","lastModifiedDate":"2024-01-22"},{"lineNumber":252,"author":{"gitId":"kokerinks"},"content":" String dueDateStr \u003d String.join(\" \", Arrays.copyOfRange(parts, i + 1, parts.length));","lastModifiedDate":"2024-01-28"},{"lineNumber":253,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":254,"author":{"gitId":"kokerinks"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":255,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - description of \\\"deadline\\\" should not be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":256,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":257,"author":{"gitId":"kokerinks"},"content":" if (dueDateStr.equals(\"\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":258,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - due date of \\\"deadline\\\" should not be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":259,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":261,"author":{"gitId":"kokerinks"},"content":" LocalDateTime dueDateTime \u003d createDateTime(dueDateStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":262,"author":{"gitId":"kokerinks"},"content":" if (dueDateTime \u003d\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":263,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - due date of \\\"deadline\\\" is not in a valid date-time format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":264,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":265,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":266,"author":{"gitId":"kokerinks"},"content":" Deadline newDeadline \u003d new Deadline(description, dueDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":267,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"\"\"","lastModifiedDate":"2024-01-28"},{"lineNumber":268,"author":{"gitId":"kokerinks"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-22"},{"lineNumber":269,"author":{"gitId":"kokerinks"},"content":" Got it. I\u0027ve added this task:","lastModifiedDate":"2024-01-22"},{"lineNumber":270,"author":{"gitId":"kokerinks"},"content":" %s%n\"\"\", newDeadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":271,"author":{"gitId":"kokerinks"},"content":" return newDeadline;","lastModifiedDate":"2024-01-22"},{"lineNumber":272,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":273,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":274,"author":{"gitId":"kokerinks"},"content":" public static Event createEvent(String[] parts) throws DukeException{","lastModifiedDate":"2024-01-24"},{"lineNumber":275,"author":{"gitId":"kokerinks"},"content":" int fromIndex \u003d -1;","lastModifiedDate":"2024-01-24"},{"lineNumber":276,"author":{"gitId":"kokerinks"},"content":" int toIndex \u003d -1;","lastModifiedDate":"2024-01-28"},{"lineNumber":277,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":278,"author":{"gitId":"kokerinks"},"content":" for (int i \u003d 0; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":279,"author":{"gitId":"kokerinks"},"content":" if (parts[i].equals(\"/from\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":280,"author":{"gitId":"kokerinks"},"content":" fromIndex \u003d i;","lastModifiedDate":"2024-01-22"},{"lineNumber":281,"author":{"gitId":"kokerinks"},"content":" } else if (parts[i].equals(\"/to\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":282,"author":{"gitId":"kokerinks"},"content":" toIndex \u003d i;","lastModifiedDate":"2024-01-22"},{"lineNumber":283,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":284,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":285,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":286,"author":{"gitId":"kokerinks"},"content":" if (fromIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":287,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - /from not found in \\\"event\\\" command.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":288,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":289,"author":{"gitId":"kokerinks"},"content":" if (toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":290,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - /to not found in \\\"event\\\" command.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":291,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":292,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":293,"author":{"gitId":"kokerinks"},"content":" String description \u003d String.join(\" \", Arrays.copyOfRange(parts, 1, fromIndex));","lastModifiedDate":"2024-01-22"},{"lineNumber":294,"author":{"gitId":"kokerinks"},"content":" String startDateStr \u003d String.join(\" \", Arrays.copyOfRange(parts, fromIndex + 1, toIndex));","lastModifiedDate":"2024-01-28"},{"lineNumber":295,"author":{"gitId":"kokerinks"},"content":" String endDateStr \u003d String.join(\" \", Arrays.copyOfRange(parts, toIndex + 1, parts.length));","lastModifiedDate":"2024-01-28"},{"lineNumber":296,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":297,"author":{"gitId":"kokerinks"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":298,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - description of \\\"event\\\" should not be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":299,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":300,"author":{"gitId":"kokerinks"},"content":" if (startDateStr.equals(\"\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":301,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - start date of \\\"event\\\" should not be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":302,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":303,"author":{"gitId":"kokerinks"},"content":" if (endDateStr.equals(\"\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":304,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - end date of \\\"event\\\" should not be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":305,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":306,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":307,"author":{"gitId":"kokerinks"},"content":" LocalDateTime startDateTime \u003d createDateTime(startDateStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":308,"author":{"gitId":"kokerinks"},"content":" if (startDateTime \u003d\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":309,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - start date of \\\"event\\\" is not in a valid date-time format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":310,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":311,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":312,"author":{"gitId":"kokerinks"},"content":" LocalDateTime endDateTime \u003d createDateTime(endDateStr);","lastModifiedDate":"2024-01-28"},{"lineNumber":313,"author":{"gitId":"kokerinks"},"content":" if (endDateTime \u003d\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":314,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - end date of \\\"event\\\" is not in a valid date-time format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":315,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":316,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":317,"author":{"gitId":"kokerinks"},"content":" if (startDateTime.isAfter(endDateTime)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":318,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - start date of \\\"event\\\" is after end date.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":319,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":320,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":321,"author":{"gitId":"kokerinks"},"content":" Event newEvent \u003d new Event(description, startDateTime, endDateTime);","lastModifiedDate":"2024-01-28"},{"lineNumber":322,"author":{"gitId":"kokerinks"},"content":" System.out.println(String.format(\"\"\"","lastModifiedDate":"2024-01-22"},{"lineNumber":323,"author":{"gitId":"kokerinks"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-22"},{"lineNumber":324,"author":{"gitId":"kokerinks"},"content":" Got it. I\u0027ve added this task:","lastModifiedDate":"2024-01-22"},{"lineNumber":325,"author":{"gitId":"kokerinks"},"content":" %s\"\"\", newEvent));","lastModifiedDate":"2024-01-22"},{"lineNumber":326,"author":{"gitId":"kokerinks"},"content":" return newEvent;","lastModifiedDate":"2024-01-22"},{"lineNumber":327,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":328,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":329,"author":{"gitId":"kokerinks"},"content":" public static void deleteTask (String[] parts, ArrayList\u003cTask\u003e tasks) throws DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":330,"author":{"gitId":"kokerinks"},"content":" if (parts.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":331,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - task number should be included in \\\"delete\\\" command\");","lastModifiedDate":"2024-01-24"},{"lineNumber":332,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":333,"author":{"gitId":"kokerinks"},"content":" for (char c : parts[1].toCharArray()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":334,"author":{"gitId":"kokerinks"},"content":" if (!Character.isDigit(c)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":335,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - task number given is not a valid number\");","lastModifiedDate":"2024-01-24"},{"lineNumber":336,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":337,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":338,"author":{"gitId":"kokerinks"},"content":" int i \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":339,"author":{"gitId":"kokerinks"},"content":" if (i \u003c 0 || i \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":340,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - task number given is not a valid number\");","lastModifiedDate":"2024-01-28"},{"lineNumber":341,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":342,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":343,"author":{"gitId":"kokerinks"},"content":" Task removedTask \u003d tasks.remove(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":344,"author":{"gitId":"kokerinks"},"content":" System.out.println(String.format(\"\"\"","lastModifiedDate":"2024-01-24"},{"lineNumber":345,"author":{"gitId":"kokerinks"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-24"},{"lineNumber":346,"author":{"gitId":"kokerinks"},"content":" Noted. I\u0027ve removed this task:","lastModifiedDate":"2024-01-24"},{"lineNumber":347,"author":{"gitId":"kokerinks"},"content":" %s\"\"\", removedTask));","lastModifiedDate":"2024-01-24"},{"lineNumber":348,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":349,"author":{"gitId":"kokerinks"},"content":" public static void farewell() {","lastModifiedDate":"2024-01-22"},{"lineNumber":350,"author":{"gitId":"kokerinks"},"content":" System.out.println(\"\"\"","lastModifiedDate":"2024-01-22"},{"lineNumber":351,"author":{"gitId":"kokerinks"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-22"},{"lineNumber":352,"author":{"gitId":"kokerinks"},"content":" Bye. Hope to see you again soon!","lastModifiedDate":"2024-01-22"},{"lineNumber":353,"author":{"gitId":"kokerinks"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-22"},{"lineNumber":354,"author":{"gitId":"kokerinks"},"content":" \"\"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":355,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"kokerinks":352,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":" public DukeException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":" super();","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"kokerinks":9}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":" protected LocalDateTime startDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":" protected LocalDateTime endDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" public Event (String description, LocalDateTime newStartDate, LocalDateTime newEndDate) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" this.startDate \u003d newStartDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" this.endDate \u003d newEndDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" public Event (String description, String newStartDate, String newEndDate) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":" super(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" this.startDate \u003d LocalDateTime.parse(newStartDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":" this.endDate \u003d LocalDateTime.parse(newEndDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":" public String formattedStartDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":" return this.startDate.format(DateTimeFormatter.ofPattern(this.dateTimeFormat));","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":" public String formattedEndDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":" return this.endDate.format(DateTimeFormatter.ofPattern(this.dateTimeFormat));","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.formattedStartDate(), this.formattedEndDate());","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"kokerinks"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"kokerinks"},"content":" return String.format(\"E,%s,%s,%s\", super.toFileString(), this.startDate, this.endDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kokerinks":37}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"abstract class Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":" protected String dateTimeFormat \u003d \"MMM d yyyy h:mma\";","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":" return String.format(\"%s,%s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kokerinks":30}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" return String.format(\"T,%s\", super.toFileString());","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kokerinks":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"delete 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"delete hello","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kokerinks":11}}] +[{"path":"AI.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"Week 2 duke.task done all by hand.","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"Week 3 duke.task:","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"- Using github copilot for:","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":" - Level 7","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":" - \\+ Sometimes able to predict what I was going to type","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" - \\+ Sometimes able to provide options which I wasn\u0027t even aware of","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":" - \\- Sometimes provides invalid suggestions, may not always be accurate","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" - If invalid suggestions are lazily taken, productivity actually reduces in the long-term","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" - Level 8","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" - \\+ extremely useful in coming up with suitable datetime patterns","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" - \\+ kind of insane how good it is at predicting what i am going to type.. almost a little creepy ngl lol","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"kokerinks":12}},{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"# duke.Duke project template","lastModifiedDate":"2024-01-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":"kokerinks"},"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":"2024-01-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":{"kokerinks":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":"kokerinks"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-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":"kokerinks"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"kokerinks":2,"-":38}},{"path":"src/main/java/duke/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"public class Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":" public Duke.CommandType type;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" public String[] args;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" public Command(Duke.CommandType newType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" this.type \u003d newType;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" this.args \u003d new String[]{};","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":" public Command(Duke.CommandType newType, String[] newArgs) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" this.type \u003d newType;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" this.args \u003d newArgs;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"kokerinks":19}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" public enum CommandType {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":" LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":" private Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":" public Duke(Path filePath, String botName) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" ui \u003d new Ui(botName);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" parser \u003d new Parser();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"kokerinks"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kokerinks"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"kokerinks"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kokerinks"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"kokerinks"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"kokerinks"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kokerinks"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"kokerinks"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"kokerinks"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"kokerinks"},"content":" Command cmd \u003d parser.parse(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"kokerinks"},"content":" switch (cmd.type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"kokerinks"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"kokerinks"},"content":" ui.showTaskList(tasks.getTaskStrings());","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"kokerinks"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"kokerinks"},"content":" int toMark \u003d Integer.parseInt(cmd.args[0]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"kokerinks"},"content":" tasks.markTaskAsDone(toMark);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"kokerinks"},"content":" ui.showTaskMarked(tasks.getTask(toMark));","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"kokerinks"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"kokerinks"},"content":" int toUnmark \u003d Integer.parseInt(cmd.args[0]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"kokerinks"},"content":" tasks.markTaskAsUndone(toUnmark);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"kokerinks"},"content":" ui.showTaskUnmarked(tasks.getTask(toUnmark));","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"kokerinks"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"kokerinks"},"content":" Todo newTodo \u003d createTodo(cmd.args[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"kokerinks"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"kokerinks"},"content":" ui.showTaskAdded(newTodo, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"kokerinks"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"kokerinks"},"content":" Deadline newDeadline \u003d createDeadline(cmd.args[0], cmd.args[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"kokerinks"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"kokerinks"},"content":" ui.showTaskAdded(newDeadline, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"kokerinks"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kokerinks"},"content":" Event newEvent \u003d createEvent(cmd.args[0], cmd.args[1], cmd.args[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kokerinks"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"kokerinks"},"content":" ui.showTaskAdded(newEvent, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"kokerinks"},"content":" //numList(duke.tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"kokerinks"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"kokerinks"},"content":" Task deletedTask \u003d tasks.deleteTask(Integer.parseInt(cmd.args[0]) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"kokerinks"},"content":" ui.showTaskDeleted(deletedTask, tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"kokerinks"},"content":" numList(tasks.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"kokerinks"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"kokerinks"},"content":" storage.updateFile(tasks.getFileStrings());","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"kokerinks"},"content":" } catch (duke.DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"kokerinks"},"content":" lineBreak();","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"kokerinks"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"kokerinks"},"content":" lineBreak();","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"kokerinks"},"content":" input \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"kokerinks"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"kokerinks"},"content":" public static void lineBreak() {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"kokerinks"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"kokerinks"},"content":" public static void numList(int len) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" Now you have %d duke.tasks in the list.%n\", len);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"kokerinks"},"content":" public static LocalDateTime createDateTime(String input) throws DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"kokerinks"},"content":" //turn possiblePatterns into two arrays","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"kokerinks"},"content":" //one for date, one for time","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"kokerinks"},"content":" //then combine them in a nested loop","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"kokerinks"},"content":" String[] possibleDates \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"kokerinks"},"content":" \"d/M/yyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"kokerinks"},"content":" \"d-M-yyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"kokerinks"},"content":" \"d/M/yy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"kokerinks"},"content":" \"d-M-yy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"kokerinks"},"content":" \"dMMyyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"kokerinks"},"content":" \"dMMyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"kokerinks"},"content":" \"dd/MM/yyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"kokerinks"},"content":" \"dd-MM-yyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"kokerinks"},"content":" \"yyyy-MM-dd\",","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"kokerinks"},"content":" \"dd/MM/yy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"kokerinks"},"content":" \"dd-MM-yy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"kokerinks"},"content":" \"ddMMyyyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"kokerinks"},"content":" \"ddMMyy\",","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"kokerinks"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"kokerinks"},"content":" String[] possibleTimes \u003d {","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"kokerinks"},"content":" \"HHmm\",","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"kokerinks"},"content":" \"HH:mm\",","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"kokerinks"},"content":" \"HH\",","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"kokerinks"},"content":" \"h:mma\",","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"kokerinks"},"content":" };","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"kokerinks"},"content":" for (String datePattern : possibleDates) {","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"kokerinks"},"content":" for (String timePattern : possibleTimes) {","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"kokerinks"},"content":" //check that time pattern comes before date pattern","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"kokerinks"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(timePattern + \" \" + datePattern);","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"kokerinks"},"content":" return LocalDateTime.parse(input, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"kokerinks"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"kokerinks"},"content":" //do nothing","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"kokerinks"},"content":" //check that time pattern comes after date pattern","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"kokerinks"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern + \" \" + timePattern);","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"kokerinks"},"content":" return LocalDateTime.parse(input, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"kokerinks"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"kokerinks"},"content":" //do nothing","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"kokerinks"},"content":" return null;","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"kokerinks"},"content":" public static Todo createTodo(String description) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"kokerinks"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"kokerinks"},"content":" return newTodo;","lastModifiedDate":"2024-01-22"},{"lineNumber":159,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":160,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":161,"author":{"gitId":"kokerinks"},"content":" public static Deadline createDeadline(String description, String dueDate) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":163,"author":{"gitId":"kokerinks"},"content":" LocalDateTime dueDateTime \u003d createDateTime(dueDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"kokerinks"},"content":" if (dueDateTime \u003d\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - due date of \\\"deadline\\\" is not in a valid date-time format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"kokerinks"},"content":" return new Deadline(description, dueDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"kokerinks"},"content":" public static Event createEvent(String description, String startDate, String endDate) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":173,"author":{"gitId":"kokerinks"},"content":" LocalDateTime startDateTime \u003d createDateTime(startDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"kokerinks"},"content":" if (startDateTime \u003d\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - start date of \\\"event\\\" is not in a valid date-time format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"kokerinks"},"content":" LocalDateTime endDateTime \u003d createDateTime(endDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"kokerinks"},"content":" if (endDateTime \u003d\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - end date of \\\"event\\\" is not in a valid date-time format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"kokerinks"},"content":" if (startDateTime.isAfter(endDateTime)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":184,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - start date of \\\"event\\\" is after end date.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":185,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":186,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"kokerinks"},"content":" return new Event(description, startDateTime, endDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":189,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":190,"author":{"gitId":"kokerinks"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"kokerinks"},"content":" String botName \u003d \"KokBot\";","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"kokerinks"},"content":" Path path \u003d Paths.get(\"data\", \"duke.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"kokerinks"},"content":" new Duke(path, botName).run();","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"kokerinks":193,"-":2}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":" public DukeException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":" super();","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"kokerinks":11}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" public Parser () {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" public Command parse(String input) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" String[] parts \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" return new Command(Duke.CommandType.LIST);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":" Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" String[] args \u003d new String[]{parts[1]};","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":" return new Command(Duke.CommandType.MARK, args);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Incorrect usage - please provide the task number to be marked done\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":" Integer.parseInt(parts[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" String[] args \u003d new String[]{parts[1]};","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" return new Command(Duke.CommandType.UNMARK, args);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Incorrect usage - please provide the task number to be unmarked\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kokerinks"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kokerinks"},"content":" String todoDesc \u003d input.substring(5);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kokerinks"},"content":" if (todoDesc.equals(\"\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Incorrect usage - description cannot be empty\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kokerinks"},"content":" String[] args \u003d new String[]{todoDesc};","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kokerinks"},"content":" return new Command(Duke.CommandType.TODO, args);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kokerinks"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kokerinks"},"content":" int byIndex;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"kokerinks"},"content":" for (byIndex \u003d 0; byIndex \u003c parts.length; byIndex++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"kokerinks"},"content":" if (parts[byIndex].equals(\"/by\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"kokerinks"},"content":" if (byIndex \u003d\u003d parts.length) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - /by not found in \\\"deadline\\\" command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"kokerinks"},"content":" String deadlineDesc \u003d String.join(\" \", Arrays.copyOfRange(parts, 1, byIndex));","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"kokerinks"},"content":" String dueDateStr \u003d String.join(\" \", Arrays.copyOfRange(parts, byIndex + 1, parts.length));","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"kokerinks"},"content":" if (deadlineDesc.equals(\"\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - description of \\\"deadline\\\" should not be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"kokerinks"},"content":" if (dueDateStr.equals(\"\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - due date of \\\"deadline\\\" should not be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"kokerinks"},"content":" return new Command(Duke.CommandType.DEADLINE, new String[]{deadlineDesc, dueDateStr});","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"kokerinks"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"kokerinks"},"content":" int fromIndex \u003d -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"kokerinks"},"content":" int toIndex \u003d -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"kokerinks"},"content":" for (int i \u003d 0; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"kokerinks"},"content":" if (parts[i].equals(\"/from\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"kokerinks"},"content":" fromIndex \u003d i;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"kokerinks"},"content":" } else if (parts[i].equals(\"/to\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"kokerinks"},"content":" toIndex \u003d i;","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"kokerinks"},"content":" if (fromIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - /from not found in \\\"event\\\" command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"kokerinks"},"content":" if (toIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - /to not found in \\\"event\\\" command.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"kokerinks"},"content":" String description \u003d String.join(\" \", Arrays.copyOfRange(parts, 1, fromIndex));","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"kokerinks"},"content":" String startDateStr \u003d String.join(\" \", Arrays.copyOfRange(parts, fromIndex + 1, toIndex));","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"kokerinks"},"content":" String endDateStr \u003d String.join(\" \", Arrays.copyOfRange(parts, toIndex + 1, parts.length));","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"kokerinks"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - description of \\\"event\\\" should not be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"kokerinks"},"content":" if (startDateStr.equals(\"\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - start date of \\\"event\\\" should not be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"kokerinks"},"content":" if (endDateStr.equals(\"\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - end date of \\\"event\\\" should not be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"kokerinks"},"content":" return new Command(Duke.CommandType.EVENT, new String[]{description, startDateStr, endDateStr});","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"kokerinks"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"kokerinks"},"content":" if (parts.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - task number should be included in \\\"delete\\\" command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"kokerinks"},"content":" for (char c : parts[1].toCharArray()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"kokerinks"},"content":" if (!Character.isDigit(c)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - task number given is not a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"kokerinks"},"content":" int i \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"kokerinks"},"content":" return new Command(Duke.CommandType.DELETE, new String[]{parts[1]});","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"kokerinks"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown usage - task number given is not a valid number\");","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"kokerinks"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Unknown command\");","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"kokerinks":116}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":" protected Path filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":" public Storage(Path newFilePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":" this.filePath \u003d newFilePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":" private static File getFile(Path path) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" File file \u003d path.toFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kokerinks"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kokerinks"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Error creating file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kokerinks"},"content":" return file;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kokerinks"},"content":" public void updateFile(String[] tasks) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kokerinks"},"content":" File file;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"kokerinks"},"content":" file \u003d getFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"kokerinks"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"kokerinks"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"kokerinks"},"content":" lines.clear();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"kokerinks"},"content":" lines.addAll(Arrays.asList(tasks));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"kokerinks"},"content":" Files.write(filePath, lines);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"kokerinks"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"kokerinks"},"content":" throw new DukeException(\"Error updating file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"kokerinks"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kokerinks"},"content":" File file;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"kokerinks"},"content":" file \u003d getFile(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"kokerinks"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"kokerinks"},"content":" try (Scanner scanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"kokerinks"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"kokerinks"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"kokerinks"},"content":" String[] parts \u003d line.split(\",\");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"kokerinks"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"kokerinks"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"kokerinks"},"content":" tasks.add(new Todo(parts[2]));","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"kokerinks"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"kokerinks"},"content":" tasks.add(new Deadline(parts[2], parts[3]));","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"kokerinks"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kokerinks"},"content":" tasks.add(new Event(parts[2], parts[3], parts[4]));","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kokerinks"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"kokerinks"},"content":" if (parts[1].equals(\"X\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"kokerinks"},"content":" tasks.get(tasks.size() - 1).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"kokerinks"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"kokerinks"},"content":" System.out.println(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"kokerinks"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"kokerinks":84}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" protected ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" public TaskList(ArrayList\u003cTask\u003e newTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":" this.tasks \u003d newTasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" public void addTask(Task newTask) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":" this.tasks.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":" return this.tasks.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" public void markTaskAsDone(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" this.tasks.get(index).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kokerinks"},"content":" public void markTaskAsUndone(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kokerinks"},"content":" this.tasks.get(index).markAsUndone();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kokerinks"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kokerinks"},"content":" return this.tasks.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kokerinks"},"content":" public int getSize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kokerinks"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"kokerinks"},"content":" public String[] getTaskStrings() {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"kokerinks"},"content":" String[] taskStrings \u003d new String[this.tasks.size()];","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"kokerinks"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"kokerinks"},"content":" taskStrings[i] \u003d this.tasks.get(i).toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"kokerinks"},"content":" return taskStrings;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"kokerinks"},"content":" public String[] getFileStrings() {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"kokerinks"},"content":" String[] storageStrings \u003d new String[this.tasks.size()];","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"kokerinks"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"kokerinks"},"content":" storageStrings[i] \u003d this.tasks.get(i).toFileString();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kokerinks"},"content":" return storageStrings;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"kokerinks":57}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" protected String botName;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" protected Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" public Ui(String botName) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":" this.botName \u003d botName;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"____________________________________________________________%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" Error loading file. Creating new file...%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"____________________________________________________________%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"____________________________________________________________%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" Hello! I\u0027m %s%n\", botName);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" What can I do for you?%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"____________________________________________________________%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kokerinks"},"content":" public void showTaskList(String[] tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kokerinks"},"content":" System.out.print(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"kokerinks"},"content":" System.out.print(\" Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kokerinks"},"content":" for (int i \u003d 0; i \u003c tasks.length; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" %d.%s%n\", i + 1, tasks[i]);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"kokerinks"},"content":" public void showTaskMarked(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"____________________________________________________________%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" Nice! I\u0027ve marked this task as done:%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" %s%n\", task);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"kokerinks"},"content":" public void showTaskUnmarked(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"____________________________________________________________%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" OK, I\u0027ve marked this task as not done yet:%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" %s%n\", task);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"kokerinks"},"content":" public void showTaskAdded(Task task, int len) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"kokerinks"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"kokerinks"},"content":" System.out.println( \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"kokerinks"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"kokerinks"},"content":" System.out.println(\"Now you have \" + len + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"kokerinks"},"content":" public void showTaskDeleted(Task task, int len) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"____________________________________________________________%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" Noted. I\u0027ve removed this task:%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" %s%n\", task);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", len);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"____________________________________________________________%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kokerinks"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"____________________________________________________________%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\" Bye. Hope to see you again soon!%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"kokerinks"},"content":" System.out.printf(\"____________________________________________________________%n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"kokerinks":80}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" protected LocalDateTime dueDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" public Deadline(String description, LocalDateTime newDueDate) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" this.dueDate \u003d newDueDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" public Deadline(String description, String newDueDate) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" super(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":" this.dueDate \u003d LocalDateTime.parse(newDueDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" public String formattedDueDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":" return this.dueDate.format(DateTimeFormatter.ofPattern(this.dateTimeFormat));","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.formattedDueDate());","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" return String.format(\"D,%s,%s\", super.toFileString(), this.dueDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kokerinks":32}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" protected LocalDateTime startDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":" protected LocalDateTime endDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" public Event (String description, LocalDateTime newStartDate, LocalDateTime newEndDate) {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":" this.startDate \u003d newStartDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" this.endDate \u003d newEndDate;","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" public Event (String description, String newStartDate, String newEndDate) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":" super(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" this.startDate \u003d LocalDateTime.parse(newStartDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":" this.endDate \u003d LocalDateTime.parse(newEndDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":" public String formattedStartDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":" return this.startDate.format(DateTimeFormatter.ofPattern(this.dateTimeFormat));","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" public String formattedEndDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":" return this.endDate.format(DateTimeFormatter.ofPattern(this.dateTimeFormat));","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"kokerinks"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"kokerinks"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.formattedStartDate(), this.formattedEndDate());","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"kokerinks"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"kokerinks"},"content":" return String.format(\"E,%s,%s,%s\", super.toFileString(), this.startDate, this.endDate);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kokerinks":39}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"abstract public class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" protected String dateTimeFormat \u003d \"MMM d yyyy h:mma\";","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"kokerinks"},"content":" return String.format(\"%s,%s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"kokerinks"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"kokerinks"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"kokerinks"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"kokerinks"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kokerinks":32}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":" return String.format(\"T,%s\", super.toFileString());","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kokerinks":18}},{"path":"src/test/java/duke/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" public void toString_normalInput_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(\"2021-08-24T18:00\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" assertEquals(\"[D][ ] read book (by: Aug 24 2021 6:00PM)\",","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":" new Deadline(\"read book\", dateTime).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" public void toFileString_normalInput_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(\"2021-08-24T18:00\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"kokerinks"},"content":" assertEquals(\"D, ,read book,2021-08-24T18:00\",","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kokerinks"},"content":" new Deadline (\"read book\", dateTime).toFileString());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"kokerinks":22}},{"path":"src/test/java/duke/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"public class TodoTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":" public void toString_normalInput_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":" assertEquals(\"[T][ ] read book\", new Todo(\"read book\").toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kokerinks"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kokerinks"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"kokerinks"},"content":" public void toFileString_normalInput_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kokerinks"},"content":" assertEquals(\"T, ,read book\", new Todo (\"read book\").toFileString());","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"kokerinks"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kokerinks"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"kokerinks":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kokerinks"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"kokerinks"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"kokerinks"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"kokerinks"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"kokerinks"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"kokerinks"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"kokerinks"},"content":"delete 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"kokerinks"},"content":"delete hello","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"kokerinks"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"kokerinks"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"kokerinks"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"kokerinks":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":"kokerinks"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"kokerinks":1,"-":20}}] diff --git a/kokerinks_ip_master/commits.json b/kokerinks_ip_master/commits.json index 9a760221..e12009f6 100644 --- a/kokerinks_ip_master/commits.json +++ b/kokerinks_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"kokerinks":[{"date":"2024-01-22","commitResults":[{"hash":"5d5891f090c624bba21f26616b4af48fbc24f327","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"33e3c7707c5891862a845af3a38298bcf3cc2954","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"fac72188d4bf296aa987d01c055a42e84492a847","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"ead8cf9c2af50b20cac218e113351d2b0791f0e0","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":9}}},{"hash":"2c897896bf658e2fcc57f69a47a7811ae09040fd","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":8}}},{"hash":"19043b6be8360e3e509ddca78c0c7293ec31e1b4","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}}]},{"date":"2024-01-23","commitResults":[{"hash":"3bdb634187c542ce3fcf42cdfeb2d53e493bcec3","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}}]},{"date":"2024-01-24","commitResults":[{"hash":"cf370210c7579a2890554c4fae43391476420174","isMergeCommit":false,"messageTitle":"Level 5 \u0026 Level 6","messageBody":"","tags":["Level-6","Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":114,"deletions":54}}}]},{"date":"2024-01-28","commitResults":[{"hash":"de4c565ef058dd8c9fa3e2424706960db7996314","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["status","Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":25},"md":{"insertions":9,"deletions":0}}},{"hash":"01d0e6993254c512c7f96a2069b723a9138e7295","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":17},"md":{"insertions":6,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"kokerinks":{"java":474,"md":12,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"kokerinks":13566.689},"authorDisplayNameMap":{"kokerinks":"CS2103T-T13-4 LIM ..IANG"}} +{"authorDailyContributionsMap":{"kokerinks":[{"date":"2024-01-22","commitResults":[{"hash":"5d5891f090c624bba21f26616b4af48fbc24f327","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":6}}},{"hash":"33e3c7707c5891862a845af3a38298bcf3cc2954","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"fac72188d4bf296aa987d01c055a42e84492a847","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"ead8cf9c2af50b20cac218e113351d2b0791f0e0","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":9}}},{"hash":"2c897896bf658e2fcc57f69a47a7811ae09040fd","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":126,"deletions":8}}},{"hash":"19043b6be8360e3e509ddca78c0c7293ec31e1b4","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}}]},{"date":"2024-01-23","commitResults":[{"hash":"3bdb634187c542ce3fcf42cdfeb2d53e493bcec3","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}}]},{"date":"2024-01-24","commitResults":[{"hash":"cf370210c7579a2890554c4fae43391476420174","isMergeCommit":false,"messageTitle":"Level 5 \u0026 Level 6","messageBody":"","tags":["Level-6","Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":114,"deletions":54}}}]},{"date":"2024-01-28","commitResults":[{"hash":"de4c565ef058dd8c9fa3e2424706960db7996314","isMergeCommit":false,"messageTitle":"Level 7. Save","messageBody":"","tags":["status","Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":25},"md":{"insertions":9,"deletions":0}}},{"hash":"01d0e6993254c512c7f96a2069b723a9138e7295","isMergeCommit":false,"messageTitle":"Level 8. Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":17},"md":{"insertions":6,"deletions":3}}}]},{"date":"2024-01-30","commitResults":[{"hash":"9ba7824a3564e0a441679f5e0007cd133a581249","isMergeCommit":false,"messageTitle":"Add classes Ui, Command, Parser, Storage, Tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":331,"deletions":0}}},{"hash":"56464122299e0602b54203606ae82278e8d3a9dd","isMergeCommit":false,"messageTitle":"Refactor Duke to use new classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":225}}},{"hash":"c4e0e328b46b1b1c2dd2adac0256bc2c2056c171","isMergeCommit":false,"messageTitle":"Move classes into packages duke and duke.task","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":15},"bat":{"insertions":1,"deletions":1},"md":{"insertions":4,"deletions":4}}},{"hash":"f8b810639848c4c76a587359dfa477095a7391b4","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9dc66a464e7e33ac8f7480fc79f2a09e6e83544d","isMergeCommit":false,"messageTitle":"Change code to be Java 11 compatible","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":102}}},{"hash":"60e78ba0b68488a5786269048b66d48ea2cda5fa","isMergeCommit":false,"messageTitle":"Add new valid dates into datetime formats","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"2ca1db28e88b045a4abd669c00f355dc240e4353","isMergeCommit":false,"messageTitle":"Add JUnits test classes for Todo and Deadline","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":2}}},{"hash":"8c4b41237c3935caa9b7cf32aadfd5a42652f3ae","isMergeCommit":false,"messageTitle":"Alter settings for build.gradle","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"kokerinks":{"java":721,"md":14,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":11}},"authorContributionVariance":{"kokerinks":71097.305},"authorDisplayNameMap":{"kokerinks":"CS2103T-T13-4 LIM ..IANG"}} diff --git a/lokidoki102_ip_master/authorship.json b/lokidoki102_ip_master/authorship.json index 0775a565..f21db507 100644 --- a/lokidoki102_ip_master/authorship.json +++ b/lokidoki102_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"public enum Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":" INSERT_TODO, VIEW_LIST, INSERT_DEADLINE, INSERT_EVENT, SET_MARK, SET_UNMARK, EXIT, DELETE_TASK, WHAT;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":" public static Command parseCommand(String in) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":" in \u003d in.toLowerCase();","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":" switch (in) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":" return INSERT_TODO;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":" return VIEW_LIST;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":" return INSERT_DEADLINE;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":" return INSERT_EVENT;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" return SET_MARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" return SET_UNMARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" case \"bye\":","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" return EXIT;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":" return DELETE_TASK;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" return WHAT;","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"lokidoki102":28}},{"path":"src/main/java/CommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":" public CommandException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"lokidoki102":5}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" private final static String indentation \u003d \" \".repeat(3);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":" private final static String subIndentation \u003d indentation + \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":" private final static String divider \u003d \"_\".repeat(60);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" private final static String logo \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" \" _ _ \\n\" + \" | | _ _ ___| | ___ _ \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" + \" | | | | | |/ __| |/ / | | | |\\\\__/,| (`\\\\\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" + \" | |__| |_| | (__| \u003c| |_| | _.|o o |_ ) )\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" + \" |_____\\\\__,_|\\\\___|_|\\\\_\\\\\\\\__, | -(((---(((--------\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":" + \" |___/ \";","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" printOutput(logo, \"Hello! I\u0027m Lucky the cat\", \"What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"lokidoki102"},"content":" if (new File(\"src/main/java/storage/data.txt\").exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"lokidoki102"},"content":" tasks \u003d Storage.readFromStorage();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"lokidoki102"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"lokidoki102"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"lokidoki102"},"content":" boolean isChatting \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"lokidoki102"},"content":" Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"lokidoki102"},"content":" while (isChatting) {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"lokidoki102"},"content":" String[] input \u003d sc.nextLine().split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"lokidoki102"},"content":" command \u003d Command.parseCommand(input[0]);","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"lokidoki102"},"content":" switch (command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"lokidoki102"},"content":" case VIEW_LIST:","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"lokidoki102"},"content":" printList(tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"lokidoki102"},"content":" case EXIT:","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"lokidoki102"},"content":" exit();","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"lokidoki102"},"content":" case SET_MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"lokidoki102"},"content":" updateMarkStatus(true, tasks, input);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"lokidoki102"},"content":" case SET_UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"lokidoki102"},"content":" updateMarkStatus(false, tasks, input);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"lokidoki102"},"content":" case INSERT_TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"lokidoki102"},"content":" insertToDo(input, tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"lokidoki102"},"content":" case INSERT_DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"lokidoki102"},"content":" insertDeadline(input, tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"lokidoki102"},"content":" case INSERT_EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"lokidoki102"},"content":" insertEvent(input, tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"lokidoki102"},"content":" case DELETE_TASK:","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"lokidoki102"},"content":" deleteTask(tasks, input);","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"lokidoki102"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"I\u0027m sorry, but I have zero idea what you\u0027re asking from me...\");","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"lokidoki102"},"content":" sc.close();","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":103,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"lokidoki102"},"content":" public static void printOutput(String... msg) {","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"lokidoki102"},"content":" System.out.println(indentation + divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"lokidoki102"},"content":" for (String string : msg) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"lokidoki102"},"content":" System.out.println(subIndentation + string);","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"lokidoki102"},"content":" System.out.println(indentation + divider + \"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"lokidoki102"},"content":" public static void printList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"lokidoki102"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"lokidoki102"},"content":" int i \u003d 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"lokidoki102"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"lokidoki102"},"content":" sb.append(i + \".\" + task.toString() + \"\\n\" + subIndentation);","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"lokidoki102"},"content":" i++;","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Here are the tasks in your list:\", sb.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"lokidoki102"},"content":" public static void exit() {","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Goodbye my friend. See you soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"lokidoki102"},"content":" System.exit(0);","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"lokidoki102"},"content":" public static void updateMarkStatus(boolean isMark, ArrayList\u003cTask\u003e tasks, String[] input)","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"lokidoki102"},"content":" throws CommandException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"lokidoki102"},"content":" \"Please specify which task. (format: mark/unmark \u003ctask no.\u003e)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"lokidoki102"},"content":" if (!isInteger(input[1])) {","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(\"Task number not found! (format: mark/unmark \u003ctask no.\u003e)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"lokidoki102"},"content":" int index \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"lokidoki102"},"content":" // check if index is within bounds","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"lokidoki102"},"content":" if (index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(\"Task not found!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"lokidoki102"},"content":" if (isMark) {","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"lokidoki102"},"content":" // check if there\u0027s no change in status","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"lokidoki102"},"content":" if (tasks.get(index).getStatus()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"lokidoki102"},"content":" \"The task was already marked as done. I\u0027m not changing anything.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"lokidoki102"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"lokidoki102"},"content":" tasks.get(index).setStatus(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Nice! I\u0027ve marked this task as done:\", tasks.get(index).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"lokidoki102"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"lokidoki102"},"content":" // check if there\u0027s no change in status","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"lokidoki102"},"content":" if (!tasks.get(index).getStatus()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"lokidoki102"},"content":" \"The task you\u0027re unmarking was not marked to begin with... I\u0027m not changing anything.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"lokidoki102"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"lokidoki102"},"content":" tasks.get(index).setStatus(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"OK, I\u0027ve marked this task as not done yet: \",","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"lokidoki102"},"content":" tasks.get(index).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"lokidoki102"},"content":" Storage.writeToStorage(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"lokidoki102"},"content":" public static void insertToDo(String[] input, ArrayList\u003cTask\u003e tasks)","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"lokidoki102"},"content":" throws CommandException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"lokidoki102"},"content":" \"Please add the task description. (format: todo \u003ctask description\u003e)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"lokidoki102"},"content":" ToDo todoTask \u003d new ToDo(input[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"lokidoki102"},"content":" tasks.add(todoTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"lokidoki102"},"content":" Storage.writeToStorage(todoTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Got it. I\u0027ve added this task:\", indentation + todoTask.toString(),","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"lokidoki102"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"lokidoki102"},"content":" public static void insertDeadline(String[] input, ArrayList\u003cTask\u003e tasks)","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"lokidoki102"},"content":" throws CommandException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"lokidoki102"},"content":" String pattern \u003d \"([^/]+)\\\\s+/by\\\\s+([^/]+)\";","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"lokidoki102"},"content":" Pattern regex \u003d Pattern.compile(pattern);","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"lokidoki102"},"content":" \"Please enter the deadline details! (format: deadline \u003cyour task\u003e /by \u003cdate\u003e)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"lokidoki102"},"content":" Matcher matcher \u003d regex.matcher(input[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"lokidoki102"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(\"Wrong format! (format: deadline \u003cyour task\u003e /by \u003cdate\u003e)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":203,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"lokidoki102"},"content":" String[] deadlineDetails \u003d input[1].split(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"lokidoki102"},"content":" Deadline deadlineTask \u003d new Deadline(deadlineDetails[0].trim(), deadlineDetails[1].trim());","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"lokidoki102"},"content":" tasks.add(deadlineTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"lokidoki102"},"content":" Storage.writeToStorage(deadlineTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Got it. I\u0027ve added this task:\", indentation + deadlineTask.toString(),","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"lokidoki102"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":215,"author":{"gitId":"lokidoki102"},"content":" public static void insertEvent(String[] input, ArrayList\u003cTask\u003e tasks)","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"lokidoki102"},"content":" throws CommandException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"lokidoki102"},"content":" String pattern \u003d \"([^/]+)\\\\s+/from\\\\s+([^/]+)\\\\s+/to\\\\s+([^/]+)\";","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"lokidoki102"},"content":" Pattern regex \u003d Pattern.compile(pattern);","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"lokidoki102"},"content":" // check if it doesnt follow the format of event \u003csome string\u003e /from \u003csome","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"lokidoki102"},"content":" // string\u003e /to \u003csome string\u003e","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":225,"author":{"gitId":"lokidoki102"},"content":" \"Please enter the event details! (format: event \u003cyour task\u003e /from \u003cdate\u003e /to)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":226,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"lokidoki102"},"content":" Matcher matcher \u003d regex.matcher(input[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"lokidoki102"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":232,"author":{"gitId":"lokidoki102"},"content":" \"Wrong format! (format: event \u003cyour task\u003e /from \u003cdate\u003e /to)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":233,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"lokidoki102"},"content":" String[] eventDetails \u003d input[1].split(\"/from|/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":236,"author":{"gitId":"lokidoki102"},"content":" Event eventTask \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":237,"author":{"gitId":"lokidoki102"},"content":" new Event(eventDetails[0].trim(), eventDetails[1].trim(), eventDetails[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":238,"author":{"gitId":"lokidoki102"},"content":" tasks.add(eventTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":239,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"lokidoki102"},"content":" Storage.writeToStorage(eventTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Got it. I\u0027ve added this task:\", indentation + eventTask.toString(),","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"lokidoki102"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":245,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"lokidoki102"},"content":" public static void deleteTask(ArrayList\u003cTask\u003e tasks, String[] input)","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"lokidoki102"},"content":" throws CommandException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":250,"author":{"gitId":"lokidoki102"},"content":" \"Please specify which task to delete. (format: delete \u003ctask no.\u003e)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":251,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":252,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Noted. I\u0027ve removed this task: \",","lastModifiedDate":"2024-01-29"},{"lineNumber":254,"author":{"gitId":"lokidoki102"},"content":" tasks.get(Integer.parseInt(input[1]) - 1).toString(),","lastModifiedDate":"2024-01-29"},{"lineNumber":255,"author":{"gitId":"lokidoki102"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"lokidoki102"},"content":" tasks.remove(Integer.parseInt(input[1]) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"lokidoki102"},"content":" Storage.writeToStorage(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":261,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":262,"author":{"gitId":"lokidoki102"},"content":" public static boolean isInteger(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":263,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":264,"author":{"gitId":"lokidoki102"},"content":" Integer.parseInt(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":265,"author":{"gitId":"lokidoki102"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":266,"author":{"gitId":"lokidoki102"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":267,"author":{"gitId":"lokidoki102"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":268,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"lokidoki102":266}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":" private final static String FILE_PATH \u003d \"src/main/java/storage/data.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" private final static String DELIMITER \u003d \"~\";","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" public Storage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":" public static ArrayList\u003cTask\u003e readFromStorage() throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"lokidoki102"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"lokidoki102"},"content":" String[] input \u003d sc.nextLine().split(DELIMITER);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"lokidoki102"},"content":" Task task \u003d parseInput(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"lokidoki102"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"lokidoki102"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"lokidoki102"},"content":" sc.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"lokidoki102"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"lokidoki102"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"lokidoki102"},"content":" throw new FileNotFoundException(\"Unable to find the file path...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"lokidoki102"},"content":" private static Task parseInput(String[] input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"lokidoki102"},"content":" String command \u003d input[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"lokidoki102"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"lokidoki102"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"lokidoki102"},"content":" // format: event~status~description~\u003cdate\u003e~\u003cdate\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 5 || !(input[1].equals(\"0\") || input[1].equals(\"1\"))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"lokidoki102"},"content":" // corrupted data","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"lokidoki102"},"content":" System.out.println(\"Error in loading an event task...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"lokidoki102"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"lokidoki102"},"content":" Event event \u003d new Event(input[2], input[3], input[4]);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"lokidoki102"},"content":" event.setStatus(input[1].equals(\"1\") ? true : false);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"lokidoki102"},"content":" return event;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"lokidoki102"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"lokidoki102"},"content":" // format: todo~status~description","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 3 || !(input[1].equals(\"0\") || input[1].equals(\"1\"))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"lokidoki102"},"content":" // corrupted data","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"lokidoki102"},"content":" System.out.println(\"Error in loading a todo task...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"lokidoki102"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"lokidoki102"},"content":" ToDo todo \u003d new ToDo(input[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"lokidoki102"},"content":" todo.setStatus(input[1].equals(\"1\") ? true : false);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"lokidoki102"},"content":" return todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"lokidoki102"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"lokidoki102"},"content":" // format: deadline~status~description~\u003cdate\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 4 || !(input[1].equals(\"0\") || input[1].equals(\"1\"))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"lokidoki102"},"content":" // corrupted data","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"lokidoki102"},"content":" System.out.println(\"Error in loading a deadline task...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"lokidoki102"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"lokidoki102"},"content":" Deadline deadline \u003d new Deadline(input[2], input[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"lokidoki102"},"content":" deadline.setStatus(input[1].equals(\"1\") ? true : false);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"lokidoki102"},"content":" return deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"lokidoki102"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"lokidoki102"},"content":" System.out.println(\"Error in loading task: \" + input[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"lokidoki102"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"lokidoki102"},"content":" public static void writeToStorage(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"lokidoki102"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"lokidoki102"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"lokidoki102"},"content":" fw.write(task.toStorageString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"lokidoki102"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"lokidoki102"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"lokidoki102"},"content":" throw new IOException();","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"lokidoki102"},"content":" public static void writeToStorage(Task task) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"lokidoki102"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"lokidoki102"},"content":" fw.write(task.toStorageString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"lokidoki102"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"lokidoki102"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"lokidoki102"},"content":" throw new IOException();","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"lokidoki102":116}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" int statusValue \u003d this.getStatus() ? 1 : 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":" return String.format(\"deadline~%d~%s~%s\", statusValue,","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" this.description, this.by);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lokidoki102":25}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":" int statusValue \u003d this.getStatus() ? 1 : 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" return String.format(\"event~%d~%s~%s~%s\", statusValue,","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" this.description, this.from, this.to);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \"to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lokidoki102":26}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":" protected final String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":" private boolean status;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":" public void setStatus(boolean status) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":" this.status \u003d status;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" return this.status;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" return \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" String checkBox \u003d \"[ ]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":" if (status)","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"lokidoki102"},"content":" checkBox \u003d \"[X]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"lokidoki102"},"content":" return checkBox + \" \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lokidoki102":33}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":" int statusValue \u003d this.getStatus() ? 1 : 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":" return String.format(\"todo~%d~%s\", statusValue,","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" this.description);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lokidoki102":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"todo finish A-TextUiTesting","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"deadline ip week 1 /by tomorrow","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"event cs2103 tutorial /from fri 9 am /to fri 10 am","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lokidoki102":12}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":"import storage.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":"import utilities.DateTimeUtility;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" private final static String indentation \u003d \" \".repeat(3);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" private final static String subIndentation \u003d indentation + \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" private final static String divider \u003d \"_\".repeat(60);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":" private final static String logo \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":" \" _ _ \\n\" + \" | | _ _ ___| | ___ _ \\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":" + \" | | | | | |/ __| |/ / | | | |\\\\__/,| (`\\\\\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" + \" | |__| |_| | (__| \u003c| |_| | _.|o o |_ ) )\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" + \" |_____\\\\__,_|\\\\___|_|\\\\_\\\\\\\\__, | -(((---(((--------\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":" + \" |___/ \";","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"lokidoki102"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"lokidoki102"},"content":" printOutput(logo, \"Hello! I\u0027m Lucky the cat\", \"What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"lokidoki102"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"lokidoki102"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"lokidoki102"},"content":" if (new File(\"src/main/java/storage/data.txt\").exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"lokidoki102"},"content":" tasks \u003d Storage.readFromStorage();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"lokidoki102"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"lokidoki102"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"lokidoki102"},"content":" boolean isChatting \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"lokidoki102"},"content":" Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"lokidoki102"},"content":" while (isChatting) {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"lokidoki102"},"content":" String[] input \u003d sc.nextLine().trim().split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"lokidoki102"},"content":" command \u003d Command.parseCommand(input[0]);","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"lokidoki102"},"content":" switch (command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"lokidoki102"},"content":" case VIEW_LIST:","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"lokidoki102"},"content":" printList(tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"lokidoki102"},"content":" case EXIT:","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"lokidoki102"},"content":" exit();","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"lokidoki102"},"content":" case SET_MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"lokidoki102"},"content":" updateMarkStatus(true, tasks, input);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"lokidoki102"},"content":" case SET_UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"lokidoki102"},"content":" updateMarkStatus(false, tasks, input);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"lokidoki102"},"content":" case INSERT_TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"lokidoki102"},"content":" insertToDo(input, tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"lokidoki102"},"content":" case INSERT_DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"lokidoki102"},"content":" insertDeadline(input, tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"lokidoki102"},"content":" case INSERT_EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"lokidoki102"},"content":" insertEvent(input, tasks);","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"lokidoki102"},"content":" case DELETE_TASK:","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"lokidoki102"},"content":" deleteTask(tasks, input);","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"lokidoki102"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"lokidoki102"},"content":" printOutput(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"lokidoki102"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"I\u0027m sorry, but I have zero idea what you\u0027re asking from me...\");","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"lokidoki102"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"lokidoki102"},"content":" sc.close();","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":108,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"lokidoki102"},"content":" public static void printOutput(String... msg) {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"lokidoki102"},"content":" System.out.println(indentation + divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"lokidoki102"},"content":" for (String string : msg) {","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"lokidoki102"},"content":" System.out.println(subIndentation + string);","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"lokidoki102"},"content":" System.out.println(indentation + divider + \"\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"lokidoki102"},"content":" public static void printList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"lokidoki102"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"lokidoki102"},"content":" int i \u003d 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"lokidoki102"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"lokidoki102"},"content":" sb.append(i + \".\" + task.toString() + \"\\n\" + subIndentation);","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"lokidoki102"},"content":" i++;","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Here are the tasks in your list:\", sb.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"lokidoki102"},"content":" public static void exit() {","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Goodbye my friend. See you soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"lokidoki102"},"content":" System.exit(0);","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"lokidoki102"},"content":" public static void updateMarkStatus(boolean isMark, ArrayList\u003cTask\u003e tasks, String[] input)","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"lokidoki102"},"content":" throws CommandException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"lokidoki102"},"content":" \"Please specify which task. (format: mark/unmark \u003ctask no.\u003e)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"lokidoki102"},"content":" if (!isInteger(input[1])) {","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(\"Task number not found! (format: mark/unmark \u003ctask no.\u003e)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"lokidoki102"},"content":" int index \u003d Integer.parseInt(input[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"lokidoki102"},"content":" // check if index is within bounds","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"lokidoki102"},"content":" if (index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(\"Task not found!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"lokidoki102"},"content":" if (isMark) {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"lokidoki102"},"content":" // check if there\u0027s no change in status","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"lokidoki102"},"content":" if (tasks.get(index).getStatus()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"lokidoki102"},"content":" \"The task was already marked as done. I\u0027m not changing anything.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"lokidoki102"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"lokidoki102"},"content":" tasks.get(index).setStatus(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Nice! I\u0027ve marked this task as done:\", tasks.get(index).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"lokidoki102"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"lokidoki102"},"content":" // check if there\u0027s no change in status","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"lokidoki102"},"content":" if (!tasks.get(index).getStatus()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"lokidoki102"},"content":" \"The task you\u0027re unmarking was not marked to begin with... I\u0027m not changing anything.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"lokidoki102"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"lokidoki102"},"content":" tasks.get(index).setStatus(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"OK, I\u0027ve marked this task as not done yet: \",","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"lokidoki102"},"content":" tasks.get(index).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"lokidoki102"},"content":" Storage.writeToStorage(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"lokidoki102"},"content":" public static void insertToDo(String[] input, ArrayList\u003cTask\u003e tasks)","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"lokidoki102"},"content":" throws CommandException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"lokidoki102"},"content":" \"Please add the task description. (format: todo \u003ctask description\u003e)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"lokidoki102"},"content":" ToDo todoTask \u003d new ToDo(input[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"lokidoki102"},"content":" tasks.add(todoTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"lokidoki102"},"content":" Storage.writeToStorage(todoTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Got it. I\u0027ve added this task:\", indentation + todoTask.toString(),","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"lokidoki102"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"lokidoki102"},"content":" public static void insertDeadline(String[] input, ArrayList\u003cTask\u003e tasks)","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"lokidoki102"},"content":" throws CommandException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"lokidoki102"},"content":" String pattern \u003d \"([^/]+)\\\\s+/by\\\\s+(\\\\d{1,2}/\\\\d{1,2}/\\\\d{4}\\\\s+\\\\d{4})\";","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"lokidoki102"},"content":" Pattern regex \u003d Pattern.compile(pattern);","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":201,"author":{"gitId":"lokidoki102"},"content":" \"Please enter the deadline details! (format: deadline \u003cyour task\u003e /by \u003cdd/MM/yyyy HHmm\u003e)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"lokidoki102"},"content":" Matcher matcher \u003d regex.matcher(input[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"lokidoki102"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"lokidoki102"},"content":" \"Wrong format! (format: deadline \u003cyour task\u003e /by \u003cdd/MM/yyyy HHmm\u003e)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":211,"author":{"gitId":"lokidoki102"},"content":" String[] deadlineDetails \u003d input[1].split(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":212,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"lokidoki102"},"content":" if (!DateTimeUtility.isValidDateTime(deadlineDetails[1])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"lokidoki102"},"content":" \"Datetime is in the wrong format. (format: deadline \u003cyour task\u003e /by \u003cdd/MM/yyyy HHmm\u003e)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"lokidoki102"},"content":" Deadline deadlineTask \u003d new Deadline(deadlineDetails[0].trim(),","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"lokidoki102"},"content":" DateTimeUtility.parseDateTime(deadlineDetails[1].trim()));","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"lokidoki102"},"content":" tasks.add(deadlineTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"lokidoki102"},"content":" Storage.writeToStorage(deadlineTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Got it. I\u0027ve added this task:\", indentation + deadlineTask.toString(),","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"lokidoki102"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":229,"author":{"gitId":"lokidoki102"},"content":" public static void insertEvent(String[] input, ArrayList\u003cTask\u003e tasks)","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"lokidoki102"},"content":" throws CommandException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"lokidoki102"},"content":" String pattern \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"lokidoki102"},"content":" \"([^/]+)\\\\s+/from\\\\s+(\\\\d{1,2}/\\\\d{1,2}/\\\\d{4}\\\\s+\\\\d{4})\\\\s+/to\\\\s+(\\\\d{1,2}/\\\\d{1,2}/\\\\d{4}\\\\s+\\\\d{4})\";","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"lokidoki102"},"content":" Pattern regex \u003d Pattern.compile(pattern);","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"lokidoki102"},"content":" // check if it doesnt follow the format of event \u003csome string\u003e /from \u003csome","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"lokidoki102"},"content":" // string\u003e /to \u003csome string\u003e","lastModifiedDate":"2024-01-25"},{"lineNumber":239,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":241,"author":{"gitId":"lokidoki102"},"content":" \"Please enter the event details! (format: event \u003cyour task\u003e /from \u003cdd/MM/yyyy HHmm\u003e /to \u003cdd/MM/yyyy HHmm\u003e)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"lokidoki102"},"content":" Matcher matcher \u003d regex.matcher(input[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"lokidoki102"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":248,"author":{"gitId":"lokidoki102"},"content":" \"Wrong format! (format: event \u003cyour task\u003e /from \u003cdd/MM/yyyy HHmm\u003e /to \u003cdd/MM/yyyy HHmm\u003e)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":250,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":251,"author":{"gitId":"lokidoki102"},"content":" String[] eventDetails \u003d input[1].split(\"/from|/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":252,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"lokidoki102"},"content":" if (!DateTimeUtility.isValidDateTime(eventDetails[1], eventDetails[2])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"lokidoki102"},"content":" \"Datetime is in the wrong format. (format: event \u003cyour task\u003e /from \u003cdd/MM/yyyy HHmm\u003e /to \u003cdd/MM/yyyy HHmm\u003e)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"lokidoki102"},"content":" Event eventTask \u003d new Event(eventDetails[0].trim(),","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"lokidoki102"},"content":" DateTimeUtility.parseDateTime(eventDetails[1].trim()),","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"lokidoki102"},"content":" DateTimeUtility.parseDateTime(eventDetails[2].trim()));","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"lokidoki102"},"content":" tasks.add(eventTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":262,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"lokidoki102"},"content":" Storage.writeToStorage(eventTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Got it. I\u0027ve added this task:\", indentation + eventTask.toString(),","lastModifiedDate":"2024-01-25"},{"lineNumber":266,"author":{"gitId":"lokidoki102"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":267,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":268,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":269,"author":{"gitId":"lokidoki102"},"content":" public static void deleteTask(ArrayList\u003cTask\u003e tasks, String[] input)","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"lokidoki102"},"content":" throws CommandException, IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":272,"author":{"gitId":"lokidoki102"},"content":" throw new CommandException(","lastModifiedDate":"2024-01-29"},{"lineNumber":273,"author":{"gitId":"lokidoki102"},"content":" \"Please specify which task to delete. (format: delete \u003ctask no.\u003e)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":274,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":275,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":276,"author":{"gitId":"lokidoki102"},"content":" printOutput(\"Noted. I\u0027ve removed this task: \",","lastModifiedDate":"2024-01-29"},{"lineNumber":277,"author":{"gitId":"lokidoki102"},"content":" tasks.get(Integer.parseInt(input[1]) - 1).toString(),","lastModifiedDate":"2024-01-29"},{"lineNumber":278,"author":{"gitId":"lokidoki102"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":279,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"lokidoki102"},"content":" tasks.remove(Integer.parseInt(input[1]) - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"lokidoki102"},"content":" Storage.writeToStorage(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":283,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":284,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":285,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"lokidoki102"},"content":" public static boolean isInteger(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":287,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":288,"author":{"gitId":"lokidoki102"},"content":" Integer.parseInt(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":289,"author":{"gitId":"lokidoki102"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":290,"author":{"gitId":"lokidoki102"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":291,"author":{"gitId":"lokidoki102"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":292,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"lokidoki102":290}},{"path":"src/main/java/commands/CommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":" public CommandException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"lokidoki102":7}},{"path":"src/main/java/commands/CommandsEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"public enum Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":" INSERT_TODO, VIEW_LIST, INSERT_DEADLINE, INSERT_EVENT, SET_MARK, SET_UNMARK, EXIT, DELETE_TASK, WHAT;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":" public static Command parseCommand(String in) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":" in \u003d in.toLowerCase();","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":" switch (in) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":" return INSERT_TODO;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":" return VIEW_LIST;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":" return INSERT_DEADLINE;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" return INSERT_EVENT;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" return SET_MARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" return SET_UNMARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":" case \"bye\":","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":" return EXIT;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" return DELETE_TASK;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" default:","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":" return WHAT;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"lokidoki102":30}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":"import utilities.DateTimeUtility;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" private final static String FILE_PATH \u003d \"src/main/java/storage/data.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" private final static String DELIMITER \u003d \"~\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" public Storage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" public static ArrayList\u003cTask\u003e readFromStorage() throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"lokidoki102"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"lokidoki102"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"lokidoki102"},"content":" String[] input \u003d sc.nextLine().split(DELIMITER);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"lokidoki102"},"content":" Task task \u003d parseInput(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"lokidoki102"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"lokidoki102"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"lokidoki102"},"content":" sc.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"lokidoki102"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"lokidoki102"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"lokidoki102"},"content":" throw new FileNotFoundException(\"Unable to find the file path...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"lokidoki102"},"content":" private static Task parseInput(String[] input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"lokidoki102"},"content":" String command \u003d input[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"lokidoki102"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"lokidoki102"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"lokidoki102"},"content":" // format: event~status~description~\u003cdate\u003e~\u003cdate\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 5 || !(input[1].equals(\"0\") || input[1].equals(\"1\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"lokidoki102"},"content":" || !DateTimeUtility.isValidDateTime(input[3], input[4])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"lokidoki102"},"content":" // corrupted data","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"lokidoki102"},"content":" System.out.println(\"Error in loading an event task...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"lokidoki102"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"lokidoki102"},"content":" Event event \u003d new Event(input[2], DateTimeUtility.parseDateTime(input[3]),","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"lokidoki102"},"content":" DateTimeUtility.parseDateTime(input[4]));","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"lokidoki102"},"content":" event.setStatus(input[1].equals(\"1\") ? true : false);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"lokidoki102"},"content":" return event;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"lokidoki102"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"lokidoki102"},"content":" // format: todo~status~description","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 3 || !(input[1].equals(\"0\") || input[1].equals(\"1\"))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"lokidoki102"},"content":" // corrupted data","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"lokidoki102"},"content":" System.out.println(\"Error in loading a todo task...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"lokidoki102"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"lokidoki102"},"content":" ToDo todo \u003d new ToDo(input[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"lokidoki102"},"content":" todo.setStatus(input[1].equals(\"1\") ? true : false);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"lokidoki102"},"content":" return todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"lokidoki102"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"lokidoki102"},"content":" // format: deadline~status~description~\u003cdate\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"lokidoki102"},"content":" if (input.length \u003c 4 || !(input[1].equals(\"0\") || input[1].equals(\"1\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"lokidoki102"},"content":" || !DateTimeUtility.isValidDateTime(input[3])) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"lokidoki102"},"content":" // corrupted data","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"lokidoki102"},"content":" System.out.println(\"Error in loading a deadline task...\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"lokidoki102"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"lokidoki102"},"content":" Deadline deadline \u003d new Deadline(input[2], DateTimeUtility.parseDateTime(input[3]));","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"lokidoki102"},"content":" deadline.setStatus(input[1].equals(\"1\") ? true : false);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"lokidoki102"},"content":" return deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"lokidoki102"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"lokidoki102"},"content":" System.out.println(\"Error in loading task: \" + input[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"lokidoki102"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"lokidoki102"},"content":" public static void writeToStorage(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"lokidoki102"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"lokidoki102"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"lokidoki102"},"content":" fw.write(task.toStorageString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"lokidoki102"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"lokidoki102"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"lokidoki102"},"content":" throw new IOException();","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"lokidoki102"},"content":" public static void writeToStorage(Task task) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"lokidoki102"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"lokidoki102"},"content":" fw.write(task.toStorageString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"lokidoki102"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"lokidoki102"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"lokidoki102"},"content":" throw new IOException();","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"lokidoki102":120}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"import utilities.DateTimeUtility;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" int statusValue \u003d this.getStatus() ? 1 : 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" return String.format(\"deadline~%d~%s~%s\", statusValue,","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" this.description, DateTimeUtility.inputFormat(this.by));","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":" //TODO format the date","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateTimeUtility.outputFormat(this.by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lokidoki102":29}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"import utilities.DateTimeUtility;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" int statusValue \u003d this.getStatus() ? 1 : 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" return String.format(\"event~%d~%s~%s~%s\", statusValue,","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":" this.description, DateTimeUtility.inputFormat(this.from), DateTimeUtility.inputFormat(this.to));","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" //TODO format the date","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":" return \"[E]\" + super.toString() + \" (from: \" + DateTimeUtility.outputFormat(this.from) + \" to: \" + DateTimeUtility.outputFormat(this.to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lokidoki102":30}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":" protected final String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":" private boolean status;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":" public void setStatus(boolean status) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":" this.status \u003d status;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" return this.status;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" return \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" String checkBox \u003d \"[ ]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":" if (status)","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"lokidoki102"},"content":" checkBox \u003d \"[X]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"lokidoki102"},"content":" return checkBox + \" \" + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lokidoki102":33}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package tasks;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":" public String toStorageString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":" int statusValue \u003d this.getStatus() ? 1 : 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":" return String.format(\"todo~%d~%s\", statusValue,","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" this.description);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lokidoki102":21}},{"path":"src/main/java/utilities/DateTimeUtility.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"package utilities;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"public class DateTimeUtility {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":" final static private String FORMAT \u003d \"d/M/yyyy HHmm\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":" public static boolean isValidDateTime(String dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":" dateTime \u003d dateTime.trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"lokidoki102"},"content":" LocalDateTime.parse(dateTime, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"lokidoki102"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"lokidoki102"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"lokidoki102"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"lokidoki102"},"content":" public static boolean isValidDateTime(String fromDateTime, String toDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"lokidoki102"},"content":" fromDateTime \u003d fromDateTime.trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"lokidoki102"},"content":" toDateTime \u003d fromDateTime.trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"lokidoki102"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"lokidoki102"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"lokidoki102"},"content":" LocalDateTime from \u003d LocalDateTime.parse(fromDateTime, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"lokidoki102"},"content":" LocalDateTime to \u003d LocalDateTime.parse(toDateTime, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"lokidoki102"},"content":" return (from.isBefore(to) || from.isEqual(to)) ? true : false;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"lokidoki102"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"lokidoki102"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"lokidoki102"},"content":" public static String outputFormat(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"lokidoki102"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(\"dd MMMM yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"lokidoki102"},"content":" public static String inputFormat(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"lokidoki102"},"content":" return dateTime.format(DateTimeFormatter.ofPattern(FORMAT));","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"lokidoki102"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"lokidoki102"},"content":" public static LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"lokidoki102"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(FORMAT);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"lokidoki102"},"content":" return LocalDateTime.parse(dateTime, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"lokidoki102"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"lokidoki102"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"lokidoki102":46}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lokidoki102"},"content":"todo finish A-TextUiTesting","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lokidoki102"},"content":"deadline ip week 1 /by tomorrow","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lokidoki102"},"content":"event cs2103 tutorial /from fri 9 am /to fri 10 am","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lokidoki102"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lokidoki102"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lokidoki102"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lokidoki102"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lokidoki102"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lokidoki102"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lokidoki102"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"lokidoki102"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lokidoki102"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lokidoki102":12}}] diff --git a/lokidoki102_ip_master/commits.json b/lokidoki102_ip_master/commits.json index 846a87f1..d4ef30e8 100644 --- a/lokidoki102_ip_master/commits.json +++ b/lokidoki102_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"lokidoki102":[{"date":"2024-01-23","commitResults":[{"hash":"a4d75d55ff12bf41ad86e0efbf1bdcf1df7efb0c","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}},{"hash":"1efe95994b5bf053b513ce39af79a319d56915fc","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":13}}},{"hash":"25f8044843e348e0ddae875ae15a5db7ba4edbb4","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"29e087c0dab1edb36fae7e7e0eebe8d482f7abdd","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":7}}},{"hash":"165069312efe468bd1879008fc1f7f844baa5cf4","isMergeCommit":false,"messageTitle":"Added enums for different command types","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":12}}},{"hash":"c2da70d0f34cb6b948c00706bd3d3c5969e8d9f8","isMergeCommit":false,"messageTitle":"Added an output printer method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":40}}}]},{"date":"2024-01-24","commitResults":[{"hash":"ace29e9dc8106d96ef9e17c1a133402d314aef5d","isMergeCommit":false,"messageTitle":"Level-4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":25}}},{"hash":"67491459f0091d9aa02fc800d078991c60c42afb","isMergeCommit":false,"messageTitle":"Cleaned up codes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":24}}},{"hash":"d841517ced6289ce1fc660a406b96c7498dd657f","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0}}},{"hash":"a26185df548cbea2611213b2e00cb89d9020d812","isMergeCommit":false,"messageTitle":"Moved each command\u0027s logic to its own method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":30}}},{"hash":"47b53cc25f33bd8b279fd9a0306eb8e0dc585521","isMergeCommit":false,"messageTitle":"Added input validation for mark/unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":6}}},{"hash":"9371e9be8600ed4eb57a673c6fe7d2a789f90a3b","isMergeCommit":false,"messageTitle":"Added a checker for missing /by for deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"b3660d896cc0aaeb54e658ddf9442030ff465f2b","isMergeCommit":false,"messageTitle":"Added checker for array length","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"786c03627219614afb1debe0da5bab3df68d1cb9","isMergeCommit":false,"messageTitle":"Added a input format checker for event command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":5}}},{"hash":"f0f2246733f2e5da13ff1aaf454d90c9ce612b06","isMergeCommit":false,"messageTitle":"Added error handler for invalid command","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":7}}},{"hash":"6a106b9ef04d51eeb7076d6e2a40180117446933","isMergeCommit":false,"messageTitle":"Added delete command","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"99d8d06274ec090f558edac59f9a3019018d2272","isMergeCommit":false,"messageTitle":"Cleaned up codes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}}]},{"date":"2024-01-29","commitResults":[{"hash":"02cdec90e33243b07e1941e17f985bfc157297a6","isMergeCommit":false,"messageTitle":"Refactor basic indentation from 2 spaces to 4 spaces","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":252,"deletions":249}}},{"hash":"95207465ba7c586eb32883b09c240dbede4e8b77","isMergeCommit":false,"messageTitle":"Refactor code to use exception when handling errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":36}}}]},{"date":"2024-01-30","commitResults":[{"hash":"cf3f3f949c117f31f9c0eb2db07d7603350f2718","isMergeCommit":false,"messageTitle":"Add method to read from .txt file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":0}}},{"hash":"2a795a2359a9a0409340c233c7934af2dbd93b1f","isMergeCommit":false,"messageTitle":"Add method to write to a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":19}}},{"hash":"5af5026634de82165ca3bee6408065a697270b11","isMergeCommit":false,"messageTitle":"Overload the filewriter method to allow the writing of single task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"f8f904f1c2b7fe46b1e120241f2afb3a43843eda","isMergeCommit":false,"messageTitle":"Integrate file saving and writing methods into duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":16}}},{"hash":"480d8b712a917ce2314de11347236ed3a0892410","isMergeCommit":false,"messageTitle":"Add a handler for file not found error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}},{"hash":"521eab0d41c51e6d06a1bca6dd36f2225986cd66","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lokidoki102":{"java":520,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":12}},"authorContributionVariance":{"lokidoki102":34460.14},"authorDisplayNameMap":{"lokidoki102":"LIM ..RATO"}} +{"authorDailyContributionsMap":{"lokidoki102":[{"date":"2024-01-23","commitResults":[{"hash":"a4d75d55ff12bf41ad86e0efbf1bdcf1df7efb0c","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}},{"hash":"1efe95994b5bf053b513ce39af79a319d56915fc","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":13}}},{"hash":"25f8044843e348e0ddae875ae15a5db7ba4edbb4","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"29e087c0dab1edb36fae7e7e0eebe8d482f7abdd","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":7}}},{"hash":"165069312efe468bd1879008fc1f7f844baa5cf4","isMergeCommit":false,"messageTitle":"Added enums for different command types","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":12}}},{"hash":"c2da70d0f34cb6b948c00706bd3d3c5969e8d9f8","isMergeCommit":false,"messageTitle":"Added an output printer method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":40}}}]},{"date":"2024-01-24","commitResults":[{"hash":"ace29e9dc8106d96ef9e17c1a133402d314aef5d","isMergeCommit":false,"messageTitle":"Level-4: ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":25}}},{"hash":"67491459f0091d9aa02fc800d078991c60c42afb","isMergeCommit":false,"messageTitle":"Cleaned up codes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":24}}},{"hash":"d841517ced6289ce1fc660a406b96c7498dd657f","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0}}},{"hash":"a26185df548cbea2611213b2e00cb89d9020d812","isMergeCommit":false,"messageTitle":"Moved each command\u0027s logic to its own method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":30}}},{"hash":"47b53cc25f33bd8b279fd9a0306eb8e0dc585521","isMergeCommit":false,"messageTitle":"Added input validation for mark/unmark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":6}}},{"hash":"9371e9be8600ed4eb57a673c6fe7d2a789f90a3b","isMergeCommit":false,"messageTitle":"Added a checker for missing /by for deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"b3660d896cc0aaeb54e658ddf9442030ff465f2b","isMergeCommit":false,"messageTitle":"Added checker for array length","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"786c03627219614afb1debe0da5bab3df68d1cb9","isMergeCommit":false,"messageTitle":"Added a input format checker for event command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":5}}},{"hash":"f0f2246733f2e5da13ff1aaf454d90c9ce612b06","isMergeCommit":false,"messageTitle":"Added error handler for invalid command","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":7}}},{"hash":"6a106b9ef04d51eeb7076d6e2a40180117446933","isMergeCommit":false,"messageTitle":"Added delete command","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"99d8d06274ec090f558edac59f9a3019018d2272","isMergeCommit":false,"messageTitle":"Cleaned up codes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}}]},{"date":"2024-01-29","commitResults":[{"hash":"02cdec90e33243b07e1941e17f985bfc157297a6","isMergeCommit":false,"messageTitle":"Refactor basic indentation from 2 spaces to 4 spaces","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":252,"deletions":249}}},{"hash":"95207465ba7c586eb32883b09c240dbede4e8b77","isMergeCommit":false,"messageTitle":"Refactor code to use exception when handling errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":36}}}]},{"date":"2024-01-30","commitResults":[{"hash":"cf3f3f949c117f31f9c0eb2db07d7603350f2718","isMergeCommit":false,"messageTitle":"Add method to read from .txt file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":0}}},{"hash":"2a795a2359a9a0409340c233c7934af2dbd93b1f","isMergeCommit":false,"messageTitle":"Add method to write to a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":19}}},{"hash":"5af5026634de82165ca3bee6408065a697270b11","isMergeCommit":false,"messageTitle":"Overload the filewriter method to allow the writing of single task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"f8f904f1c2b7fe46b1e120241f2afb3a43843eda","isMergeCommit":false,"messageTitle":"Integrate file saving and writing methods into duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":16}}},{"hash":"480d8b712a917ce2314de11347236ed3a0892410","isMergeCommit":false,"messageTitle":"Add a handler for file not found error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}},{"hash":"521eab0d41c51e6d06a1bca6dd36f2225986cd66","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f05ffefa6e80efa504a55108eb09b51004a1cf16","isMergeCommit":false,"messageTitle":"Implement the usage of local date time","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":24}}},{"hash":"6eb0657dbd2b6ac54aca6931eb03c147758d3228","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"8fe495a9f99e45f9c4ab12c27319ac29a31d35d4","isMergeCommit":false,"messageTitle":"Move command related files into a command folder","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"lokidoki102":{"java":606,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":12}},"authorContributionVariance":{"lokidoki102":38284.723},"authorDisplayNameMap":{"lokidoki102":"LIM ..RATO"}} diff --git a/marcus-ny_ip_master/authorship.json b/marcus-ny_ip_master/authorship.json index c2ded8da..085ef87f 100644 --- a/marcus-ny_ip_master/authorship.json +++ b/marcus-ny_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" private String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" public Deadline(String taskName, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" public String getDeadline() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" return this.by;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" return \"[D]\" + super.toString() + \" ( by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":17}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" public Event(String taskName, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" public String getStart() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" return this.from;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" return this.to;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" return \"[E]\" + super.toString() + \"( from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":24}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" Solaire solaire \u003d new Solaire();","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" solaire.startConversation();","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"marcus-ny":6}},{"path":"src/main/java/Solaire.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"public class Solaire {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" private ArrayList\u003cTask\u003e toDoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" private Scanner scn \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" enum UserCommands {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" GREET, BYE, MARK, UNMARK, LIST, TODO, EVENT, DEADLINE, DELETE","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" public void startConversation() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" greet();","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" toDoList \u003d TaskIo.readFromLocal();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" String input \u003d acceptInput();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" processInput(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" TaskIo.writeTasksToLocal(toDoList);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" waveBye();","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":" private void lineBreak() {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"--------------------------------------------------\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" private void greet() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" String greetingMessage \u003d \"Oh hello there. I\u0027m Solaire of Astora.\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":" + \"The sun is a wondrous body. Like a magnificent father!\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" + \"If only I could be so grossly incandescent!\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":" System.out.print(greetingMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"marcus-ny"},"content":" private void waveBye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"marcus-ny"},"content":" String farewellMessage \u003d \"Farewell!\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"marcus-ny"},"content":" System.out.print(farewellMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"marcus-ny"},"content":" scn.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"marcus-ny"},"content":" private String acceptInput() {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"marcus-ny"},"content":" String input \u003d this.scn.nextLine().toLowerCase();","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"marcus-ny"},"content":" return input;","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"marcus-ny"},"content":" private void processInput(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"marcus-ny"},"content":" String[] inputCommand \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"marcus-ny"},"content":" UserCommands command \u003d UserCommands.valueOf(inputCommand[0].toUpperCase());","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"marcus-ny"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"marcus-ny"},"content":" case GREET:","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"marcus-ny"},"content":" greet();","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"marcus-ny"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"marcus-ny"},"content":" waveBye();","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"marcus-ny"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"marcus-ny"},"content":" markDone(Integer.parseInt(inputCommand[1]));","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"marcus-ny"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"marcus-ny"},"content":" unmarkDone(Integer.parseInt(inputCommand[1]));","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"marcus-ny"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"marcus-ny"},"content":" showList();","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"marcus-ny"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"marcus-ny"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"marcus-ny"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"marcus-ny"},"content":" processTaskCommand(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"marcus-ny"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"marcus-ny"},"content":" processRemoveFromList(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"marcus-ny"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Unsupported command pattern\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"marcus-ny"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"I am not yet familiar with these commands\");","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"marcus-ny"},"content":" private void processTaskCommand(String input) {","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"marcus-ny"},"content":" addToList(parseTaskInput(input));","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"marcus-ny"},"content":" } catch (SolaireException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"marcus-ny"},"content":" private void addToList(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"marcus-ny"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"marcus-ny"},"content":" toDoList.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Added \" + task + \" to your list\");","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"marcus-ny"},"content":" private void processRemoveFromList(String input) {","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"marcus-ny"},"content":" String[] inputCommand \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"marcus-ny"},"content":" if (inputCommand.length \u003c 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Please specify the ID of the task you wish to delete\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"marcus-ny"},"content":" Integer targetTaskId \u003d Integer.parseInt(inputCommand[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"marcus-ny"},"content":" Task taskToDelete \u003d toDoList.get(targetTaskId - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"marcus-ny"},"content":" toDoList.remove(taskToDelete);","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Removed\" + taskToDelete + \" from your list\");","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"marcus-ny"},"content":" } catch (SolaireException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"marcus-ny"},"content":" private Task parseTaskInput(String input) throws SolaireException {","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"marcus-ny"},"content":" if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"marcus-ny"},"content":" Matcher deadlinePattern \u003d Pattern.compile(\"^(?i)deadline\\\\s+(.+)\\\\s+/by\\\\s+(\\\\S+.*)\").matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"marcus-ny"},"content":" if (deadlinePattern.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"marcus-ny"},"content":" String taskName \u003d deadlinePattern.group(1);","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"marcus-ny"},"content":" String deadline \u003d deadlinePattern.group(2);","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"marcus-ny"},"content":" return new Deadline(taskName, deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"marcus-ny"},"content":" \"Incorrect format: follow deadline format as such: \\n\" + \"deadline \u003cdescription\u003e /by \u003ctime\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"marcus-ny"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"marcus-ny"},"content":" String[] inputTodo \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"marcus-ny"},"content":" if (inputTodo.length \u003c 2 || inputTodo[1].trim().replaceAll(\"^\\\\s+\", \"\").isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"marcus-ny"},"content":" \"The todo task description cannot be empty! Please use this format: \\n\" + \"todo \u003cdescription\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"marcus-ny"},"content":" return new Todo(inputTodo[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"marcus-ny"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"marcus-ny"},"content":" Matcher eventPattern \u003d Pattern.compile(\"^(?i)event\\\\s+(.+)\\\\s+/from\\\\s+(\\\\S+)\\\\s+/to\\\\s+(\\\\S+.*)$\")","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"marcus-ny"},"content":" .matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"marcus-ny"},"content":" if (eventPattern.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"marcus-ny"},"content":" String taskName \u003d eventPattern.group(1);","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"marcus-ny"},"content":" String from \u003d eventPattern.group(2);","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"marcus-ny"},"content":" String to \u003d eventPattern.group(3);","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"marcus-ny"},"content":" return new Event(taskName, from, to);","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Incorrect format; follow event format as such:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"marcus-ny"},"content":" + \"event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Unable to determine task type\");","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"marcus-ny"},"content":" private void showList() {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Your list is as follows:\\n \" + \"-------------------\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"marcus-ny"},"content":" for (Task item : toDoList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"marcus-ny"},"content":" System.out.println(toDoList.indexOf(item) + 1 + \". \" + item.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"marcus-ny"},"content":" private void markDone(int id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"marcus-ny"},"content":" for (Task item : toDoList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"marcus-ny"},"content":" if (item.getId() \u003d\u003d id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"marcus-ny"},"content":" item.markAsDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Marked item number: \" + item.getId() + \"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"marcus-ny"},"content":" return;","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Couldn\u0027t find task associated with given id\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"marcus-ny"},"content":" private void unmarkDone(int id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"marcus-ny"},"content":" for (Task item : toDoList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"marcus-ny"},"content":" if (item.getId() \u003d\u003d id) {","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"marcus-ny"},"content":" item.unmarkDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Unmarked item number: \" + item.getId() + \"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"marcus-ny"},"content":" return;","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Couldn\u0027t find task associated with given id\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"marcus-ny":195}},{"path":"src/main/java/SolaireException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class SolaireException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" public SolaireException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":6}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" private int id;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" private String taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" private Boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" this.id \u003d ++count;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" public int getId() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" return this.id;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" public Boolean getIsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" return this.isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" return this.taskName;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":" String checkMark \u003d \"[\" + (isDone ? \"X\" : \" \") + \"] \";","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" return checkMark + taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":38}},{"path":"src/main/java/TaskIo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"public class TaskIo {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" private static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" public static ArrayList\u003cTask\u003e readFromLocal() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" // Clear current tasklist","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" taskList.clear();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" // Read from target file","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" String filePath \u003d \"src/main/resources/Solaire.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(Paths.get(filePath));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" parseTasks(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" return taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" public static void writeTasksToLocal(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" String filePath \u003d \"src/main/resources/Solaire.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":" TaskIo.taskList \u003d taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":" BufferedWriter bw \u003d new BufferedWriter(new FileWriter(filePath));","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"marcus-ny"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"marcus-ny"},"content":" String content \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"marcus-ny"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"marcus-ny"},"content":" content \u003d \"T | \" + (task.getIsDone() ? \"1\" : \"0\") + \" | \" + (task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"marcus-ny"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"marcus-ny"},"content":" Deadline ddlTask \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"marcus-ny"},"content":" content \u003d \"D | \" + (ddlTask.getIsDone() ? \"1\" : \"0\") + \" | \" + (ddlTask.getDescription()) + \" | \"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"marcus-ny"},"content":" + (ddlTask.getDeadline());","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"marcus-ny"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"marcus-ny"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"marcus-ny"},"content":" content \u003d \"E | \" + (eventTask.getIsDone() ? \"1\" : \"0\") + \" | \" + (eventTask.getDescription())","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"marcus-ny"},"content":" + \" | \" + (eventTask.getStart()) + \" | \" + (eventTask.getEnd());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"marcus-ny"},"content":" if (!content.equals(\"\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"marcus-ny"},"content":" bw.write(content);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"marcus-ny"},"content":" bw.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"marcus-ny"},"content":" bw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"marcus-ny"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"marcus-ny"},"content":" private static void parseTasks(String line) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"marcus-ny"},"content":" String[] taskDetails \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"marcus-ny"},"content":" String taskType \u003d taskDetails[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"marcus-ny"},"content":" Boolean isComplete \u003d taskDetails[1].trim().equals(\"1\") ? true : false;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"marcus-ny"},"content":" String taskDescription \u003d taskDetails[2].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"marcus-ny"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"marcus-ny"},"content":" * for (String x : taskDetails) System.out.println(x);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"marcus-ny"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"marcus-ny"},"content":" switch (taskDetails.length) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"marcus-ny"},"content":" case 3: {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"marcus-ny"},"content":" Task newTask \u003d new Todo(taskDescription);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"marcus-ny"},"content":" if (isComplete) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"marcus-ny"},"content":" newTask.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"marcus-ny"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"marcus-ny"},"content":" case 4: {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"marcus-ny"},"content":" Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"marcus-ny"},"content":" if (taskType.trim().equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"marcus-ny"},"content":" newTask \u003d new Deadline(taskDescription, taskDetails[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"marcus-ny"},"content":" String[] timeDetails \u003d taskDetails[3].split(\"\\\\-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"marcus-ny"},"content":" newTask \u003d new Event(taskDescription, timeDetails[0], timeDetails[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"marcus-ny"},"content":" if (isComplete) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"marcus-ny"},"content":" newTask.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"marcus-ny"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"marcus-ny":99}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" public Todo(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":11}},{"path":"src/main/resources/Solaire.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"D | 1 | return book | June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"T | 0 | eat more","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"T | 0 | eat even more","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"marcus-ny":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"todo eat lunch","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"event movie /from 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"deadline assignment 1 /by 31st Feb 2020","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":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":"marcus-ny"},"content":"java -classpath ../bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"marcus-ny":1,"-":37}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" public Deadline(String taskName, String ddl) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" this.by \u003d parseDeadline(ddl);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" private LocalDate parseDeadline(String ddl) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" DateTimeFormatter f \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" return LocalDate.parse(ddl, f);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" public LocalDate getDeadline() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" return this.by;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" String formattedDate \u003d this.by.getDayOfMonth() + \" \" + this.by.getMonth().toString().substring(0, 3) + \" \"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" + this.by.getYear();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" return \"[D]\" + super.toString() + \" ( by: \" + formattedDate + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":27}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" public Event(String taskName, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" public String getStart() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" return this.from;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" return this.to;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" return \"[E]\" + super.toString() + \"( from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":24}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" Solaire solaire \u003d new Solaire();","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" solaire.startConversation();","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"marcus-ny":6}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":" public static Task parseTaskInput(String input) throws SolaireException {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" Matcher deadlinePattern \u003d Pattern.compile(\"^(?i)deadline\\\\s+(.+)\\\\s+/by\\\\s+(\\\\S+.*)\").matcher(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" if (deadlinePattern.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" String taskName \u003d deadlinePattern.group(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" String deadline \u003d deadlinePattern.group(2);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" return new Deadline(taskName, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" \"Incorrect format: follow deadline format as such: \\n\" + \"deadline \u003cdescription\u003e /by \u003ctime\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" String[] inputTodo \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" if (inputTodo.length \u003c 2 || inputTodo[1].trim().replaceAll(\"^\\\\s+\", \"\").isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" \"The todo task description cannot be empty! Please use this format: \\n\" + \"todo \u003cdescription\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" return new Todo(inputTodo[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" Matcher eventPattern \u003d Pattern.compile(\"^(?i)event\\\\s+(.+)\\\\s+/from\\\\s+(\\\\S+)\\\\s+/to\\\\s+(\\\\S+.*)$\")","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" .matcher(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":" if (eventPattern.matches()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":" String taskName \u003d eventPattern.group(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" String from \u003d eventPattern.group(2);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" String to \u003d eventPattern.group(3);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" return new Event(taskName, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Incorrect format; follow event format as such:\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" + \"event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Unable to determine task type\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"marcus-ny":42}},{"path":"src/main/java/Solaire.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"public class Solaire {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" enum UserCommands {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" GREET, BYE, MARK, UNMARK, LIST, TODO, EVENT, DEADLINE, DELETE","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" public Solaire() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" this.ui \u003d new Ui(new Scanner(System.in));","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" this.taskList \u003d new TaskList(Storage.loadFromLocal());","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" public void startConversation() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" ui.greet(); // UI","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" String input \u003d ui.acceptInput();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" processInput(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" Storage.write(this.taskList.getTaskList());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":" ui.waveBye(); // UI","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":" /* This can stay in Solaire for now */","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" private void processInput(String input) {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" String[] inputCommand \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" UserCommands command \u003d UserCommands.valueOf(inputCommand[0].toUpperCase());","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"marcus-ny"},"content":" case GREET:","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"marcus-ny"},"content":" ui.greet();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"marcus-ny"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"marcus-ny"},"content":" ui.waveBye();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"marcus-ny"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"marcus-ny"},"content":" taskList.markDone(Integer.parseInt(inputCommand[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"marcus-ny"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"marcus-ny"},"content":" taskList.unmarkDone(Integer.parseInt(inputCommand[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"marcus-ny"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"marcus-ny"},"content":" taskList.showList();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"marcus-ny"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"marcus-ny"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"marcus-ny"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"marcus-ny"},"content":" taskList.processTaskCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"marcus-ny"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"marcus-ny"},"content":" taskList.processRemoveFromList(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"marcus-ny"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Unsupported command pattern\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"marcus-ny"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"I am not yet familiar with these commands\");","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"marcus-ny":71}},{"path":"src/main/java/SolaireException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class SolaireException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" public SolaireException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":6}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" private static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" public static ArrayList\u003cTask\u003e loadFromLocal() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" // Clear current tasklist","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" taskList.clear();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" // Read from target file","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" String filePath \u003d \"src/main/resources/Solaire.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(Paths.get(filePath));","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" parseTasks(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" return taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" public static void write(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" String filePath \u003d \"src/main/resources/Solaire.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":" Storage.taskList \u003d taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":" BufferedWriter bw \u003d new BufferedWriter(new FileWriter(filePath));","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"marcus-ny"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"marcus-ny"},"content":" String content \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"marcus-ny"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"marcus-ny"},"content":" content \u003d \"T | \" + (task.getIsDone() ? \"1\" : \"0\") + \" | \" + (task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"marcus-ny"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"marcus-ny"},"content":" Deadline ddlTask \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"marcus-ny"},"content":" content \u003d \"D | \" + (ddlTask.getIsDone() ? \"1\" : \"0\") + \" | \" + (ddlTask.getDescription()) + \" | \"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"marcus-ny"},"content":" + (ddlTask.getDeadline());","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"marcus-ny"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"marcus-ny"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"marcus-ny"},"content":" content \u003d \"E | \" + (eventTask.getIsDone() ? \"1\" : \"0\") + \" | \" + (eventTask.getDescription())","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"marcus-ny"},"content":" + \" | \" + (eventTask.getStart()) + \" | \" + (eventTask.getEnd());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"marcus-ny"},"content":" if (!content.equals(\"\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"marcus-ny"},"content":" bw.write(content);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"marcus-ny"},"content":" bw.newLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"marcus-ny"},"content":" bw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"marcus-ny"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"marcus-ny"},"content":" private static void parseTasks(String line) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"marcus-ny"},"content":" String[] taskDetails \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"marcus-ny"},"content":" String taskType \u003d taskDetails[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"marcus-ny"},"content":" Boolean isComplete \u003d taskDetails[1].trim().equals(\"1\") ? true : false;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"marcus-ny"},"content":" String taskDescription \u003d taskDetails[2].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"marcus-ny"},"content":" /*","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"marcus-ny"},"content":" * for (String x : taskDetails) System.out.println(x);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"marcus-ny"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"marcus-ny"},"content":" switch (taskDetails.length) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"marcus-ny"},"content":" case 3: {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"marcus-ny"},"content":" Task newTask \u003d new Todo(taskDescription);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"marcus-ny"},"content":" if (isComplete) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"marcus-ny"},"content":" newTask.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"marcus-ny"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"marcus-ny"},"content":" case 4: {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"marcus-ny"},"content":" Task newTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"marcus-ny"},"content":" if (taskType.trim().equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"marcus-ny"},"content":" newTask \u003d new Deadline(taskDescription, taskDetails[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"marcus-ny"},"content":" String[] timeDetails \u003d taskDetails[3].split(\"\\\\-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"marcus-ny"},"content":" newTask \u003d new Event(taskDescription, timeDetails[0], timeDetails[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"marcus-ny"},"content":" if (isComplete) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"marcus-ny"},"content":" newTask.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"marcus-ny"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"marcus-ny"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"marcus-ny":99}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" private int id;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" private String taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" private Boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" this.id \u003d ++count;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" public int getId() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" return this.id;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" public Boolean getIsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" return this.isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" return this.taskName;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":" String checkMark \u003d \"[\" + (isDone ? \"X\" : \" \") + \"] \";","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" return checkMark + taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":38}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" private void lineBreak() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"--------------------------------------------------\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":" public void processTaskCommand(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" addToList(Parser.parseTaskInput(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" } catch (SolaireException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" public void addToList(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Added \" + task + \" to your list\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" return this.taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":" public void processRemoveFromList(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"marcus-ny"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"marcus-ny"},"content":" String[] inputCommand \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"marcus-ny"},"content":" if (inputCommand.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"marcus-ny"},"content":" throw new SolaireException(\"Please specify the ID of the task you wish to delete\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"marcus-ny"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"marcus-ny"},"content":" Integer targetTaskId \u003d Integer.parseInt(inputCommand[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"marcus-ny"},"content":" Task taskToDelete \u003d taskList.get(targetTaskId - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"marcus-ny"},"content":" taskList.remove(taskToDelete);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"marcus-ny"},"content":" System.out.println(\"Removed\" + taskToDelete + \" from your list\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"marcus-ny"},"content":" } catch (SolaireException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"marcus-ny"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"marcus-ny"},"content":" public void showList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Your list is as follows:\\n \" + \"-------------------\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"marcus-ny"},"content":" for (Task item : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"marcus-ny"},"content":" System.out.println(taskList.indexOf(item) + 1 + \". \" + item.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"marcus-ny"},"content":" public void markDone(int id) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"marcus-ny"},"content":" for (Task item : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"marcus-ny"},"content":" if (item.getId() \u003d\u003d id) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"marcus-ny"},"content":" item.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Marked item number: \" + item.getId() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"marcus-ny"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Couldn\u0027t find task associated with given id\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"marcus-ny"},"content":" public void unmarkDone(int id) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"marcus-ny"},"content":" for (Task item : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"marcus-ny"},"content":" if (item.getId() \u003d\u003d id) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"marcus-ny"},"content":" item.unmarkDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Unmarked item number: \" + item.getId() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"marcus-ny"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"Couldn\u0027t find task associated with given id\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"marcus-ny":82}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":" public Todo(String taskName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" super(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":11}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":" private Scanner scn;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":" public Ui(Scanner scn) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":" this.scn \u003d scn;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"marcus-ny"},"content":" public String acceptInput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marcus-ny"},"content":" String input \u003d this.scn.nextLine().toLowerCase();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marcus-ny"},"content":" return input;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"marcus-ny"},"content":" public void greet() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"marcus-ny"},"content":" String greetingMessage \u003d \"Oh hello there. I\u0027m Solaire of Astora.\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"marcus-ny"},"content":" + \"The sun is a wondrous body. Like a magnificent father!\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"marcus-ny"},"content":" + \"If only I could be so grossly incandescent!\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"marcus-ny"},"content":" System.out.print(greetingMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"marcus-ny"},"content":" public void waveBye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"marcus-ny"},"content":" String farewellMessage \u003d \"Farewell!\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marcus-ny"},"content":" System.out.print(farewellMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"marcus-ny"},"content":" lineBreak();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"marcus-ny"},"content":" scn.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"marcus-ny"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"marcus-ny"},"content":" private void lineBreak() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"marcus-ny"},"content":" System.out.print(\"--------------------------------------------------\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"marcus-ny"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"marcus-ny"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"marcus-ny":34}},{"path":"src/main/resources/Solaire.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"T | 0 | read book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"D | 1 | return book | 2010-10-01","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"T | 0 | eat more","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"T | 0 | eat even more","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"T | 0 | eat dinner","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"marcus-ny":6}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marcus-ny"},"content":"todo eat lunch","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"marcus-ny"},"content":"event movie /from 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"marcus-ny"},"content":"deadline assignment 1 /by 31st Feb 2020","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"marcus-ny"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"marcus-ny"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"marcus-ny"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"marcus-ny"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"marcus-ny":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":"marcus-ny"},"content":"java -classpath ../bin Main \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"marcus-ny":1,"-":37}}] diff --git a/marcus-ny_ip_master/commits.json b/marcus-ny_ip_master/commits.json index e7ec1c23..8fca10f2 100644 --- a/marcus-ny_ip_master/commits.json +++ b/marcus-ny_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"marcus-ny":[{"date":"2024-01-23","commitResults":[{"hash":"ce98641e7db6cd66828cae187a22a491f07d83b6","isMergeCommit":false,"messageTitle":"feature: implement level-1","messageBody":"- Add simple greeting and farewell message\n","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"fd98df103ab6781088179e535583df17e3d15ba2","isMergeCommit":false,"messageTitle":"refactor: move chatbot to own class","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"6314ddd0d1b45dc8d7aba6ce3ad40999e303a3f3","isMergeCommit":false,"messageTitle":"implement level-1","messageBody":"- Add echo behaviour to Solaire\n","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"16ea506ab6fb9e036522b09b121d7488d7d38554","isMergeCommit":false,"messageTitle":"implement level-2","messageBody":"- added a To-do-list that stores list of user inputs and print them on request\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":12}}}]},{"date":"2024-01-24","commitResults":[{"hash":"97e6d6cc680e14e1d374807a03f16f22dec67b4f","isMergeCommit":false,"messageTitle":"implement level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":7}}},{"hash":"8e613e91de2acca0da8ad81ddcf1e932533ac92d","isMergeCommit":false,"messageTitle":"add different sub-task categories","messageBody":"- add Deadline, Event and Todo classes that extend Task class\n","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":1}}},{"hash":"442fe9ba39b1c15dda1cf3581cff9e80923ab5ce","isMergeCommit":false,"messageTitle":"implement level 4","messageBody":"- add different commands for different task types\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":32}}},{"hash":"d8cb6a25427b40dfae7e57a348e4850b3ec69b23","isMergeCommit":false,"messageTitle":"implement testing scripts","messageBody":"- write sample test inputs and outputs\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":11,"deletions":11},"sh":{"insertions":1,"deletions":1}}},{"hash":"7cc59a4f6c14418d524093cff493266286bbbf34","isMergeCommit":false,"messageTitle":"implement chatbot error","messageBody":"- implement new exception called SolaireException\n- handle incorrect input text formats and recommend the correct format to user\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":30}}},{"hash":"6f48c6c9d0175a4ad7619a62aa3fee706608acd1","isMergeCommit":false,"messageTitle":"implement task delete","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":52}}}]},{"date":"2024-01-30","commitResults":[{"hash":"07c84b366f68b1988c924f5d5657b1d02b3d1975","isMergeCommit":false,"messageTitle":"Format Solaire.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":31}}},{"hash":"9777704b18062536e1adc11b2e7ce4ba195cacfa","isMergeCommit":false,"messageTitle":"Add TaskIO.java","messageBody":"Reads local file input and converts to relevant Tasks\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":67,"deletions":1}}},{"hash":"0ce64525001cd88cf72814ba4abbd8b5025ccf6e","isMergeCommit":false,"messageTitle":"Add file writing capabilities","messageBody":"Solaire can now write and read tasks from a txt file\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":60,"deletions":4}}},{"hash":"dcd9e5cde3ab14e475b4853e0143eedcc942a4b4","isMergeCommit":true,"messageTitle":"Merge pull request #1 from marcus-ny/branch-Level-7","messageBody":"Branch level 7","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"marcus-ny":{"java":396,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":14}},"authorContributionVariance":{"marcus-ny":19085.387},"authorDisplayNameMap":{"marcus-ny":"CS2103T-W13-1 KYAL..THET"}} +{"authorDailyContributionsMap":{"marcus-ny":[{"date":"2024-01-23","commitResults":[{"hash":"ce98641e7db6cd66828cae187a22a491f07d83b6","isMergeCommit":false,"messageTitle":"feature: implement level-1","messageBody":"- Add simple greeting and farewell message\n","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"fd98df103ab6781088179e535583df17e3d15ba2","isMergeCommit":false,"messageTitle":"refactor: move chatbot to own class","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"6314ddd0d1b45dc8d7aba6ce3ad40999e303a3f3","isMergeCommit":false,"messageTitle":"implement level-1","messageBody":"- Add echo behaviour to Solaire\n","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"16ea506ab6fb9e036522b09b121d7488d7d38554","isMergeCommit":false,"messageTitle":"implement level-2","messageBody":"- added a To-do-list that stores list of user inputs and print them on request\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":12}}}]},{"date":"2024-01-24","commitResults":[{"hash":"97e6d6cc680e14e1d374807a03f16f22dec67b4f","isMergeCommit":false,"messageTitle":"implement level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":7}}},{"hash":"8e613e91de2acca0da8ad81ddcf1e932533ac92d","isMergeCommit":false,"messageTitle":"add different sub-task categories","messageBody":"- add Deadline, Event and Todo classes that extend Task class\n","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":1}}},{"hash":"442fe9ba39b1c15dda1cf3581cff9e80923ab5ce","isMergeCommit":false,"messageTitle":"implement level 4","messageBody":"- add different commands for different task types\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":32}}},{"hash":"d8cb6a25427b40dfae7e57a348e4850b3ec69b23","isMergeCommit":false,"messageTitle":"implement testing scripts","messageBody":"- write sample test inputs and outputs\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":11,"deletions":11},"sh":{"insertions":1,"deletions":1}}},{"hash":"7cc59a4f6c14418d524093cff493266286bbbf34","isMergeCommit":false,"messageTitle":"implement chatbot error","messageBody":"- implement new exception called SolaireException\n- handle incorrect input text formats and recommend the correct format to user\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":30}}},{"hash":"6f48c6c9d0175a4ad7619a62aa3fee706608acd1","isMergeCommit":false,"messageTitle":"implement task delete","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":52}}}]},{"date":"2024-01-30","commitResults":[{"hash":"07c84b366f68b1988c924f5d5657b1d02b3d1975","isMergeCommit":false,"messageTitle":"Format Solaire.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":31}}},{"hash":"9777704b18062536e1adc11b2e7ce4ba195cacfa","isMergeCommit":false,"messageTitle":"Add TaskIO.java","messageBody":"Reads local file input and converts to relevant Tasks\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":67,"deletions":1}}},{"hash":"0ce64525001cd88cf72814ba4abbd8b5025ccf6e","isMergeCommit":false,"messageTitle":"Add file writing capabilities","messageBody":"Solaire can now write and read tasks from a txt file\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":60,"deletions":4}}},{"hash":"dcd9e5cde3ab14e475b4853e0143eedcc942a4b4","isMergeCommit":true,"messageTitle":"Merge pull request #1 from marcus-ny/branch-Level-7","messageBody":"Branch level 7","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"3ade565f2673a76ca7e7b8fe31ab84f84b29fec2","isMergeCommit":false,"messageTitle":"Modify Deadline.java\u0027s deadline datatype","messageBody":"Modify deadline\u0027s datatype from String to LocalDate to support formatted date and time\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":15,"deletions":5}}},{"hash":"0063fc8a46a2f0f0173be428d3ee3b67447d4b92","isMergeCommit":false,"messageTitle":"Alter deadline format name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"3f3a384f028e18e876ba2c2665b8fb612bc84510","isMergeCommit":false,"messageTitle":"Alter variable name of formatted date","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"dca3d6090a8be263c05c2e0f1bccb7e7aceee621","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"bb16d333480e576d94b2477bce932791de79bb57","isMergeCommit":false,"messageTitle":"Create TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":0}}},{"hash":"f6e9b8363267a8e5d7fb203203df853990f7acc7","isMergeCommit":false,"messageTitle":"Create Parser.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"caacbc30186b5bed2b752709f479f51a4446412a","isMergeCommit":false,"messageTitle":"Update TaskIo class name to Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"00660a13d469d50d618f49c463f3f09d297ccdba","isMergeCommit":false,"messageTitle":"Refactor Solaire.java","messageBody":"Connect TaskList, Ui, Parser and Storage classes to create a more OO structure in Solaire\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":72,"deletions":149}}},{"hash":"49989e2a240a6db9cb07cf7a6df1b70751e0bf86","isMergeCommit":true,"messageTitle":"Merge branch-A-MoreOOP into master","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"marcus-ny":{"java":440,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"marcus-ny":38655.355},"authorDisplayNameMap":{"marcus-ny":"CS2103T-W13-1 KYAL..THET"}} diff --git a/matthewken19_ip_master/authorship.json b/matthewken19_ip_master/authorship.json index c08f1f29..65041e8e 100644 --- a/matthewken19_ip_master/authorship.json +++ b/matthewken19_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":" String by;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" Deadline(String desc, String by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" super(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"import java.util.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"import java.util.function.ToDoubleFunction;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"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":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" String line \u003d \"_____________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" String greeting \u003d \"Hello! I\u0027m Donald.\\nWhat can I do for you?\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" System.out.println(greeting + line + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" String command \u003d input.split(\" \")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" Integer index;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" Task t;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" String desc;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" String[] split;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" switch(command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" case \"list\":","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":" index \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" for (Task s : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":" System.out.println(index + \".\" + s);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":" index++;","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"matthewken19"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"matthewken19"},"content":" split \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"matthewken19"},"content":" t \u003d list.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"matthewken19"},"content":" t.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"matthewken19"},"content":" list.set(index, t);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"matthewken19"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"matthewken19"},"content":" split \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"matthewken19"},"content":" t \u003d list.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"matthewken19"},"content":" t.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"matthewken19"},"content":" list.set(index, t);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"matthewken19"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"matthewken19"},"content":" desc \u003d input.split(command + \" \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"matthewken19"},"content":" t \u003d new ToDo(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"matthewken19"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in this list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"matthewken19"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"matthewken19"},"content":" desc \u003d input.split(command + \" \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"matthewken19"},"content":" split \u003d desc.split(\"/by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"matthewken19"},"content":" String by \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"matthewken19"},"content":" desc \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"matthewken19"},"content":" t \u003d new Deadline(desc, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"matthewken19"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in this list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"matthewken19"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"matthewken19"},"content":" desc \u003d input.split(command + \" \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"matthewken19"},"content":" split \u003d desc.split(\"/from\");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"matthewken19"},"content":" desc \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"matthewken19"},"content":" split \u003d split[1].split(\"/to\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"matthewken19"},"content":" String start \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"matthewken19"},"content":" String end \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"matthewken19"},"content":" t \u003d new Event(desc, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"matthewken19"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in this list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"matthewken19"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"matthewken19"},"content":" t \u003d new Task(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"matthewken19"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"added: \" + input);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"matthewken19"},"content":" System.out.println(line + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"matthewken19"},"content":" String closing \u003d \"Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"matthewken19"},"content":" System.out.println(closing + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"matthewken19":95}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":" private String start;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" private String end;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" Event(String desc, String start, String end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" super(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" return \"[E]\" + super.toString() + \"(from:\" + start + \"to:\" + end + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":" private String desc;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" private String status;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" Task(String desc) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" this.desc \u003d desc;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" this.status \u003d \"[ ]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" public void mark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" this.status \u003d \"[X]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" public void unmark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" this.status \u003d \"[ ]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" return status + \" \" + desc;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":21}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" ToDo(String desc) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" super(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":11}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":" String by;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" Deadline(String desc, String by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" super(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"import java.util.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"import java.util.function.ToDoubleFunction;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"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":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" String line \u003d \"_____________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" String greeting \u003d \"Hello! I\u0027m Donald.\\nWhat can I do for you?\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" System.out.println(greeting + line + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" Task t;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" index \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" for (Task s : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" System.out.println(index + \".\" + s);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" index++;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":" String[] split \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" String command \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":" String desc;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"matthewken19"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"matthewken19"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"matthewken19"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"matthewken19"},"content":" desc \u003d input.split(command + \" \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"matthewken19"},"content":" split \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"matthewken19"},"content":" if (index + 1 \u003e list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"You only have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"matthewken19"},"content":" t \u003d list.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"matthewken19"},"content":" t.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"matthewken19"},"content":" list.set(index, t);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"matthewken19"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"matthewken19"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"matthewken19"},"content":" desc \u003d input.split(command + \" \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"matthewken19"},"content":" split \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"matthewken19"},"content":" if (index + 1 \u003e list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"You only have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"matthewken19"},"content":" t \u003d list.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"matthewken19"},"content":" t.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"matthewken19"},"content":" list.set(index, t);","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"matthewken19"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"matthewken19"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"matthewken19"},"content":" desc \u003d input.split(command + \" \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"matthewken19"},"content":" split \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(split[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"matthewken19"},"content":" if (index + 1 \u003e list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"You only have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"matthewken19"},"content":" t \u003d list.remove(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"matthewken19"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"matthewken19"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"matthewken19"},"content":" desc \u003d input.split(command + \" \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"matthewken19"},"content":" t \u003d new ToDo(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"matthewken19"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in this list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"matthewken19"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"matthewken19"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"matthewken19"},"content":" desc \u003d input.split(command + \" \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"matthewken19"},"content":" split \u003d desc.split(\"/by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"matthewken19"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Deadline /by cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"matthewken19"},"content":" desc \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"matthewken19"},"content":" String by \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"matthewken19"},"content":" t \u003d new Deadline(desc, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"matthewken19"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in this list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"matthewken19"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"matthewken19"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"matthewken19"},"content":" desc \u003d input.split(command + \" \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"matthewken19"},"content":" split \u003d desc.split(\"/from\");","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"matthewken19"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Event /from cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"matthewken19"},"content":" desc \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"matthewken19"},"content":" split \u003d split[1].split(\"/to\");","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"matthewken19"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Event /to cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"matthewken19"},"content":" String from \u003d split[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"matthewken19"},"content":" String to \u003d split[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"matthewken19"},"content":" t \u003d new Event(desc, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"matthewken19"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"matthewken19"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in this list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"matthewken19"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"I\u0027m sorry, I don\u0027t know what that means.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"matthewken19"},"content":" \"Please input valid commands (i.e. [command] [description]).\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"matthewken19"},"content":" \"You can choose from the following available commands:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"matthewken19"},"content":" \" * todo [desc]\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"matthewken19"},"content":" \" * event [desc] /from [desc] /to [desc]\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"matthewken19"},"content":" \" * deadline [desc] /by [desc]\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"matthewken19"},"content":" \" * list\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"matthewken19"},"content":" \" * mark [number]\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"matthewken19"},"content":" \" * unmark [number]\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"matthewken19"},"content":" \" * delete [number]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"matthewken19"},"content":" } catch (DukeException de) {","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"matthewken19"},"content":" System.out.println(de.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"matthewken19"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"DukeException: Please input valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"matthewken19"},"content":" System.out.println(line + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"matthewken19"},"content":" String closing \u003d \"Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"matthewken19"},"content":" System.out.println(closing + line);","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"matthewken19":154}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" DukeException(String str) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" super(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":" private String start;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" private String end;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" Event(String desc, String start, String end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" super(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" return \"[E]\" + super.toString() + \"(from:\" + start + \"to:\" + end + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":" private String desc;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" private String status;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" Task(String desc) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" this.desc \u003d desc;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" this.status \u003d \"[ ]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" public void mark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" this.status \u003d \"[X]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" public void unmark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" this.status \u003d \"[ ]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" return status + \" \" + desc;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":21}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" ToDo(String desc) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" super(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"deadline submit report /by 13th Jan","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"todo buy groceries","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"event conference /from 8:00 /to 10:00","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"mark 1","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":"mark 3","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":"unmark 1","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":"mark 2","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"todo catch up on cs2103","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":"bye","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":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":"matthewken19"},"content":"javac -cp C:\\Users\\Ken\\Desktop\\NUS\\CS2103\\ip\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2024-01-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":"-"},"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":"matthewken19"},"content":"java -classpath C:\\Users\\Ken\\Desktop\\NUS\\CS2103\\ip\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"matthewken19":2}}] diff --git a/matthewken19_ip_master/commits.json b/matthewken19_ip_master/commits.json index 70724f14..051392b5 100644 --- a/matthewken19_ip_master/commits.json +++ b/matthewken19_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"matthewken19":[{"date":"2024-01-29","commitResults":[{"hash":"ac14ee7f1ade6e4dbb2011b25ed404934f6770c0","isMergeCommit":false,"messageTitle":"Added greeting and closing statements and line","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"7d6c7ae6bbb567938323ac08a23424399193aace","isMergeCommit":false,"messageTitle":"Added echo function","messageBody":"","tags":["Level1-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"40818015c1adde223da20ec6d9943fa1494f937b","isMergeCommit":false,"messageTitle":"Structuring of the line string, added list function, removed echo function","messageBody":"","tags":["Level1-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":5}}},{"hash":"88b55a9b0436811b7ea222c135b69c412161f324","isMergeCommit":false,"messageTitle":"Added helper Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"3c2c5c99e6a0836f28e4b8c5cebf623a70bb574d","isMergeCommit":false,"messageTitle":"Added function to mark and unmark tasks","messageBody":"","tags":["Level1-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":14}}},{"hash":"273b7780cce6205e9d96923b34d1424873d5eaf1","isMergeCommit":false,"messageTitle":"added childclass Deadline, Event and Todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":0}}},{"hash":"68ccf487943b79b028187272cded842373f20596","isMergeCommit":false,"messageTitle":"add case for todo, deadline, and event","messageBody":"","tags":["Level1-4"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"matthewken19":{"java":156,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"matthewken19":2454.139},"authorDisplayNameMap":{"matthewken19":"MATT.. KEN"}} +{"authorDailyContributionsMap":{"matthewken19":[{"date":"2024-01-29","commitResults":[{"hash":"ac14ee7f1ade6e4dbb2011b25ed404934f6770c0","isMergeCommit":false,"messageTitle":"Added greeting and closing statements and line","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"7d6c7ae6bbb567938323ac08a23424399193aace","isMergeCommit":false,"messageTitle":"Added echo function","messageBody":"","tags":["Level1-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}}]},{"date":"2024-01-30","commitResults":[{"hash":"40818015c1adde223da20ec6d9943fa1494f937b","isMergeCommit":false,"messageTitle":"Structuring of the line string, added list function, removed echo function","messageBody":"","tags":["Level1-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":5}}},{"hash":"88b55a9b0436811b7ea222c135b69c412161f324","isMergeCommit":false,"messageTitle":"Added helper Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"3c2c5c99e6a0836f28e4b8c5cebf623a70bb574d","isMergeCommit":false,"messageTitle":"Added function to mark and unmark tasks","messageBody":"","tags":["Level1-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":14}}},{"hash":"273b7780cce6205e9d96923b34d1424873d5eaf1","isMergeCommit":false,"messageTitle":"added childclass Deadline, Event and Todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":0}}},{"hash":"68ccf487943b79b028187272cded842373f20596","isMergeCommit":false,"messageTitle":"add case for todo, deadline, and event","messageBody":"","tags":["Level1-4"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":2}}},{"hash":"936ec49c91c938ab9cc7e52cd6a6237ab6f0107d","isMergeCommit":false,"messageTitle":"Changed local file location in runtest.bat","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":2,"deletions":2}}},{"hash":"ff1f8e4b56a9556798d4d9f08fa08c59aaf50b0e","isMergeCommit":false,"messageTitle":"Added input and expected.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0}}},{"hash":"e6086d5263cad5d40144260910bc0763935f6e5e","isMergeCommit":false,"messageTitle":"fixed the error: java file classpath should be in bin","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":1,"deletions":1}}},{"hash":"1b053fb2202bb247c46ebc17bc09281009f8f3b2","isMergeCommit":false,"messageTitle":"Added custom exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"26b6195ea5e6fd67b59f93d2e31c68b1650a2985","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level1-5"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":69}}},{"hash":"8dd2f142ade4282e883f329100007dad2070fa4e","isMergeCommit":false,"messageTitle":"add delete function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"0af101a2a1797341902e98153c5c41f0bf7a9918","isMergeCommit":false,"messageTitle":"added the delete instruction format as part of error handling message","messageBody":"","tags":["Level1-6"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"matthewken19":{"java":221,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":13}},"authorContributionVariance":{"matthewken19":12426.39},"authorDisplayNameMap":{"matthewken19":"MATT.. KEN"}} diff --git a/modembcc_ip_master/authorship.json b/modembcc_ip_master/authorship.json index 3d3b12ac..968b86ed 100644 --- a/modembcc_ip_master/authorship.json +++ b/modembcc_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" private String date;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" Deadline(String desc, String date) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" return \"[D]\" + super.toString() + \" (by: \" + date + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" public String saveString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" return \"D | \" + super.saveString() + \" | \" + date;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":16}},{"path":"src/main/java/EmptyDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class EmptyDeadlineException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public EmptyDeadlineException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" public EmptyDeadlineException(String cat) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" super(","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" cat.equals(\"desc\") ","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" ? \"OOPS! The description of a deadline cannot be empty.\" ","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" : \"OOPS! The deadline of a deadline cannot be empty.\"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" );","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":13}},{"path":"src/main/java/EmptyEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class EmptyEventException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public EmptyEventException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" public EmptyEventException(String cat) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" super(","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" cat.equals(\"desc\") ","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" ? \"OOPS! The description of an event cannot be empty.\" ","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" : \"OOPS! Make sure you have both the from and to date to create an event.\"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" );","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":13}},{"path":"src/main/java/EmptyTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class EmptyTodoException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public EmptyTodoException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" private String from;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" private String to;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":" Event(String desc, String from, String to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" public String saveString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" return \"E | \" + super.saveString() + \" | \" + from + \" | \" + to;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":18}},{"path":"src/main/java/InvalidFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class InvalidFormatException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public InvalidFormatException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! Please use the correct format for this command.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":5}},{"path":"src/main/java/OutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class OutOfBoundsException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public OutOfBoundsException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! The item you want to mark doesn\u0027t exist. Use the \u0027list\u0027 command to check your current tasks.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":5}},{"path":"src/main/java/Panda.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"public class Panda {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" private static boolean running \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" private static ArrayList\u003cTask\u003e tlist;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" private static File cachFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" private static void startUp() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" System.out.println(","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" \"Hello! I\u0027m Panda\\n\" + ","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" \"What can I do for you?\"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" running \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" tlist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" cachFile \u003d new File(\"./src/main/list.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" if (!cachFile.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" cachFile.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" Scanner myReader \u003d new Scanner(cachFile);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" while (myReader.hasNextLine()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" String data \u003d myReader.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" String[] parts \u003d data.split(\"\\\\|\");","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" for (int i \u003d 0; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" parts[i] \u003d parts[i].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" if(parts[0].equals(\"T\")) tlist.add(new Todo(parts[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" else if(parts[0].equals(\"D\")) tlist.add(new Deadline(parts[2], parts[3]));","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" else if(parts[0].equals(\"E\")) tlist.add(new Event(parts[2], parts[3], parts[4]));","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" if(parts[1].equals(\"1\")) tlist.get(tlist.size() - 1).mark();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" myReader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" private static void shutDown() {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" System.out.println(","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" \"Bye. Hope to see you again soon!\"","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":" private static void printTlist() {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"modembcc"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":" for(int i \u003d 0; i \u003c tlist.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"modembcc"},"content":" System.out.println((i + 1) + \".\" + tlist.get(i));","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":" private static void updateSave() {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":" try (FileWriter writer \u003d new FileWriter(\"./src/main/list.txt\", false)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"modembcc"},"content":" for(Task tmp : tlist) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"modembcc"},"content":" writer.write(tmp.saveString() + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"modembcc"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"modembcc"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"modembcc"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" private static void comm (String userInput) throws PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" if(userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" running \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"modembcc"},"content":" if(userInput.equals((\"list\"))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"modembcc"},"content":" Panda.printTlist();","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"modembcc"},"content":" int target;","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":" target \u003d Integer.parseInt(userInput.split(\" \", 2)[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"modembcc"},"content":" catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"modembcc"},"content":" throw new InvalidFormatException();","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"modembcc"},"content":" if(target \u003e\u003d tlist.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"modembcc"},"content":" throw new OutOfBoundsException();","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"modembcc"},"content":" tlist.get(target).mark();","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"modembcc"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + tlist.get(target));","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"modembcc"},"content":" int target;","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"modembcc"},"content":" target \u003d Integer.parseInt(userInput.split(\" \", 2)[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"modembcc"},"content":" catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"modembcc"},"content":" throw new InvalidFormatException();","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"modembcc"},"content":" if(target \u003e\u003d tlist.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"modembcc"},"content":" throw new OutOfBoundsException();","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"modembcc"},"content":" tlist.get(target).unmark();","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"modembcc"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n \" + tlist.get(target));","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"modembcc"},"content":" int target;","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"modembcc"},"content":" target \u003d Integer.parseInt(userInput.split(\" \", 2)[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"modembcc"},"content":" catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"modembcc"},"content":" throw new InvalidFormatException();","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"modembcc"},"content":" if(target \u003e\u003d tlist.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"modembcc"},"content":" throw new OutOfBoundsException();","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"modembcc"},"content":" Task tmp \u003d tlist.get(target);","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"modembcc"},"content":" tlist.remove(target);","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"modembcc"},"content":" System.out.println(\"OK, I\u0027ve deleted this task:\\n \" + tmp + \"\\nNow you have \" + tlist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"modembcc"},"content":" String[] splitted \u003d userInput.trim().split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"modembcc"},"content":" if(splitted.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"modembcc"},"content":" throw new EmptyTodoException();","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"modembcc"},"content":" tlist.add(new Todo(splitted[1].trim()));","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"modembcc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + tlist.get(tlist.size() - 1) + \"\\nNow you have \" + tlist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"modembcc"},"content":" String[] splitted \u003d userInput.trim().split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"modembcc"},"content":" if(splitted.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"modembcc"},"content":" throw new EmptyDeadlineException(\"desc\");","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"modembcc"},"content":" String[] args \u003d splitted[1].split(\"/by\");","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"modembcc"},"content":" if(args.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"modembcc"},"content":" throw new EmptyDeadlineException(\"date\");","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"modembcc"},"content":" tlist.add(new Deadline(args[0].trim(), args[1].trim()));","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"modembcc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + tlist.get(tlist.size() - 1) + \"\\nNow you have \" + tlist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":152,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"modembcc"},"content":" String[] splitted \u003d userInput.trim().split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":157,"author":{"gitId":"modembcc"},"content":" if(splitted.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":158,"author":{"gitId":"modembcc"},"content":" throw new EmptyEventException(\"desc\");","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":160,"author":{"gitId":"modembcc"},"content":" String[] args \u003d splitted[1].split(\"/from\");","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"modembcc"},"content":" if(args.length \u003c 2 || args[1].split(\"/to\").length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":162,"author":{"gitId":"modembcc"},"content":" throw new EmptyEventException(\"date\");","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"modembcc"},"content":" tlist.add(new Event(args[0].trim(), args[1].split(\"/to\")[0].trim(), args[1].split(\"/to\")[1].trim()));","lastModifiedDate":"2024-01-27"},{"lineNumber":165,"author":{"gitId":"modembcc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + tlist.get(tlist.size() - 1) + \"\\nNow you have \" + tlist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"modembcc"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"modembcc"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"modembcc"},"content":" Panda.startUp();","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"modembcc"},"content":" Scanner myObj \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"modembcc"},"content":" while(running) {","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"modembcc"},"content":" System.out.print(\"\u003e \");","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"modembcc"},"content":" String userInput \u003d myObj.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":179,"author":{"gitId":"modembcc"},"content":" Panda.comm(userInput);","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"modembcc"},"content":" catch (PandaException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"modembcc"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"modembcc"},"content":" myObj.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"modembcc"},"content":" Panda.shutDown();","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":188}},{"path":"src/main/java/PandaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class PandaException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public PandaException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super();","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" public PandaException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" super(message);","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" public PandaException(Throwable cause) {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" super(cause);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" public PandaException(String message, Throwable cause) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" super(message, cause);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":17}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" private final String desc;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":" public void mark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" public void unmark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" Task(String desc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" this.desc \u003d desc;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" private String curStatus() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" return \"[\" + (isDone ? \u0027X\u0027 : \u0027 \u0027) + \"]\";","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" return curStatus() + \u0027 \u0027 + desc;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" public String saveString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" return (isDone ? \"1\" : \"0\") + \" | \" + desc;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" Todo(String desc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" public String saveString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" return \"T | \" + super.saveString();","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":13}},{"path":"src/main/java/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class UnknownCommandException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public UnknownCommandException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! Panda doesn\u0027t have that command.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":5}},{"path":"src/main/list.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"D | 0 | return book | June 6th","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"E | 0 | project meeting | Aug 6th 2pm | 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"T | 0 | sleep","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"modembcc":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":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":"modembcc"},"content":"if not exist .\\bin mkdir .\\bin","lastModifiedDate":"2024-01-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":"modembcc"},"content":"for %%i in (.\\src\\main\\java\\*.java) do (","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" javac -cp .\\src\\main\\java -Xlint:none -d .\\bin %%i","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":")","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"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":"modembcc"},"content":"java -classpath .\\bin Panda \u003c .\\text-ui-test\\input.txt \u003e .\\text-ui-test\\ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"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":"modembcc"},"content":"FC .\\text-ui-test\\ACTUAL.TXT .\\text-ui-test\\EXPECTED.TXT","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":7,"-":17}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"import java.util.Locale;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" private LocalDateTime date;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" Deadline(String desc, String datestr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" DateTimeFormatterBuilder builder \u003d new DateTimeFormatterBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" builder.parseCaseInsensitive()","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"MMM d\u0027th\u0027 ha\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"MMM d yyyy ha\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"yyyy-MM-dd ha\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" DateTimeFormatter formatter \u003d builder.toFormatter(Locale.US);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" if (!datestr.toLowerCase().contains(\"am\") \u0026\u0026 !datestr.contains(\"pm\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" datestr +\u003d \" 12am\"; // append default time if none is provided","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" this.date \u003d LocalDateTime.parse(datestr, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" private String dateString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy ha\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" return \"[D]\" + super.toString() + \" (by: \" + dateString() + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" public String saveString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" return \"D | \" + super.saveString() + \" | \" + dateString();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":35}},{"path":"src/main/java/EmptyDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class EmptyDeadlineException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public EmptyDeadlineException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" public EmptyDeadlineException(String cat) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" super(","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" cat.equals(\"desc\") ","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" ? \"OOPS! The description of a deadline cannot be empty.\" ","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" : \"OOPS! The deadline of a deadline cannot be empty.\"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" );","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":13}},{"path":"src/main/java/EmptyEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class EmptyEventException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public EmptyEventException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" public EmptyEventException(String cat) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" super(","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" cat.equals(\"desc\") ","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" ? \"OOPS! The description of an event cannot be empty.\" ","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" : \"OOPS! Make sure you have both the from and to date to create an event.\"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" );","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":13}},{"path":"src/main/java/EmptyTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class EmptyTodoException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public EmptyTodoException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"import java.util.Locale;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" Event(String desc, String from, String to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" DateTimeFormatterBuilder builder \u003d new DateTimeFormatterBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" builder.parseCaseInsensitive()","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"MMM d\u0027th\u0027 ha\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"MMM d yyyy ha\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss a\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" DateTimeFormatter formatter \u003d builder.toFormatter(Locale.US);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" if (!from.toLowerCase().contains(\"am\") \u0026\u0026 !from.toLowerCase().contains(\"pm\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" from +\u003d \" 12am\"; // append default time if none is provided","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" if (!to.toLowerCase().contains(\"am\") \u0026\u0026 !to.toLowerCase().contains(\"pm\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" to +\u003d \" 12am\"; // append default time if none is provided","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" this.from \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" this.to \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" private String startString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" return from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy ha\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" private String stopString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" return to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy ha\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" String from \u003d startString();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" String to \u003d stopString();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":" if (from.length() \u003e\u003d 12 \u0026\u0026 to.length() \u003e\u003d 12 \u0026\u0026 from.substring(0, 12).equals(to.substring(0, 12))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" to \u003d to.substring(12);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":" public String saveString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" return \"E | \" + super.saveString() + \" | \" + startString() + \" | \" + stopString();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":49}},{"path":"src/main/java/InvalidFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class InvalidFormatException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public InvalidFormatException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! Please use the correct format for this command.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":5}},{"path":"src/main/java/OutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class OutOfBoundsException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public OutOfBoundsException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! The item you want to mark doesn\u0027t exist. Use the \u0027list\u0027 command to check your current tasks.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":5}},{"path":"src/main/java/Panda.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"public class Panda {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" private static boolean running \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" private static ArrayList\u003cTask\u003e tlist;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" private static File cachFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" private static void startUp() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" System.out.println(","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" \"Hello! I\u0027m Panda\\n\" + ","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":" \"What can I do for you?\"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" running \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" tlist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":" cachFile \u003d new File(\"./src/main/list.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" if (!cachFile.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" cachFile.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" Scanner myReader \u003d new Scanner(cachFile);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" while (myReader.hasNextLine()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":" String data \u003d myReader.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"modembcc"},"content":" String[] parts \u003d data.split(\"\\\\|\");","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"modembcc"},"content":" for (int i \u003d 0; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"modembcc"},"content":" parts[i] \u003d parts[i].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"modembcc"},"content":" if(parts[0].equals(\"T\")) tlist.add(new Todo(parts[2]));","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"modembcc"},"content":" else if(parts[0].equals(\"D\")) tlist.add(new Deadline(parts[2], parts[3]));","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"modembcc"},"content":" else if(parts[0].equals(\"E\")) tlist.add(new Event(parts[2], parts[3], parts[4]));","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"modembcc"},"content":" if(parts[1].equals(\"1\")) tlist.get(tlist.size() - 1).mark();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"modembcc"},"content":" myReader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"modembcc"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"modembcc"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"modembcc"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"modembcc"},"content":" private static void shutDown() {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"modembcc"},"content":" System.out.println(","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"modembcc"},"content":" \"Bye. Hope to see you again soon!\"","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"modembcc"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"modembcc"},"content":" private static void printTlist() {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"modembcc"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"modembcc"},"content":" for(int i \u003d 0; i \u003c tlist.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"modembcc"},"content":" System.out.println((i + 1) + \".\" + tlist.get(i));","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"modembcc"},"content":" private static void updateSave() {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"modembcc"},"content":" try (FileWriter writer \u003d new FileWriter(\"./src/main/list.txt\", false)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"modembcc"},"content":" for(Task tmp : tlist) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"modembcc"},"content":" writer.write(tmp.saveString() + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"modembcc"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"modembcc"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"modembcc"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"modembcc"},"content":" private static void comm (String userInput) throws PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"modembcc"},"content":" if(userInput.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"modembcc"},"content":" running \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"modembcc"},"content":" if(userInput.equals((\"list\"))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"modembcc"},"content":" Panda.printTlist();","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"modembcc"},"content":" int target;","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"modembcc"},"content":" target \u003d Integer.parseInt(userInput.split(\" \", 2)[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"modembcc"},"content":" catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"modembcc"},"content":" throw new InvalidFormatException();","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"modembcc"},"content":" if(target \u003e\u003d tlist.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"modembcc"},"content":" throw new OutOfBoundsException();","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"modembcc"},"content":" tlist.get(target).mark();","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"modembcc"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n \" + tlist.get(target));","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"modembcc"},"content":" int target;","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"modembcc"},"content":" target \u003d Integer.parseInt(userInput.split(\" \", 2)[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"modembcc"},"content":" catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"modembcc"},"content":" throw new InvalidFormatException();","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"modembcc"},"content":" if(target \u003e\u003d tlist.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"modembcc"},"content":" throw new OutOfBoundsException();","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"modembcc"},"content":" tlist.get(target).unmark();","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"modembcc"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n \" + tlist.get(target));","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"modembcc"},"content":" int target;","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"modembcc"},"content":" target \u003d Integer.parseInt(userInput.split(\" \", 2)[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"modembcc"},"content":" catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"modembcc"},"content":" throw new InvalidFormatException();","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"modembcc"},"content":" if(target \u003e\u003d tlist.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"modembcc"},"content":" throw new OutOfBoundsException();","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"modembcc"},"content":" Task tmp \u003d tlist.get(target);","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"modembcc"},"content":" tlist.remove(target);","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"modembcc"},"content":" System.out.println(\"OK, I\u0027ve deleted this task:\\n \" + tmp + \"\\nNow you have \" + tlist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"modembcc"},"content":" String[] splitted \u003d userInput.trim().split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"modembcc"},"content":" if(splitted.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"modembcc"},"content":" throw new EmptyTodoException();","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"modembcc"},"content":" tlist.add(new Todo(splitted[1].trim()));","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"modembcc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + tlist.get(tlist.size() - 1) + \"\\nNow you have \" + tlist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"modembcc"},"content":" String[] splitted \u003d userInput.trim().split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"modembcc"},"content":" if(splitted.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"modembcc"},"content":" throw new EmptyDeadlineException(\"desc\");","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"modembcc"},"content":" String[] args \u003d splitted[1].split(\"/by\");","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"modembcc"},"content":" if(args.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"modembcc"},"content":" throw new EmptyDeadlineException(\"date\");","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"modembcc"},"content":" tlist.add(new Deadline(args[0].trim(), args[1].trim()));","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"modembcc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + tlist.get(tlist.size() - 1) + \"\\nNow you have \" + tlist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":152,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"modembcc"},"content":" if(userInput.split(\" \")[0].equals(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"modembcc"},"content":" String[] splitted \u003d userInput.trim().split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":157,"author":{"gitId":"modembcc"},"content":" if(splitted.length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":158,"author":{"gitId":"modembcc"},"content":" throw new EmptyEventException(\"desc\");","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":160,"author":{"gitId":"modembcc"},"content":" String[] args \u003d splitted[1].split(\"/from\");","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"modembcc"},"content":" if(args.length \u003c 2 || args[1].split(\"/to\").length \u003c 2) {","lastModifiedDate":"2024-01-27"},{"lineNumber":162,"author":{"gitId":"modembcc"},"content":" throw new EmptyEventException(\"date\");","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"modembcc"},"content":" tlist.add(new Event(args[0].trim(), args[1].split(\"/to\")[0].trim(), args[1].split(\"/to\")[1].trim()));","lastModifiedDate":"2024-01-27"},{"lineNumber":165,"author":{"gitId":"modembcc"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \" + tlist.get(tlist.size() - 1) + \"\\nNow you have \" + tlist.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"modembcc"},"content":" updateSave();","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"modembcc"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"modembcc"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"modembcc"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"modembcc"},"content":" Panda.startUp();","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"modembcc"},"content":" Scanner myObj \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"modembcc"},"content":" while(running) {","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"modembcc"},"content":" System.out.print(\"\u003e \");","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"modembcc"},"content":" String userInput \u003d myObj.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"modembcc"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":179,"author":{"gitId":"modembcc"},"content":" Panda.comm(userInput);","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"modembcc"},"content":" catch (PandaException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"modembcc"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"modembcc"},"content":" myObj.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"modembcc"},"content":" Panda.shutDown();","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":188}},{"path":"src/main/java/PandaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class PandaException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public PandaException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super();","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" public PandaException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" super(message);","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" public PandaException(Throwable cause) {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" super(cause);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" public PandaException(String message, Throwable cause) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" super(message, cause);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":17}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" private final String desc;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":" public void mark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":" public void unmark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":" Task(String desc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"modembcc"},"content":" this.desc \u003d desc;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"modembcc"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"modembcc"},"content":" private String curStatus() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"modembcc"},"content":" return \"[\" + (isDone ? \u0027X\u0027 : \u0027 \u0027) + \"]\";","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"modembcc"},"content":" return curStatus() + \u0027 \u0027 + desc;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"modembcc"},"content":" public String saveString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"modembcc"},"content":" return (isDone ? \"1\" : \"0\") + \" | \" + desc;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":29}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" Todo(String desc) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(desc);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"modembcc"},"content":" public String saveString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" return \"T | \" + super.saveString();","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":13}},{"path":"src/main/java/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"public class UnknownCommandException extends PandaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":" public UnknownCommandException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":" super(\"OOPS! Panda doesn\u0027t have that command.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"modembcc":5}},{"path":"src/main/list.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"D | 0 | return book | Oct 15 2019 12AM","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"E | 0 | project meeting | Oct 15 2019 2PM | Oct 15 2019 4PM","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"T | 0 | sleep","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"T | 0 | wake up","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"D | 0 | party | Oct 15 2019 12AM","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"modembcc":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"modembcc"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"modembcc"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"modembcc"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"modembcc"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"modembcc"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"modembcc"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"modembcc"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":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":"modembcc"},"content":"if not exist .\\bin mkdir .\\bin","lastModifiedDate":"2024-01-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":"modembcc"},"content":"for %%i in (.\\src\\main\\java\\*.java) do (","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"modembcc"},"content":" javac -cp .\\src\\main\\java -Xlint:none -d .\\bin %%i","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"modembcc"},"content":")","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"modembcc"},"content":"","lastModifiedDate":"2024-01-25"},{"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":"modembcc"},"content":"java -classpath .\\bin Panda \u003c .\\text-ui-test\\input.txt \u003e .\\text-ui-test\\ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"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":"modembcc"},"content":"FC .\\text-ui-test\\ACTUAL.TXT .\\text-ui-test\\EXPECTED.TXT","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"modembcc":7,"-":17}}] diff --git a/modembcc_ip_master/commits.json b/modembcc_ip_master/commits.json index e3d93516..d9124c31 100644 --- a/modembcc_ip_master/commits.json +++ b/modembcc_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"modembcc":[{"date":"2024-01-25","commitResults":[{"hash":"bf686c7b3b617f3ca5142d631a4100ca340e65af","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"70b4944f254382099f852e29698ca6cb8b39f559","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":2}}},{"hash":"d8d932c942080aee8bd4ae3276bd02d8f4ac2a14","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"7ba250f84e52a144b023c6fd391271989302a65a","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":13}}},{"hash":"f81bcd88c7d6b42d7b68162d1db9cfc093e9660d","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":5}}},{"hash":"e233ef6b288c4844f911d6b1324adb3e45b2cd40","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":2,"deletions":1},"bat":{"insertions":7,"deletions":4}}}]},{"date":"2024-01-27","commitResults":[{"hash":"27cafdf6f782372fef50d7ad276078de0bc85375","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":42}}},{"hash":"e24524934706bcd9632f780db3c1e556fce0d93a","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":22}}}]},{"date":"2024-01-28","commitResults":[{"hash":"0e3e0289376dd6a0af4f22f8d2b413804539b780","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":64,"deletions":0}}},{"hash":"99c61c6ae0998cc9afd73bdc917cb6714c20a145","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"modembcc":{"java":327,"md":0,"fxml":0,"sh":0,"bat":7,"gradle":0,"txt":12}},"authorContributionVariance":{"modembcc":8129.6406},"authorDisplayNameMap":{"modembcc":"CS2103T-W08-4 PAWI..KORN"}} +{"authorDailyContributionsMap":{"modembcc":[{"date":"2024-01-25","commitResults":[{"hash":"bf686c7b3b617f3ca5142d631a4100ca340e65af","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"70b4944f254382099f852e29698ca6cb8b39f559","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":2}}},{"hash":"d8d932c942080aee8bd4ae3276bd02d8f4ac2a14","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"7ba250f84e52a144b023c6fd391271989302a65a","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":13}}},{"hash":"f81bcd88c7d6b42d7b68162d1db9cfc093e9660d","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":5}}},{"hash":"e233ef6b288c4844f911d6b1324adb3e45b2cd40","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":2,"deletions":1},"bat":{"insertions":7,"deletions":4}}}]},{"date":"2024-01-27","commitResults":[{"hash":"27cafdf6f782372fef50d7ad276078de0bc85375","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":42}}},{"hash":"e24524934706bcd9632f780db3c1e556fce0d93a","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":22}}}]},{"date":"2024-01-28","commitResults":[{"hash":"0e3e0289376dd6a0af4f22f8d2b413804539b780","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":64,"deletions":0}}},{"hash":"99c61c6ae0998cc9afd73bdc917cb6714c20a145","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"b9a477740cb0ef22d358cc99d9067b7593cb76ab","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":60,"deletions":10}}},{"hash":"62f01f3c24a103583db01e4a69a0e7848047cbc2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"modembcc":{"java":377,"md":0,"fxml":0,"sh":0,"bat":7,"gradle":0,"txt":14}},"authorContributionVariance":{"modembcc":7044.1665},"authorDisplayNameMap":{"modembcc":"CS2103T-W08-4 PAWI..KORN"}} diff --git a/nichee_ip_master/authorship.json b/nichee_ip_master/authorship.json index d775e007..670822fe 100644 --- a/nichee_ip_master/authorship.json +++ b/nichee_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"T | 1 | dasdasads","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"E | 1 | project meeting | Oct 15 2019 18:00 | Oct 15 2019 22:00","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"E | 0 | project meeting | Oct 15 2019 18:00 | Oct 15 2019 22:00","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"T | 0 | adsasdgrttewgg","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"T | 0 | dasdsdas","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nichee":5}},{"path":"src/main/java/Duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" this.by \u003d LocalDateTime.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" this.by \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" public boolean hasValidDate() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" return by !\u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.getBy() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" public String getBy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"nichee":29}},{"path":"src/main/java/Duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":" private Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" public Duke() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" this.parser \u003d new Parser(this.ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" this.storage \u003d new Storage(this.ui, this.parser);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" this.taskList \u003d new TaskList(this.ui, this.parser, this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" this.taskList.listFunction();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static void main(String[] args){","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" new Duke().run();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"nichee":22,"-":4}},{"path":"src/main/java/Duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" this.from \u003d LocalDateTime.parse(from, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" this.to \u003d LocalDateTime.parse(to, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" // System.err.println(\"Error parsing event dates: \" + from + \" and \" + to + \". Please use the format \u0027yyyy-MM-dd HHmm\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" this.from \u003d null; // Set to null in case of parsing error","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" this.to \u003d null; // Set to null in case of parsing error","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" public String getFrom() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" return this.from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" public String getTo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" return this.to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" public Boolean hasValidDate() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" return this.from !\u003d null \u0026\u0026 this.to !\u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.getFrom() + \" to: \" + this.getTo() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"nichee":37}},{"path":"src/main/java/Duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" public Parser(Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" public Task parseTask(String line) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" ui.taskFormatError(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" todo.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" return todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" if (parts.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" ui.deadlineMissingBy(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" String by \u003d parts[3].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":" Deadline deadline \u003d new Deadline(description, parseDateString(by));","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"nichee"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"nichee"},"content":" deadline.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"nichee"},"content":" return deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"nichee"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"nichee"},"content":" if (parts.length \u003c 5) { // missing from/to or both","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"nichee"},"content":" ui.eventMissingParam(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"nichee"},"content":" String from \u003d parts[3].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"nichee"},"content":" String to \u003d parts[4].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"nichee"},"content":" Event event \u003d new Event(description, parseDateString(from), parseDateString(to));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"nichee"},"content":" if (isDone) event.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"nichee"},"content":" return event;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"nichee"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"nichee"},"content":" ui.unknownTaskType(type);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"nichee"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"nichee"},"content":" ui.genericTaskError(e, line);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"nichee"},"content":" public String parseDateString(String dateString) throws DateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"nichee"},"content":" LocalDateTime date \u003d LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"nichee"},"content":" return date.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"nichee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"nichee"},"content":" ui.parseDateError(dateString);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"nichee":69}},{"path":"src/main/java/Duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" public Storage (Ui ui, Parser parser) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" this.parser \u003d parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" public String formatTaskForFile(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" String returnString \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" String type \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":" int status \u003d task.isDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" returnString +\u003d type + \" | \" + status + \" | \" + details;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" returnString +\u003d \" | \" + deadline.getBy();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" returnString +\u003d \" | \" + event.getFrom() + \" | \" + event.getTo();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" return returnString;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" public void saveTaskToFile(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":" FileWriter fileWriter \u003d new FileWriter(\"./data/duke.txt\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"nichee"},"content":" String taskLine \u003d formatTaskForFile(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"nichee"},"content":" fileWriter.write(taskLine + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"nichee"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"nichee"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"nichee"},"content":" ui.saveError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"nichee"},"content":" public void saveAllTasksToFile(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"nichee"},"content":" // overwrites all files for mark/unmark functions","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"nichee"},"content":" FileWriter fileWriter \u003d new FileWriter(\"./data/duke.txt\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"nichee"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"nichee"},"content":" String taskLine \u003d formatTaskForFile(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"nichee"},"content":" fileWriter.write(taskLine + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"nichee"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"nichee"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"nichee"},"content":" ui.saveError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"nichee":58}},{"path":"src/main/java/Duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" return description;","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" public void markDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" //...","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" public Integer isDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" return this.isDone","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":" ? 1","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" : 0;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"nichee":36}},{"path":"src/main/java/Duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" private Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" private int currIndex \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" public TaskList(Ui ui, Parser parser, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" this.parser \u003d parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" loadTasksFromFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" enum CommandType {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":" static CommandType getCommandType(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" return valueOf(command.toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" return INVALID;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" public void loadTasksFromFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" File directory \u003d new File(\"./data\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":" directory.mkdirs(); // create directory if does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" File file \u003d new File(directory, \"duke.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"nichee"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"nichee"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"nichee"},"content":" int lines \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"nichee"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"nichee"},"content":" String taskLine \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"nichee"},"content":" Task task \u003d parser.parseTask(taskLine); // Implement this method based on your task format","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"nichee"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"nichee"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"nichee"},"content":" lines++;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"nichee"},"content":" this.currIndex++;","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"nichee"},"content":" ui.loadFiles(lines);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"nichee"},"content":" } catch(IOException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"nichee"},"content":" ui.createFileError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"nichee"},"content":" public void listFunction() {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"nichee"},"content":" // Duke.Duke.TaskManager taskManager \u003d new Duke.Duke.TaskManager(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"nichee"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"nichee"},"content":" String currLine \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"nichee"},"content":" while (!currLine.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"nichee"},"content":" String[] command \u003d currLine.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"nichee"},"content":" CommandType commandType \u003d CommandType.getCommandType(command[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"nichee"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"nichee"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"nichee"},"content":" ui.displayList(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"nichee"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"nichee"},"content":" int taskIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"nichee"},"content":" if (taskIndex \u003c currIndex \u0026\u0026 taskIndex \u003e\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"nichee"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"nichee"},"content":" task.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"nichee"},"content":" ui.markTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"nichee"},"content":" this.storage.saveAllTasksToFile(this.taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"nichee"},"content":" } else { // out of range","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"nichee"},"content":" ui.taskOutOfBounds(currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"nichee"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"nichee"},"content":" ui.invalidTaskNumber(command[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"nichee"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"nichee"},"content":" ui.taskOutOfBounds(currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"nichee"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"nichee"},"content":" int taskIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"nichee"},"content":" if (taskIndex \u003c currIndex \u0026\u0026 taskIndex \u003e\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"nichee"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"nichee"},"content":" task.markUndone();","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"nichee"},"content":" ui.unmarkTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"nichee"},"content":" this.storage.saveAllTasksToFile(this.taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"nichee"},"content":" } else { // out of range","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"nichee"},"content":" ui.invalidTaskNumber(command[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"nichee"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"nichee"},"content":" ui.invalidTaskNumber(command[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"nichee"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"nichee"},"content":" ui.taskOutOfBounds(currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"nichee"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"nichee"},"content":" Task newTodo \u003d new Todo(command[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"nichee"},"content":" taskList.add(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"nichee"},"content":" currIndex++;","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"nichee"},"content":" ui.addMessage(newTodo, currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"nichee"},"content":" this.storage.saveTaskToFile(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"nichee"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"nichee"},"content":" ui.todoFormatError();","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"nichee"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"nichee"},"content":" String[] details \u003d command[1].split(\" /by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"nichee"},"content":" String description \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"nichee"},"content":" String by \u003d details[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"nichee"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"nichee"},"content":" if (newDeadline.hasValidDate()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"nichee"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"nichee"},"content":" currIndex++;","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"nichee"},"content":" ui.addMessage(newDeadline, currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"nichee"},"content":" this.storage.saveTaskToFile(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"nichee"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"nichee"},"content":" ui.deadlineDateError();","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"nichee"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"nichee"},"content":" ui.deadlineFormatError();","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"nichee"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"nichee"},"content":" String[] details \u003d command[1].split(\" /from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"nichee"},"content":" String description \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"nichee"},"content":" String[] fromTo \u003d details[1].split(\" /to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"nichee"},"content":" String from \u003d fromTo[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"nichee"},"content":" String to \u003d fromTo[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"nichee"},"content":" Event newEvent \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"nichee"},"content":" if (newEvent.hasValidDate()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"nichee"},"content":" taskList.add(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"nichee"},"content":" currIndex++;","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"nichee"},"content":" ui.addMessage(newEvent, currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"nichee"},"content":" this.storage.saveTaskToFile(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"nichee"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"nichee"},"content":" ui.eventDateError();","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"nichee"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"nichee"},"content":" ui.eventFormatError();","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"nichee"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"nichee"},"content":" int taskIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"nichee"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c taskList.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"nichee"},"content":" Task removedTask \u003d taskList.remove(taskIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"nichee"},"content":" ui.deleteTask(removedTask.toString(), taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"nichee"},"content":" this.storage.saveAllTasksToFile(this.taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"nichee"},"content":" currIndex--;","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"nichee"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"nichee"},"content":" ui.invalidTaskNumber(String.valueOf(taskIndex + 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"nichee"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"nichee"},"content":" ui.invalidTaskNumber(command[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"nichee"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"nichee"},"content":" ui.unknownCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"nichee"},"content":" currLine \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"nichee"},"content":" ui.exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"nichee":178}},{"path":"src/main/java/Duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"nichee":13}},{"path":"src/main/java/Duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":" public Ui() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" this.greet();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" public void displayLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" System.out.println(gap() + \"_\".repeat(50));","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" public static String gap() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" return \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" public void wrapInLines(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" public void echo(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" this.wrapInLines(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" public void greet() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" this.wrapInLines(gap() + \"Hello! I\u0027m Shirmin\" + \"\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" + gap() + \"What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" public void exit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" wrapInLines(gap() + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"nichee"},"content":" public void displayList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"nichee"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"There are no tasks in your list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"nichee"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"nichee"},"content":" int i \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"nichee"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + i + \".\" + t.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"nichee"},"content":" i++;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"nichee"},"content":" public void outOfRangeError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"nichee"},"content":" System.out.println(\"invalid, out of range\");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"nichee"},"content":" public void markTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + this.gap() + task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"nichee"},"content":" public void unmarkTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + this.gap() + task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"nichee"},"content":" public void deleteTask(String task, ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"Ok, I\u0027ve removed the task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + this.gap() + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"You have \" + taskList.size() + \" tasks remaining in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"nichee"},"content":" public void unknownCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"nichee"},"content":" System.out.println(\"OH NO I\u0027m not sure what that command is. You may use the commands \" +","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"nichee"},"content":" \"todo, deadline, list, event, delete, mark and unmark\");","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"nichee"},"content":" public \u003cT extends Task\u003e void addMessage(T task, Integer number) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"nichee"},"content":" // displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + this.gap() + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"Now you have \" + number.toString() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"nichee"},"content":" public void invalidTaskNumber(String number) {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"nichee"},"content":" System.out.println(\"Invalid task number: \" + number);","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"nichee"},"content":" public void loadFiles(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"nichee"},"content":" System.out.println(\" I\u0027ve loaded \" + num + \" tasks from Duke.txt!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"nichee"},"content":" public void eventDateError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"nichee"},"content":" System.out.println(\"Error creating event task. Please \" +","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"nichee"},"content":" \"provide a valid from and valid to date, both in the format \u0027yyyy-MM-dd HHmm\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"nichee"},"content":" public void eventFormatError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"nichee"},"content":" System.out.println(\"oopsy doopsy you made a -ucky wucky! The description of a event\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"nichee"},"content":" \" must be in the format \u0027event [task] /from [time]\u0027 /to [time].\");","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"nichee"},"content":" public void taskOutOfBounds(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"nichee"},"content":" System.out.println(\"There are \" + num + \" numbers, please enter a number from 1 to \" + num);","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"nichee"},"content":" public void todoFormatError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"nichee"},"content":" System.out.println(\"oopsy doopsy you made a -ucky wucky! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"nichee"},"content":" public void deadlineDateError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"nichee"},"content":" System.out.println(\"Error creating deadline task. Please \"+","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"nichee"},"content":" \"provide a valid date in the format \u0027yyyy-MM-dd HHmm\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"nichee"},"content":" public void deadlineFormatError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"nichee"},"content":" System.out.println(\"oopsy doopsy you made a -ucky wucky! The description of a deadline\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"nichee"},"content":" \" must be in the format \u0027deadline [task] /by [time]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"nichee"},"content":" public void createFileError(IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"nichee"},"content":" System.err.println(\"Error creating \u0027duke.txt\u0027 file: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"nichee"},"content":" public void taskFormatError(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"nichee"},"content":" System.err.println(\"Task in file not in correct format or missing parts: \" + line);","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"nichee"},"content":" public void deadlineMissingBy(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"nichee"},"content":" System.err.println(\"Deadline task missing \u0027by\u0027 part: \" + line);","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"nichee"},"content":" public void eventMissingParam(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"nichee"},"content":" System.err.println(\"Event task missing \u0027from\u0027 or \u0027to\u0027 parts: \" + line);","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"nichee"},"content":" public void unknownTaskType(String type) {","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"nichee"},"content":" System.err.println(\"Unknown task type: \" + type);","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"nichee"},"content":" public void genericTaskError(Exception e, String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"nichee"},"content":" System.err.println(\"Error parsing task from file: \" + e.getMessage() + \" - Line: \" + line);","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"nichee"},"content":" public void saveError(IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"nichee"},"content":" System.err.println(\"Error saving task to file: \" + e.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"nichee"},"content":" public void parseDateError(String dateString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"nichee"},"content":" System.err.println(\"Error parsing date: \" + dateString + \". Please use the format \u0027yyyy-MM-dd HHmm\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"nichee":158}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"D | 0 | return book | Oct 15 2019 18:00","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"D | 0 | return book | Oct 15 2019 18:00","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"D | 0 | return book | Oct 15 2019 18:00","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"D | 0 | return book | Oct 15 2019 18:00","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nichee":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"deadline return book /by 2019-10-15 1800","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"list","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nichee":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":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":"javac -cp \"..\\src\\main\\java\\Duke\\Duke.java\" -Xlint:none -d ..\\bin \"..\\src\\main\\java\\Duke\\*.java\"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"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":"nichee"},"content":"java -classpath ..\\bin Duke\u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"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"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"nichee":6,"-":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":"nichee"},"content":" mainClass.set(\u0027Duke.Duke\u0027)","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"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":"nichee"},"content":" archiveBaseName \u003d \"Duke\"","lastModifiedDate":"2024-01-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":"nichee"},"content":" mainClassName \u003d \u0027Duke.Duke\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"nichee"},"content":" archiveFileName \u003d \u0027Duke.jar\u0027","lastModifiedDate":"2024-01-30"},{"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":{"nichee":5,"-":40}},{"path":"src/main/java/Duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" this.by \u003d LocalDateTime.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" this.by \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" public boolean hasValidDate() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" return by !\u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.getBy() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" public String getBy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"nichee":29}},{"path":"src/main/java/Duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":" private Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" public Duke() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" this.parser \u003d new Parser(this.ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" this.storage \u003d new Storage(this.ui, this.parser);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" this.taskList \u003d new TaskList(this.ui, this.parser, this.storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" this.taskList.listFunction();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static void main(String[] args){","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" new Duke().run();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"nichee":22,"-":4}},{"path":"src/main/java/Duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" this.from \u003d LocalDateTime.parse(from, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" this.to \u003d LocalDateTime.parse(to, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" // System.err.println(\"Error parsing event dates: \" + from + \" and \" + to + \". Please use the format \u0027yyyy-MM-dd HHmm\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" this.from \u003d null; // Set to null in case of parsing error","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" this.to \u003d null; // Set to null in case of parsing error","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" public String getFrom() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" return this.from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" public String getTo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" return this.to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" public Boolean hasValidDate() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" return this.from !\u003d null \u0026\u0026 this.to !\u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.getFrom() + \" to: \" + this.getTo() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"nichee":37}},{"path":"src/main/java/Duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" public Parser(Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" public Task parseTask(String line) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" ui.taskFormatError(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" boolean isDone \u003d parts[1].trim().equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" String description \u003d parts[2].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" todo.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" return todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" if (parts.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" ui.deadlineMissingBy(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" String by \u003d parts[3].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":" Deadline deadline \u003d new Deadline(description, parseDateString(by));","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"nichee"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"nichee"},"content":" deadline.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"nichee"},"content":" return deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"nichee"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"nichee"},"content":" if (parts.length \u003c 5) { // missing from/to or both","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"nichee"},"content":" ui.eventMissingParam(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"nichee"},"content":" String from \u003d parts[3].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"nichee"},"content":" String to \u003d parts[4].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"nichee"},"content":" Event event \u003d new Event(description, parseDateString(from), parseDateString(to));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"nichee"},"content":" if (isDone) event.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"nichee"},"content":" return event;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"nichee"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"nichee"},"content":" ui.unknownTaskType(type);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"nichee"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"nichee"},"content":" ui.genericTaskError(e, line);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"nichee"},"content":" public String parseDateString(String dateString) throws DateTimeParseException {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"nichee"},"content":" LocalDateTime date \u003d LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"nichee"},"content":" return date.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"nichee"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"nichee"},"content":" ui.parseDateError(dateString);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"nichee"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"nichee":69}},{"path":"src/main/java/Duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" public Storage (Ui ui, Parser parser) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" this.parser \u003d parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" public String formatTaskForFile(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" String returnString \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" String type \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" task instanceof Todo ? \"T\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" task instanceof Deadline ? \"D\" :","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" task instanceof Event ? \"E\" : \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":" int status \u003d task.isDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" String details \u003d task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" returnString +\u003d type + \" | \" + status + \" | \" + details;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" Deadline deadline \u003d (Deadline) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" returnString +\u003d \" | \" + deadline.getBy();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" Event event \u003d (Event) task;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" returnString +\u003d \" | \" + event.getFrom() + \" | \" + event.getTo();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" return returnString;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" public void saveTaskToFile(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":" FileWriter fileWriter \u003d new FileWriter(\"./data/duke.txt\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"nichee"},"content":" String taskLine \u003d formatTaskForFile(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"nichee"},"content":" fileWriter.write(taskLine + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"nichee"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"nichee"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"nichee"},"content":" ui.saveError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"nichee"},"content":" public void saveAllTasksToFile(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"nichee"},"content":" // overwrites all files for mark/unmark functions","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"nichee"},"content":" FileWriter fileWriter \u003d new FileWriter(\"./data/duke.txt\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"nichee"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"nichee"},"content":" String taskLine \u003d formatTaskForFile(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"nichee"},"content":" fileWriter.write(taskLine + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"nichee"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"nichee"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"nichee"},"content":" ui.saveError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"nichee":58}},{"path":"src/main/java/Duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" return description;","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" public void markDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" //...","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" public Integer isDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" return this.isDone","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":" ? 1","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" : 0;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"nichee":36}},{"path":"src/main/java/Duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" private Parser parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" private int currIndex \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":" public TaskList(Ui ui, Parser parser, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" this.parser \u003d parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":" loadTasksFromFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" enum CommandType {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":" static CommandType getCommandType(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":" return valueOf(command.toUpperCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" return INVALID;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" public void loadTasksFromFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" File directory \u003d new File(\"./data\");","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":" directory.mkdirs(); // create directory if does not exist","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" File file \u003d new File(directory, \"duke.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"nichee"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"nichee"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"nichee"},"content":" int lines \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"nichee"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"nichee"},"content":" String taskLine \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"nichee"},"content":" Task task \u003d parser.parseTask(taskLine); // Implement this method based on your task format","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"nichee"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"nichee"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"nichee"},"content":" lines++;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"nichee"},"content":" this.currIndex++;","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"nichee"},"content":" ui.loadFiles(lines);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"nichee"},"content":" } catch(IOException e){","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"nichee"},"content":" ui.createFileError(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"nichee"},"content":" public void listFunction() {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"nichee"},"content":" // Duke.Duke.TaskManager taskManager \u003d new Duke.Duke.TaskManager(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"nichee"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"nichee"},"content":" String currLine \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"nichee"},"content":" while (!currLine.equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"nichee"},"content":" String[] command \u003d currLine.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"nichee"},"content":" CommandType commandType \u003d CommandType.getCommandType(command[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"nichee"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"nichee"},"content":" case LIST:","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"nichee"},"content":" ui.displayList(taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"nichee"},"content":" case MARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"nichee"},"content":" int taskIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"nichee"},"content":" if (taskIndex \u003c currIndex \u0026\u0026 taskIndex \u003e\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"nichee"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"nichee"},"content":" task.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"nichee"},"content":" ui.markTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"nichee"},"content":" this.storage.saveAllTasksToFile(this.taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"nichee"},"content":" } else { // out of range","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"nichee"},"content":" ui.taskOutOfBounds(currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"nichee"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"nichee"},"content":" ui.invalidTaskNumber(command[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"nichee"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"nichee"},"content":" ui.taskOutOfBounds(currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"nichee"},"content":" case UNMARK:","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"nichee"},"content":" int taskIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"nichee"},"content":" if (taskIndex \u003c currIndex \u0026\u0026 taskIndex \u003e\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"nichee"},"content":" Task task \u003d taskList.get(taskIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"nichee"},"content":" task.markUndone();","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"nichee"},"content":" ui.unmarkTask(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"nichee"},"content":" this.storage.saveAllTasksToFile(this.taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"nichee"},"content":" } else { // out of range","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"nichee"},"content":" ui.invalidTaskNumber(command[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"nichee"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"nichee"},"content":" ui.invalidTaskNumber(command[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"nichee"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"nichee"},"content":" ui.taskOutOfBounds(currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"nichee"},"content":" case TODO:","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"nichee"},"content":" Task newTodo \u003d new Todo(command[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"nichee"},"content":" taskList.add(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"nichee"},"content":" currIndex++;","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"nichee"},"content":" ui.addMessage(newTodo, currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"nichee"},"content":" this.storage.saveTaskToFile(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"nichee"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"nichee"},"content":" ui.todoFormatError();","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"nichee"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"nichee"},"content":" String[] details \u003d command[1].split(\" /by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"nichee"},"content":" String description \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"nichee"},"content":" String by \u003d details[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"nichee"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"nichee"},"content":" if (newDeadline.hasValidDate()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"nichee"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"nichee"},"content":" currIndex++;","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"nichee"},"content":" ui.addMessage(newDeadline, currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"nichee"},"content":" this.storage.saveTaskToFile(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"nichee"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"nichee"},"content":" ui.deadlineDateError();","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"nichee"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"nichee"},"content":" ui.deadlineFormatError();","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"nichee"},"content":" case EVENT:","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"nichee"},"content":" String[] details \u003d command[1].split(\" /from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"nichee"},"content":" String description \u003d details[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"nichee"},"content":" String[] fromTo \u003d details[1].split(\" /to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"nichee"},"content":" String from \u003d fromTo[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"nichee"},"content":" String to \u003d fromTo[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"nichee"},"content":" Event newEvent \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"nichee"},"content":" if (newEvent.hasValidDate()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"nichee"},"content":" taskList.add(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"nichee"},"content":" currIndex++;","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"nichee"},"content":" ui.addMessage(newEvent, currIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"nichee"},"content":" this.storage.saveTaskToFile(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"nichee"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"nichee"},"content":" ui.eventDateError();","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"nichee"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"nichee"},"content":" ui.eventFormatError();","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"nichee"},"content":" case DELETE:","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"nichee"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"nichee"},"content":" int taskIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"nichee"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c taskList.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"nichee"},"content":" Task removedTask \u003d taskList.remove(taskIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"nichee"},"content":" ui.deleteTask(removedTask.toString(), taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"nichee"},"content":" this.storage.saveAllTasksToFile(this.taskList);","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"nichee"},"content":" currIndex--;","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"nichee"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"nichee"},"content":" ui.invalidTaskNumber(String.valueOf(taskIndex + 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"nichee"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"nichee"},"content":" ui.invalidTaskNumber(command[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"nichee"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"nichee"},"content":" ui.unknownCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"nichee"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"nichee"},"content":" currLine \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"nichee"},"content":" ui.exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"nichee":178}},{"path":"src/main/java/Duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"nichee":13}},{"path":"src/main/java/Duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":" public Ui() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" this.greet();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" public void displayLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" System.out.println(gap() + \"_\".repeat(50));","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":" public static String gap() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"nichee"},"content":" return \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"nichee"},"content":" public void wrapInLines(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"nichee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":" public void echo(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"nichee"},"content":" this.wrapInLines(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"nichee"},"content":" public void greet() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"nichee"},"content":" this.wrapInLines(gap() + \"Hello! I\u0027m Shirmin\" + \"\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"nichee"},"content":" + gap() + \"What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"nichee"},"content":" public void exit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"nichee"},"content":" wrapInLines(gap() + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"nichee"},"content":" public void displayList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"nichee"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"There are no tasks in your list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"nichee"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"nichee"},"content":" int i \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"nichee"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + i + \".\" + t.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"nichee"},"content":" i++;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"nichee"},"content":" public void outOfRangeError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"nichee"},"content":" System.out.println(\"invalid, out of range\");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"nichee"},"content":" public void markTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + this.gap() + task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"nichee"},"content":" public void unmarkTask(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + this.gap() + task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"nichee"},"content":" public void deleteTask(String task, ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"Ok, I\u0027ve removed the task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + this.gap() + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"You have \" + taskList.size() + \" tasks remaining in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"nichee"},"content":" public void unknownCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"nichee"},"content":" System.out.println(\"OH NO I\u0027m not sure what that command is. You may use the commands \" +","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"nichee"},"content":" \"todo, deadline, list, event, delete, mark and unmark\");","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"nichee"},"content":" public \u003cT extends Task\u003e void addMessage(T task, Integer number) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"nichee"},"content":" // displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + this.gap() + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"nichee"},"content":" System.out.println(this.gap() + \"Now you have \" + number.toString() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"nichee"},"content":" public void invalidTaskNumber(String number) {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"nichee"},"content":" System.out.println(\"Invalid task number: \" + number);","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"nichee"},"content":" public void loadFiles(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"nichee"},"content":" System.out.println(\" I\u0027ve loaded \" + num + \" tasks from Duke.txt!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"nichee"},"content":" public void eventDateError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"nichee"},"content":" System.out.println(\"Error creating event task. Please \" +","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"nichee"},"content":" \"provide a valid from and valid to date, both in the format \u0027yyyy-MM-dd HHmm\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"nichee"},"content":" public void eventFormatError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"nichee"},"content":" System.out.println(\"oopsy doopsy you made a -ucky wucky! The description of a event\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"nichee"},"content":" \" must be in the format \u0027event [task] /from [time]\u0027 /to [time].\");","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"nichee"},"content":" public void taskOutOfBounds(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"nichee"},"content":" System.out.println(\"There are \" + num + \" numbers, please enter a number from 1 to \" + num);","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"nichee"},"content":" public void todoFormatError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"nichee"},"content":" System.out.println(\"oopsy doopsy you made a -ucky wucky! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"nichee"},"content":" public void deadlineDateError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"nichee"},"content":" System.out.println(\"Error creating deadline task. Please \"+","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"nichee"},"content":" \"provide a valid date in the format \u0027yyyy-MM-dd HHmm\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"nichee"},"content":" public void deadlineFormatError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"nichee"},"content":" System.out.println(\"oopsy doopsy you made a -ucky wucky! The description of a deadline\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"nichee"},"content":" \" must be in the format \u0027deadline [task] /by [time]\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"nichee"},"content":" public void createFileError(IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"nichee"},"content":" System.err.println(\"Error creating \u0027duke.txt\u0027 file: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"nichee"},"content":" this.displayLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"nichee"},"content":" public void taskFormatError(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"nichee"},"content":" System.err.println(\"Task in file not in correct format or missing parts: \" + line);","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"nichee"},"content":" public void deadlineMissingBy(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"nichee"},"content":" System.err.println(\"Deadline task missing \u0027by\u0027 part: \" + line);","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"nichee"},"content":" public void eventMissingParam(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"nichee"},"content":" System.err.println(\"Event task missing \u0027from\u0027 or \u0027to\u0027 parts: \" + line);","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"nichee"},"content":" public void unknownTaskType(String type) {","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"nichee"},"content":" System.err.println(\"Unknown task type: \" + type);","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"nichee"},"content":" public void genericTaskError(Exception e, String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"nichee"},"content":" System.err.println(\"Error parsing task from file: \" + e.getMessage() + \" - Line: \" + line);","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"nichee"},"content":" public void saveError(IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"nichee"},"content":" System.err.println(\"Error saving task to file: \" + e.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"nichee"},"content":" public void parseDateError(String dateString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"nichee"},"content":" System.err.println(\"Error parsing date: \" + dateString + \". Please use the format \u0027yyyy-MM-dd HHmm\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"nichee":158}},{"path":"src/test/java/Duke/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":" public void validDateTest(){","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" Deadline testDeadline \u003d new Deadline(\"test\", \"2019-10-15 2300\" );","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" assertEquals(\"[D][ ] test (by: Oct 15 2019 23:00)\", testDeadline.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nichee":13}},{"path":"src/test/java/Duke/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"package Duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nichee"},"content":"public class EventTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nichee"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nichee"},"content":" public void validDateTest(){","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":" Event testEvent \u003d new Event(\"test\", \"2019-10-15 1800\",\"2019-10-15 2300\" );","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":" assertEquals(true, testEvent.hasValidDate());","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nichee"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nichee":15}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"D | 0 | return book | Oct 15 2019 18:00","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"D | 0 | return book | Oct 15 2019 18:00","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nichee"},"content":"D | 0 | return book | Oct 15 2019 18:00","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nichee"},"content":"D | 0 | return book | Oct 15 2019 18:00","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nichee":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"nichee"},"content":"deadline return book /by 2019-10-15 1800","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"nichee"},"content":"list","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nichee":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":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"nichee"},"content":"javac -cp \"..\\src\\main\\java\\Duke\\Duke.java\" -Xlint:none -d ..\\bin \"..\\src\\main\\java\\Duke\\*.java\"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"},{"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":"nichee"},"content":"java -classpath ..\\bin Duke\u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"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"},{"lineNumber":25,"author":{"gitId":"nichee"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"nichee":6,"-":19}}] diff --git a/nichee_ip_master/commits.json b/nichee_ip_master/commits.json index 1d3a66bc..f9b0fc64 100644 --- a/nichee_ip_master/commits.json +++ b/nichee_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"nichee":[{"date":"2024-01-21","commitResults":[{"hash":"3c905d9dd262579888ae4007bcda6dcd1f566dcd","isMergeCommit":false,"messageTitle":"Add Shirmin.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"16a07f8dfced2d934b97623f8e7056e708888214","isMergeCommit":false,"messageTitle":"add echo function, refactor chatbot skeleton","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"c292e65fedf6c5d91130e5613bec4b6a4f312758","isMergeCommit":false,"messageTitle":"implement add and list functions, fix indentations","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":11}}},{"hash":"a1b9b5ba42330945172a4772a77206ece22b3bc9","isMergeCommit":false,"messageTitle":"add mark, unmark, created Task.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":12}}}]},{"date":"2024-01-22","commitResults":[{"hash":"8753b76e97b1c932534a5f241c22e3ca58449a02","isMergeCommit":false,"messageTitle":"add todo.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":4}}},{"hash":"364796e797f10fd71563520dd21bcdc9e456cdd5","isMergeCommit":false,"messageTitle":"add Event.java, Deadline.java","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":4}}},{"hash":"aa9d3584bc89e9281f54fb04617ca55e1b619547","isMergeCommit":false,"messageTitle":"setup ui test file, fix line display bug","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":3,"deletions":3},"bat":{"insertions":6,"deletions":2}}},{"hash":"4265ce71065f83df919b5c8b3f4e507095cef253","isMergeCommit":false,"messageTitle":"add exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":28}}},{"hash":"8b0785b35e0f2318ee38c34c8f3052cfc4f2ce72","isMergeCommit":false,"messageTitle":"change array implementation to ArrayList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":15}}},{"hash":"b8a3e6df24b0c771a8e195b14720342f381ca0a2","isMergeCommit":false,"messageTitle":"create delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"fe1df82b91472de7619baff1a380bd5f080ba4d5","isMergeCommit":false,"messageTitle":"refactor to use enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":93}}}]},{"date":"2024-01-26","commitResults":[{"hash":"db558ea3638ce60c2ca0dcff675019aca89b28ec","isMergeCommit":false,"messageTitle":"Fix switch case indent convention","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":98}}}]},{"date":"2024-01-28","commitResults":[{"hash":"8fca0f15503afd7956ad152e4cf6eec3bdc59d0f","isMergeCommit":false,"messageTitle":"Rename Shirmin.java to Duke.java and update runtest.bat accordingly","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":183,"deletions":193},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-29","commitResults":[{"hash":"b705926995d35c918508a0cb6182895cbef47b8f","isMergeCommit":false,"messageTitle":"Add helper functions to event classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"95d7c8557b248499fecf0ac2f5a15c5809e95c25","isMergeCommit":false,"messageTitle":"Add save to hard disk functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":184,"deletions":106}}},{"hash":"4053d353779cb311d25adbd7fd4cefce20d45122","isMergeCommit":false,"messageTitle":"Add load data from file functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":5}}},{"hash":"c04f3188c35390437fc9f7c823c5a2559f08ae5a","isMergeCommit":false,"messageTitle":"Fix save to file functionality for mark, unmark, delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"ce3850b1ce041ac14c4934a09f1a029bfda28c5a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"52aaee31ea11a8028d81efea39275e0125e88889","isMergeCommit":false,"messageTitle":"Add deadline datetime support","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":14}}},{"hash":"0dcfe7807f49862dae99a0ddf41553dbc04ba7ad","isMergeCommit":false,"messageTitle":"Add Event class datetime support","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":15}}},{"hash":"b5833d2bebba50ff6ea1ed8c26d335fbc3ae3473","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"3194c3a65d95c896ecf32a454807399fd7f84fb0","isMergeCommit":false,"messageTitle":"Create Duke folder, moved all files to folder","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":7},"java":{"insertions":0,"deletions":0}}},{"hash":"788d17f12d8c7aeeb7546fb451cc6d46393217ca","isMergeCommit":false,"messageTitle":"Create Ui, Storage, Parser, and Tasklist classes and create Duke Package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":26,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"d012dca25d08b804a8ac3a3a2c993de60c1da675","isMergeCommit":false,"messageTitle":"Refactor Duke.java to remove all system output, and encapsulate all user interface interactions in Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":209,"deletions":119}}}]},{"date":"2024-01-30","commitResults":[{"hash":"0b3521d452075dff30769ce61ec6801b48e4a4d5","isMergeCommit":false,"messageTitle":"Refactor Duke.java, encapsulated code into Parser.java, Storage.java and TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":314,"deletions":289}}},{"hash":"797094c932371d82ca4256707f162df34242f8f8","isMergeCommit":false,"messageTitle":"Clean up unnecessary code","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":4},"java":{"insertions":6,"deletions":24}}},{"hash":"b88e419ef6751b34193cb9087f401830984c2531","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"30cec1fac14cf3a62be0cac913f5c8569733a6eb","isMergeCommit":false,"messageTitle":"Fix bug causing unmark and mark to not function properly","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"nichee":{"java":600,"md":0,"fxml":0,"sh":0,"bat":6,"gradle":0,"txt":11}},"authorContributionVariance":{"nichee":81895.74},"authorDisplayNameMap":{"nichee":"CS2103T-T13-1 NICH.. YAO"}} +{"authorDailyContributionsMap":{"nichee":[{"date":"2024-01-21","commitResults":[{"hash":"3c905d9dd262579888ae4007bcda6dcd1f566dcd","isMergeCommit":false,"messageTitle":"Add Shirmin.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"16a07f8dfced2d934b97623f8e7056e708888214","isMergeCommit":false,"messageTitle":"add echo function, refactor chatbot skeleton","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"c292e65fedf6c5d91130e5613bec4b6a4f312758","isMergeCommit":false,"messageTitle":"implement add and list functions, fix indentations","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":11}}},{"hash":"a1b9b5ba42330945172a4772a77206ece22b3bc9","isMergeCommit":false,"messageTitle":"add mark, unmark, created Task.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":12}}}]},{"date":"2024-01-22","commitResults":[{"hash":"8753b76e97b1c932534a5f241c22e3ca58449a02","isMergeCommit":false,"messageTitle":"add todo.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":4}}},{"hash":"364796e797f10fd71563520dd21bcdc9e456cdd5","isMergeCommit":false,"messageTitle":"add Event.java, Deadline.java","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":4}}},{"hash":"aa9d3584bc89e9281f54fb04617ca55e1b619547","isMergeCommit":false,"messageTitle":"setup ui test file, fix line display bug","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":3,"deletions":3},"bat":{"insertions":6,"deletions":2}}},{"hash":"4265ce71065f83df919b5c8b3f4e507095cef253","isMergeCommit":false,"messageTitle":"add exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":28}}},{"hash":"8b0785b35e0f2318ee38c34c8f3052cfc4f2ce72","isMergeCommit":false,"messageTitle":"change array implementation to ArrayList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":15}}},{"hash":"b8a3e6df24b0c771a8e195b14720342f381ca0a2","isMergeCommit":false,"messageTitle":"create delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}},{"hash":"fe1df82b91472de7619baff1a380bd5f080ba4d5","isMergeCommit":false,"messageTitle":"refactor to use enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":93}}}]},{"date":"2024-01-26","commitResults":[{"hash":"db558ea3638ce60c2ca0dcff675019aca89b28ec","isMergeCommit":false,"messageTitle":"Fix switch case indent convention","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":98}}}]},{"date":"2024-01-28","commitResults":[{"hash":"8fca0f15503afd7956ad152e4cf6eec3bdc59d0f","isMergeCommit":false,"messageTitle":"Rename Shirmin.java to Duke.java and update runtest.bat accordingly","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":183,"deletions":193},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-29","commitResults":[{"hash":"b705926995d35c918508a0cb6182895cbef47b8f","isMergeCommit":false,"messageTitle":"Add helper functions to event classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"95d7c8557b248499fecf0ac2f5a15c5809e95c25","isMergeCommit":false,"messageTitle":"Add save to hard disk functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":184,"deletions":106}}},{"hash":"4053d353779cb311d25adbd7fd4cefce20d45122","isMergeCommit":false,"messageTitle":"Add load data from file functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":5}}},{"hash":"c04f3188c35390437fc9f7c823c5a2559f08ae5a","isMergeCommit":false,"messageTitle":"Fix save to file functionality for mark, unmark, delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"ce3850b1ce041ac14c4934a09f1a029bfda28c5a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"52aaee31ea11a8028d81efea39275e0125e88889","isMergeCommit":false,"messageTitle":"Add deadline datetime support","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":14}}},{"hash":"0dcfe7807f49862dae99a0ddf41553dbc04ba7ad","isMergeCommit":false,"messageTitle":"Add Event class datetime support","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":15}}},{"hash":"b5833d2bebba50ff6ea1ed8c26d335fbc3ae3473","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"3194c3a65d95c896ecf32a454807399fd7f84fb0","isMergeCommit":false,"messageTitle":"Create Duke folder, moved all files to folder","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":7},"java":{"insertions":0,"deletions":0}}},{"hash":"788d17f12d8c7aeeb7546fb451cc6d46393217ca","isMergeCommit":false,"messageTitle":"Create Ui, Storage, Parser, and Tasklist classes and create Duke Package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":26,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"d012dca25d08b804a8ac3a3a2c993de60c1da675","isMergeCommit":false,"messageTitle":"Refactor Duke.java to remove all system output, and encapsulate all user interface interactions in Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":209,"deletions":119}}}]},{"date":"2024-01-30","commitResults":[{"hash":"0b3521d452075dff30769ce61ec6801b48e4a4d5","isMergeCommit":false,"messageTitle":"Refactor Duke.java, encapsulated code into Parser.java, Storage.java and TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":314,"deletions":289}}},{"hash":"797094c932371d82ca4256707f162df34242f8f8","isMergeCommit":false,"messageTitle":"Clean up unnecessary code","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":4},"java":{"insertions":6,"deletions":24}}},{"hash":"b88e419ef6751b34193cb9087f401830984c2531","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"30cec1fac14cf3a62be0cac913f5c8569733a6eb","isMergeCommit":false,"messageTitle":"Fix bug causing unmark and mark to not function properly","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"4e6c77a768b5d58b04663c4fea47fdd618345c53","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"b930329fe925abf3fbb41e8635ffc460adb7fdf5","isMergeCommit":false,"messageTitle":"Add JUnit support, add DeadlineTest.java and EventTest.java","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":5},"java":{"insertions":28,"deletions":0}}},{"hash":"8929d9b030dd952b935a144224792fb9367c9435","isMergeCommit":false,"messageTitle":"Change file path in build.gradle","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"nichee":{"java":628,"md":0,"fxml":0,"sh":0,"bat":6,"gradle":5,"txt":6}},"authorContributionVariance":{"nichee":84815.19},"authorDisplayNameMap":{"nichee":"CS2103T-T13-1 NICH.. YAO"}} diff --git a/nyankoclaws_ip_master/authorship.json b/nyankoclaws_ip_master/authorship.json index be464c86..dc79d611 100644 --- a/nyankoclaws_ip_master/authorship.json +++ b/nyankoclaws_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Alpaca.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.ToDo;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.Deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.Event;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":"public class Alpaca {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":" static String name \u003d \"Alpaca\";","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":" static Scanner scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":" static ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" private static void divider() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":" private static String printTask(Task task) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" String type \u003d \"[\" + task.getType() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":" String mark \u003d \"[\" + (task.isDone() ? \"X\" : \" \") + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":" return type + mark + \" \" + task.getName();","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"nyankoclaws"},"content":" private static void greeting() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"nyankoclaws"},"content":" divider();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Hihi! I\u0027m \" + Alpaca.name + \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"nyankoclaws"},"content":" divider();","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"nyankoclaws"},"content":" private static void bye() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"cucu\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"nyankoclaws"},"content":" private static void list() {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"nyankoclaws"},"content":" int counter \u003d 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"nyankoclaws"},"content":" for (Task i : list) {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(counter + \".\" + printTask(i));","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"nyankoclaws"},"content":" counter++;","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"nyankoclaws"},"content":" private static void add(String item) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"nyankoclaws"},"content":" Task task;","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"nyankoclaws"},"content":" if (isValidPrefix(\"todo\", item)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"nyankoclaws"},"content":" task \u003d new ToDo(processParams(removePrefix(item, \"todo \")));","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"nyankoclaws"},"content":" } else if (isValidPrefix(\"deadline\", item)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"nyankoclaws"},"content":" task \u003d new Deadline(processParams(removePrefix(item, \"deadline \")));","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"nyankoclaws"},"content":" } else if (isValidPrefix(\"event\", item)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"nyankoclaws"},"content":" task \u003d new Event(processParams(removePrefix(item, \"event \")));","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"nyankoclaws"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"That is not a valid input sorry :)\");","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"nyankoclaws"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"nyankoclaws"},"content":" list.add(task);","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"added: \" + printTask(task));","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"nyankoclaws"},"content":" private static String processParams(String input) {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"nyankoclaws"},"content":" Pattern pattern \u003d Pattern.compile(\"^[^\\\\/]+\");","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"nyankoclaws"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"nyankoclaws"},"content":" if (!matcher.find()) return input;","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"nyankoclaws"},"content":" String result \u003d matcher.group();","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"nyankoclaws"},"content":" String tmp \u003d input.replaceFirst(\"^[^/]+\", \"\");","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"nyankoclaws"},"content":" if (tmp.equals(\"\")) return input;","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"nyankoclaws"},"content":" tmp \u003d tmp.replaceAll(\"(/)([^ ]+)\", \"$2:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"nyankoclaws"},"content":" result \u003d result + \"(\" + tmp + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"nyankoclaws"},"content":" return result;","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"nyankoclaws"},"content":" private static Boolean isValidPrefix(String prefix, String input) {","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"nyankoclaws"},"content":" Pattern pattern \u003d Pattern.compile(\"^\" + prefix + \" \" + \".+\");","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"nyankoclaws"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"nyankoclaws"},"content":" return matcher.find();","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"nyankoclaws"},"content":" private static int getPrefixNumber(String input) {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"nyankoclaws"},"content":" return Integer.parseInt(input.replaceAll(\"[^0-9]\", \"\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"nyankoclaws"},"content":" private static String removePrefix(String input, String prefix) {","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"nyankoclaws"},"content":" return input.replaceFirst(\"^\" + prefix, \"\");","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"nyankoclaws"},"content":" private static Boolean isValidIndex(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"nyankoclaws"},"content":" if (index \u003e 0 \u0026\u0026 index \u003c\u003d list.size()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"nyankoclaws"},"content":" return true;","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Sorry, that is not a valid index.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"nyankoclaws"},"content":" return false;","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"nyankoclaws"},"content":" private static void mark(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"nyankoclaws"},"content":" if (!isValidIndex(index)) return;","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"nyankoclaws"},"content":" Task task \u003d list.get(index-1);","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"nyankoclaws"},"content":" task.setDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(printTask(task));","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"nyankoclaws"},"content":" private static void unmark(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"nyankoclaws"},"content":" if (!isValidIndex(index)) return;","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"nyankoclaws"},"content":" Task task \u003d list.get(index-1);","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"nyankoclaws"},"content":" task.setUndone();","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(printTask(task));","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"nyankoclaws"},"content":" private static void processInput() {","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"nyankoclaws"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"nyankoclaws"},"content":" divider();","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"nyankoclaws"},"content":" if (line.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"nyankoclaws"},"content":" bye();","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"nyankoclaws"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"nyankoclaws"},"content":" } else if (line.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"nyankoclaws"},"content":" list();","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"nyankoclaws"},"content":" } else if (isValidPrefix(\"mark\", line)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"nyankoclaws"},"content":" mark(getPrefixNumber(line));","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"nyankoclaws"},"content":" } else if (isValidPrefix(\"unmark\", line)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"nyankoclaws"},"content":" unmark(getPrefixNumber(line));","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"nyankoclaws"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"nyankoclaws"},"content":" add(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"nyankoclaws"},"content":" divider();","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"nyankoclaws"},"content":" processInput();","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"nyankoclaws"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"nyankoclaws"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"nyankoclaws"},"content":" greeting();","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"nyankoclaws"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"nyankoclaws"},"content":" processInput();","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"nyankoclaws"},"content":" scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"nyankoclaws":139}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":" public Deadline(String name) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":" super(name);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":" this.type \u003d \"D\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"nyankoclaws":8}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":" public Event(String name) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":" super(name);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":" this.type \u003d \"E\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"nyankoclaws":8}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":" private String name;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":" private Boolean done;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":" protected String type;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":" protected Task(String name) {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":" public String getName() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":" return this.name;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":" public String getType() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" return type;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":" public Boolean isDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":" return this.done;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":" public void setDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"nyankoclaws"},"content":" this.done \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"nyankoclaws"},"content":" public void setUndone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"nyankoclaws"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"nyankoclaws":31}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":" super(name);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":" this.type \u003d \"T\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"nyankoclaws":8}}] +[{"path":"src/main/java/Actions/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Actions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":"import Exceptions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"public abstract class Deadline extends Template {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":" protected static String trigger \u003d \"deadline\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":" protected static Boolean isTrigger(String input, String trigger) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":" return input.toLowerCase().replaceAll(\" \", \"\").replaceAll(\"[0-9]\", \"\").equals(trigger);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":" public static Boolean run(String input, ArrayList\u003cTask\u003e list) throws ArrayIndexOutOfBoundsException, ValueNotFound, InvalidInput {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":" if (isTrigger(input, trigger)) throw new ValueNotFound(\"You need to provide a value for deadline\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":" if (!isTriggerPrefix(input, trigger)) return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" Task task \u003d new Tasks.Deadline(processParams(removePrefix(input, trigger)));","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"added: \" + task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":" numOfTasks(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nyankoclaws":24}},{"path":"src/main/java/Actions/Delete.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Actions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":"import Exceptions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"public abstract class Delete extends Template {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":" protected static String trigger \u003d \"delete\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":" protected static Boolean isTrigger(String input, String trigger) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":" return input.toLowerCase().replaceAll(\" \", \"\").replaceAll(\"[0-9]\", \"\").equals(trigger);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":" public static Boolean run(String input, ArrayList\u003cTask\u003e list) throws ArrayIndexOutOfBoundsException, ValueNotFound, InvalidInput {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":" if (input.toLowerCase().equals(trigger)) throw new ValueNotFound(\"Delete needs a index\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" if (!isTriggerPrefix(input, trigger)) return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" if (!isTrigger(input, trigger)) throw new InvalidInput(\"That\u0027s not a valid input for Delete\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":" int index \u003d getNumber(input, trigger) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) throw new ArrayIndexOutOfBoundsException(\"An item does not exist at that index\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" list.remove(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"nyankoclaws"},"content":" numOfTasks(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"nyankoclaws"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nyankoclaws":28}},{"path":"src/main/java/Actions/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Actions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":"import Exceptions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"public abstract class Event extends Template {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":" protected static String trigger \u003d \"event\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":" protected static Boolean isTrigger(String input, String trigger) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":" return input.toLowerCase().replaceAll(\" \", \"\").replaceAll(\"[0-9]\", \"\").equals(trigger);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":" public static Boolean run(String input, ArrayList\u003cTask\u003e list) throws ArrayIndexOutOfBoundsException, ValueNotFound, InvalidInput {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":" if (isTrigger(input, trigger)) throw new ValueNotFound(\"You need to provide a value for event\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":" if (!isTriggerPrefix(input, trigger)) return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" Task task \u003d new Tasks.Event(processParams(removePrefix(input, trigger)));","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"added: \" + task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":" numOfTasks(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nyankoclaws":24}},{"path":"src/main/java/Actions/Mark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Actions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":"import Exceptions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"public abstract class Mark extends Template {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":" protected static String trigger \u003d \"mark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":" protected static Boolean isTrigger(String input, String trigger) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":" return input.toLowerCase().replaceAll(\" \", \"\").replaceAll(\"[0-9]\", \"\").equals(trigger);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":" public static Boolean run(String input, ArrayList\u003cTask\u003e list) throws ArrayIndexOutOfBoundsException, ValueNotFound, InvalidInput {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":" if (input.toLowerCase().equals(trigger)) throw new ValueNotFound(\"Mark needs a index\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" if (!isTriggerPrefix(input, trigger)) return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" if (!isTrigger(input, trigger)) throw new InvalidInput(\"That\u0027s not a valid input for Mark\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":" int index \u003d getNumber(input, trigger) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) throw new ArrayIndexOutOfBoundsException(\"An item does not exist at that index\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" task.setDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"nyankoclaws"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nyankoclaws":27}},{"path":"src/main/java/Actions/Template.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Actions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"import Exceptions.InvalidInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"import Exceptions.ValueNotFound;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":"public abstract class Template {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":" protected static Boolean isTrigger(String input, String trigger) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":" return input.toLowerCase().replaceAll(\" \", \"\").equals(trigger);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":" protected static Boolean isTriggerPrefix(String input, String trigger) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" Pattern pattern \u003d Pattern.compile(\"^\" + trigger + \" .+\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" Matcher matcher \u003d pattern.matcher(input.toLowerCase());","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":" return matcher.find();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" protected static int getNumber(String input, String trigger) throws InvalidInput {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":" String number \u003d input.toLowerCase().replaceFirst(\"^\" + trigger, \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":" number \u003d number.replaceAll(\" \", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"nyankoclaws"},"content":" if (number.equals(\"\")) throw new InvalidInput(\"Please provide an item index for me to work on :)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"nyankoclaws"},"content":" return Integer.parseInt(number);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"nyankoclaws"},"content":" protected static String removePrefix(String input, String prefix) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"nyankoclaws"},"content":" return input.replaceFirst(\"^\" + prefix + \" \", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"nyankoclaws"},"content":" protected static Boolean isValidIndex(int index, ArrayList\u003cTask\u003e list) throws ArrayIndexOutOfBoundsException {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"nyankoclaws"},"content":" if (index \u003e 0 \u0026\u0026 index \u003c\u003d list.size()) return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"nyankoclaws"},"content":" throw new ArrayIndexOutOfBoundsException(\"That task is not available. Please try that on a valid index.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"nyankoclaws"},"content":" protected static String processParams(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"nyankoclaws"},"content":" Pattern pattern \u003d Pattern.compile(\"^[^\\\\/]+\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"nyankoclaws"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"nyankoclaws"},"content":" if (!matcher.find())","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"nyankoclaws"},"content":" return input;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"nyankoclaws"},"content":" String result \u003d matcher.group();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"nyankoclaws"},"content":" String tmp \u003d input.replaceFirst(\"^[^/]+\", \"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"nyankoclaws"},"content":" if (tmp.equals(\"\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"nyankoclaws"},"content":" return input;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"nyankoclaws"},"content":" tmp \u003d tmp.replaceAll(\"(/)([^ ]+)\", \"$2:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"nyankoclaws"},"content":" result \u003d result + \"(\" + tmp + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"nyankoclaws"},"content":" return result;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"nyankoclaws"},"content":" protected static void numOfTasks(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"nyankoclaws"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Now you have no tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"nyankoclaws"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"nyankoclaws"},"content":" } ","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Now you have \" + list.size() + \" task\" + (list.size() \u003d\u003d 1 ? \"\" : \"s\") + \" in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"nyankoclaws"},"content":" public static Boolean run(String input, ArrayList\u003cTask\u003e list) throws ArrayIndexOutOfBoundsException, ValueNotFound, InvalidInput {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"nyankoclaws"},"content":" throw new ValueNotFound(\"Don\u0027t call template\");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nyankoclaws":63}},{"path":"src/main/java/Actions/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Actions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":"import Exceptions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"public abstract class ToDo extends Template {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":" protected static String trigger \u003d \"todo\";","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":" protected static Boolean isTrigger(String input, String trigger) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":" return input.toLowerCase().replaceAll(\" \", \"\").replaceAll(\"[0-9]\", \"\").equals(trigger);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":" public static Boolean run(String input, ArrayList\u003cTask\u003e list) throws ArrayIndexOutOfBoundsException, ValueNotFound, InvalidInput {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":" if (isTrigger(input, trigger)) throw new ValueNotFound(\"You need to provide a value for todo\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":" if (!isTriggerPrefix(input, trigger)) return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" Task task \u003d new Tasks.ToDo(processParams(removePrefix(input, trigger)));","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" list.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"added: \" + task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":" numOfTasks(list);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nyankoclaws":24}},{"path":"src/main/java/Actions/Unmark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Actions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":"import Exceptions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"public abstract class Unmark extends Template {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":" protected static String trigger \u003d \"unmark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":" protected static Boolean isTrigger(String input, String trigger) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":" return input.toLowerCase().replaceAll(\" \", \"\").replaceAll(\"[0-9]\", \"\").equals(trigger);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":" public static Boolean run(String input, ArrayList\u003cTask\u003e list) throws ArrayIndexOutOfBoundsException, ValueNotFound, InvalidInput {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":" if (input.toLowerCase().equals(trigger)) throw new ValueNotFound(\"Unmark needs a index\");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" if (!isTriggerPrefix(input, trigger)) return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" if (!isTrigger(input, trigger)) throw new InvalidInput(\"That\u0027s not a valid input for Unmark\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":" int index \u003d getNumber(input, trigger) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":" if (index \u003c 0 || index \u003e\u003d list.size()) throw new ArrayIndexOutOfBoundsException(\"An item does not exist at that index\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":" Task task \u003d list.get(index);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" task.setUndone();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"nyankoclaws"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nyankoclaws":27}},{"path":"src/main/java/Alpaca.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":"import Tasks.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":"import Actions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"import Actions.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"import Actions.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":"import Actions.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":"import Exceptions.InvalidInput;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":"import Exceptions.ValueNotFound;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":"public class Alpaca {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":" static String name \u003d \"Alpaca\";","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" static Scanner scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" static ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":" private static void divider() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":" private static void greeting() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"nyankoclaws"},"content":" divider();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Hihi! I\u0027m \" + Alpaca.name + \"\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"nyankoclaws"},"content":" divider();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"nyankoclaws"},"content":" private static void bye() {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"cucu\");","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"nyankoclaws"},"content":" divider();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"nyankoclaws"},"content":" private static void list() {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"nyankoclaws"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Sorry, you haven\u0027t created any tasks yet :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"nyankoclaws"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"nyankoclaws"},"content":" ","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"nyankoclaws"},"content":" int counter \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"nyankoclaws"},"content":" for (Task i : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(counter + \".\" + (i.toString()));","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"nyankoclaws"},"content":" counter++;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"nyankoclaws"},"content":" private static void processInput() {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"nyankoclaws"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"nyankoclaws"},"content":" divider();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"nyankoclaws"},"content":" if (input.toLowerCase().equals(\"bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"nyankoclaws"},"content":" bye();","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"nyankoclaws"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"nyankoclaws"},"content":" } else if (input.toLowerCase().equals(\"list\")) list();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"nyankoclaws"},"content":" else {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"nyankoclaws"},"content":" trying : try {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"nyankoclaws"},"content":" if (Mark.run(input, list)) break trying;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"nyankoclaws"},"content":" if (Unmark.run(input, list)) break trying;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"nyankoclaws"},"content":" if (Deadline.run(input, list)) break trying;","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"nyankoclaws"},"content":" if (Event.run(input, list)) break trying;","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"nyankoclaws"},"content":" if (ToDo.run(input, list)) break trying;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"nyankoclaws"},"content":" if (Delete.run(input, list)) break trying;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(\"Me no understand :(\");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"nyankoclaws"},"content":" } catch (ArrayIndexOutOfBoundsException | ValueNotFound | InvalidInput e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"nyankoclaws"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"nyankoclaws"},"content":" divider();","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"nyankoclaws"},"content":" processInput();","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"nyankoclaws"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"nyankoclaws"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"nyankoclaws"},"content":" greeting();","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"nyankoclaws"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"nyankoclaws"},"content":" processInput();","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"nyankoclaws"},"content":" scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"nyankoclaws":79}},{"path":"src/main/java/Exceptions/InvalidInput.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"public class InvalidInput extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":" public InvalidInput(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nyankoclaws":7}},{"path":"src/main/java/Exceptions/ValueNotFound.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"public class ValueNotFound extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":" public ValueNotFound(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"nyankoclaws":7}},{"path":"src/main/java/Tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":" public Deadline(String name) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":" super(name);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":" this.type \u003d \"D\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"nyankoclaws":8}},{"path":"src/main/java/Tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":" public Event(String name) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":" super(name);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":" this.type \u003d \"E\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"nyankoclaws":8}},{"path":"src/main/java/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":" private String name;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":" private Boolean done;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":" protected String type;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":" protected Task(String name) {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"nyankoclaws"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"nyankoclaws"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"nyankoclaws"},"content":" public String getName() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"nyankoclaws"},"content":" return this.name;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"nyankoclaws"},"content":" public String getType() {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"nyankoclaws"},"content":" return type;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"nyankoclaws"},"content":" public Boolean isDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"nyankoclaws"},"content":" return this.done;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"nyankoclaws"},"content":" public void setDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"nyankoclaws"},"content":" this.done \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"nyankoclaws"},"content":" public void setUndone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"nyankoclaws"},"content":" this.done \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"nyankoclaws"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"nyankoclaws"},"content":" String type \u003d \"[\" + this.getType() + \"]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"nyankoclaws"},"content":" String mark \u003d \"[\" + (this.isDone() ? \"X\" : \" \") + \"]\";","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"nyankoclaws"},"content":" return type + mark + \" \" + this.getName();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"nyankoclaws":38}},{"path":"src/main/java/Tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"nyankoclaws"},"content":"package Tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"nyankoclaws"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"nyankoclaws"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"nyankoclaws"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"nyankoclaws"},"content":" super(name);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"nyankoclaws"},"content":" this.type \u003d \"T\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"nyankoclaws"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"nyankoclaws"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"nyankoclaws":8}}] diff --git a/nyankoclaws_ip_master/commits.json b/nyankoclaws_ip_master/commits.json index 0ab3b53e..1e95887f 100644 --- a/nyankoclaws_ip_master/commits.json +++ b/nyankoclaws_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"nyankoclaws":[{"date":"2024-01-25","commitResults":[{"hash":"87884c7e4a59af46acbd25db86e38631f93a7050","isMergeCommit":false,"messageTitle":"Rename \u0026 Stuff","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"12aa8035e9df6a0abeabb3cf143c6ac4493980dd","isMergeCommit":false,"messageTitle":"Echo until bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":4}}}]},{"date":"2024-01-26","commitResults":[{"hash":"db395684a40c7211d6a2310d7c252daa194a2a17","isMergeCommit":false,"messageTitle":"Added list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":5}}},{"hash":"9e579bd2c5494a58d7173068b77ecd9c3033c48c","isMergeCommit":false,"messageTitle":"Added checklist","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":4}}}]},{"date":"2024-01-27","commitResults":[{"hash":"11462ad35c54a61a7f22a8a561378ffeff936305","isMergeCommit":false,"messageTitle":"Task typing \u0026 cleanup","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":22}}}]}]},"authorFileTypeContributionMap":{"nyankoclaws":{"java":194,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"nyankoclaws":2046.9136},"authorDisplayNameMap":{"nyankoclaws":"CS2103T-F11-4 ANG ..HAEL"}} +{"authorDailyContributionsMap":{"nyankoclaws":[{"date":"2024-01-25","commitResults":[{"hash":"87884c7e4a59af46acbd25db86e38631f93a7050","isMergeCommit":false,"messageTitle":"Rename \u0026 Stuff","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"12aa8035e9df6a0abeabb3cf143c6ac4493980dd","isMergeCommit":false,"messageTitle":"Echo until bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":4}}}]},{"date":"2024-01-26","commitResults":[{"hash":"db395684a40c7211d6a2310d7c252daa194a2a17","isMergeCommit":false,"messageTitle":"Added list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":5}}},{"hash":"9e579bd2c5494a58d7173068b77ecd9c3033c48c","isMergeCommit":false,"messageTitle":"Added checklist","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":4}}}]},{"date":"2024-01-27","commitResults":[{"hash":"11462ad35c54a61a7f22a8a561378ffeff936305","isMergeCommit":false,"messageTitle":"Task typing \u0026 cleanup","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":22}}}]},{"date":"2024-01-30","commitResults":[{"hash":"d09dae3f7f94d517c3aef13ed58228fa41a1f8d8","isMergeCommit":false,"messageTitle":"Errors Handled :)","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":231,"deletions":91}}},{"hash":"f5052039e7cdc88e30fe5e549834eedef4f2c5f7","isMergeCommit":false,"messageTitle":"Delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":14}}}]}]},"authorFileTypeContributionMap":{"nyankoclaws":{"java":372,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"nyankoclaws":11732.306},"authorDisplayNameMap":{"nyankoclaws":"CS2103T-F11-4 ANG ..HAEL"}} diff --git a/radeon2525_ip_master/authorship.json b/radeon2525_ip_master/authorship.json index e9a86acd..0b42a74a 100644 --- a/radeon2525_ip_master/authorship.json +++ b/radeon2525_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":" protected String endTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" public Deadline(String description, String endTime) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" return \"[D]\" + super.toString().substring(3) + \" (by: \" + endTime + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-01-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" private List\u003cTask\u003e l;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" public Duke() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" l \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Hello! I\u0027m Lucifer\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" Duke lucifer \u003d new Duke();","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" String user_word;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" user_word \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" if (user_word.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" if (user_word.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" lucifer.listTasks();","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" int element_index \u003d Integer.parseInt(user_word.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" lucifer.unmarked_task(element_index);","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" int element_index \u003d Integer.parseInt(user_word.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" lucifer.markTask(element_index);","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" throw new DukeException(\"ERROR!! Please give the description of deadline.\\n______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" String[] array_split \u003d user_word.split(\"/by \");","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" Deadline deadline \u003d new Deadline(array_split[0].substring(9), array_split[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" lucifer.addDeadlineTask(deadline);","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" throw new DukeException(\"ERROR!! Please give the description of todo.\\n______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" ToDo todo \u003d new ToDo(user_word.substring(5));","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" lucifer.addTodoTask(todo);","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" throw new DukeException(\"ERROR!! Please give the description of event.\\n______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" String[] event \u003d user_word.split(\"/from | /to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" Event temp_event \u003d new Event(event[0].substring(6), event[1], event[2]);","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" lucifer.addEventTask(temp_event);","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" int deleted_index \u003d Integer.parseInt(user_word.split(\" \")[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" lucifer.deleteTask(deleted_index);","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" //lucifer.addTask(user_word);","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" throw new DukeException(\"ERROR!! I can\u0027t understand what you mean by that\\n______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" public void addTask(String user_word) {","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" Task newTask \u003d new Task(user_word);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" l.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"added: \" + user_word);","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" public void listTasks() {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" for (int x \u003d 0; x \u003c l.size(); x++) {","lastModifiedDate":"2024-01-19"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":" System.out.println(x + 1 + \". \" + l.get(x));","lastModifiedDate":"2024-01-19"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" public void markTask(int element_index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" if (element_index \u003e\u003d 0 \u0026\u0026 element_index \u003c l.size()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" l.get(element_index).markDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" System.out.println(l.get(element_index));","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" public void unmarked_task(int element_index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" if (element_index \u003e\u003d 0 \u0026\u0026 element_index \u003c l.size()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" l.get(element_index).mark_not_done();","lastModifiedDate":"2024-01-21"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" System.out.println(l.get(element_index));","lastModifiedDate":"2024-01-21"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" public void addDeadlineTask(Task task) {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" l.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":" if (l.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" task in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":121,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":" public void addTodoTask(Task task) {","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"radeon2525"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"radeon2525"},"content":" l.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"radeon2525"},"content":" if (l.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" task in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"radeon2525"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":" } System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":" ","lastModifiedDate":"2024-01-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" public void addEventTask(Task task) {","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" l.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" if (l.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" task in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" public void deleteTask(int deleted_index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" int actual_index \u003d deleted_index - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" Task removed_task \u003d l.remove(actual_index);","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":" System.out.println(\" \" + removed_task);","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" task in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":152,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":" public DukeException(String exception_text) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":" super(exception_text);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":" private String startTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":" private String endTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" return \"[E]\" + super.toString().substring(3) + \"(from: \" + this.startTime + \" to: \" + this.endTime + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":14}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" public void markDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public void mark_not_done() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" return \"[ ]\" + \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":27}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" return \"[T]\" + super.toString().substring(3);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"todo join sports club","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":8}}] +[{"path":"data/logfile.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"D | 0 | return book | Sunday","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"E | 0 | 0 | project meeting -Mon 2pm-4pm","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"T | 0 | project","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"radeon2525":4}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":" protected String endTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" public Deadline(String description, String endTime) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" return \"D |\" + super.toString().substring(1) + \"| \" + endTime + \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-01-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" private List\u003cTask\u003e l;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" private static final File FILE_PATH \u003d new File(\"./data/logfile.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private static FileIO fileIO \u003d new FileIO();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" protected List\u003cTask\u003e list \u003d fileIO.readFromFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" public Duke() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" l \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" l \u003d fileIO.readFromFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Hello! I\u0027m Lucifer\\nWhat can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" Duke lucifer \u003d new Duke();","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" String user_word;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" user_word \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" if (user_word.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" if (user_word.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" lucifer.listTasks();","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" //fileIO.readFromFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" int element_index \u003d Integer.parseInt(user_word.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" lucifer.unmarked_task(element_index);","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" //fileIO.saveToFile(lucifer.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" int element_index \u003d Integer.parseInt(user_word.split(\" \")[1]) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" lucifer.markTask(element_index);","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" //fileIO.saveToFile(lucifer.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" //fileIO.saveToFile(lucifer.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" throw new DukeException(\"ERROR!! Please give the description of deadline.\\n______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" String[] array_split \u003d user_word.split(\"/by \");","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" Deadline deadline \u003d new Deadline(array_split[0].substring(9), array_split[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" lucifer.addDeadlineTask(deadline);","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" //fileIO.saveToFile(lucifer.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" //fileIO.saveToFile(lucifer.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" throw new DukeException(\"ERROR!! Please give the description of todo.\\n______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" ToDo todo \u003d new ToDo(user_word.substring(5));","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" //fileIO.saveToFile(lucifer.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" lucifer.addTodoTask(todo);","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" //fileIO.saveToFile(lucifer.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" throw new DukeException(\"ERROR!! Please give the description of event.\\n______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" String[] event \u003d user_word.split(\"/from | /to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" Event temp_event \u003d new Event(event[0].substring(6), event[1], event[2]);","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" lucifer.addEventTask(temp_event);","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" //fileIO.saveToFile(lucifer.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" } else if (user_word.contains(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" int deleted_index \u003d Integer.parseInt(user_word.split(\" \")[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" lucifer.deleteTask(deleted_index);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" //fileIO.saveToFile(lucifer.list);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" //lucifer.addTask(user_word);","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" throw new DukeException(\"ERROR!! I can\u0027t understand what you mean by that\\n______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" public void addTask(String user_word) {","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" Task newTask \u003d new Task(user_word);","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" l.add(newTask);","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"added: \" + user_word);","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" public void listTasks() throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" for (int x \u003d 0; x \u003c l.size(); x++) {","lastModifiedDate":"2024-01-19"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" System.out.println(x + 1 + \". \" + l.get(x));","lastModifiedDate":"2024-01-19"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" fileIO.readFromFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" public void markTask(int element_index) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" if (element_index \u003e\u003d 0 \u0026\u0026 element_index \u003c l.size()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" l.get(element_index).markDone();","lastModifiedDate":"2024-01-21"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" System.out.println(l.get(element_index));","lastModifiedDate":"2024-01-21"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":" fileIO.saveToFile(l);","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":" public void unmarked_task(int element_index) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"radeon2525"},"content":" if (element_index \u003e\u003d 0 \u0026\u0026 element_index \u003c l.size()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"radeon2525"},"content":" l.get(element_index).mark_not_done();","lastModifiedDate":"2024-01-21"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":123,"author":{"gitId":"radeon2525"},"content":" System.out.println(l.get(element_index));","lastModifiedDate":"2024-01-21"},{"lineNumber":124,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":125,"author":{"gitId":"radeon2525"},"content":" fileIO.saveToFile(l);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":128,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":129,"author":{"gitId":"radeon2525"},"content":" public void addDeadlineTask(Task task) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":" l.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" fileIO.saveToFile(l);","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" if (l.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" task in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" public void addTodoTask(Task task) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" l.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" fileIO.saveToFile(l);","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" if (l.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" task in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":" } System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-19"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" ","lastModifiedDate":"2024-01-19"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" public void addEventTask(Task task) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":" l.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" fileIO.saveToFile(l);","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" if (l.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" task in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":169,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"radeon2525"},"content":" public void deleteTask(int deleted_index) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"radeon2525"},"content":" int actual_index \u003d deleted_index - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"radeon2525"},"content":" Task removed_task \u003d l.remove(actual_index);","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"radeon2525"},"content":" System.out.println(\" \" + removed_task);","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"Now you have \" + l.size() + \" task in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" System.out.println(\"______________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"radeon2525"},"content":" fileIO.saveToFile(l);","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":177,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":" public DukeException(String exception_text) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":" super(exception_text);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":" protected String startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":" protected String endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" return \"E |\" + super.toString().substring(1) + \"| \" + this.startTime + \"-\" + this.endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":14}},{"path":"src/main/java/FileIO.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"import java.io.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import static java.nio.file.StandardOpenOption.APPEND;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import static java.nio.file.StandardOpenOption.CREATE;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"public class FileIO {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" private static final File FILE \u003d new File(\"./data/logfile.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public FileIO() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public static void createFile() throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" if (!FILE.getParentFile().exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" FILE.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" if (!FILE.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" FILE.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" public List\u003cTask\u003e readFromFile() throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" List\u003cTask\u003e l \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" if (!FILE.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" createFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" FileReader reader \u003d new FileReader(FILE);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" Scanner sc \u003d new Scanner(reader);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" String line \u003d sc.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" String[] array_split \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" if (array_split[0].equals(\"T\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" ToDo todo \u003d new ToDo(array_split[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" if (array_split[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" todo.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" l.add(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" } else if (array_split[0].equals(\"D\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" Deadline deadline \u003d new Deadline(array_split[2], array_split[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" if (array_split[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" deadline.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" l.add(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" } else if (array_split[0].equals(\"E\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" Event event \u003d new Event(array_split[1], array_split[2], array_split[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" if (array_split[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" event.markDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" l.add(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" return l;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" private static void printFileContents(String filePath) throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" private static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" fw.write(textToAdd);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" private static void appendToFile(String filePath, String textToAppend) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" FileWriter fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" fw.write(textToAppend);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" protected void saveToFile(List\u003cTask\u003e l) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" createFile(); // Ensure the file and directory exist","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" try (FileWriter fw \u003d new FileWriter(FILE, false)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" for (Task task : l) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" String taskString \u003d formatTaskForFile(task) + System.lineSeparator();","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" fw.write(taskString);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" throw e;","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" private String formatTaskForFile(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" String status \u003d task.getStatusIcon();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" if (task instanceof ToDo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" return \"T | \" + status + \" | \" + task.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" return \"D | \" + status + \" | \" + task.description + \" | \" + ((Deadline) task).endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" return \"E | \" + status + \" | \" + task.description + \" | \" + ((Event) task).startTime + \"-\" + ((Event) task).endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" return \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"radeon2525":114}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" return (isDone ? \" 1 \" : \" 0 \");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" public void markDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public void mark_not_done() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" return \"|\" + getStatusIcon() + \"| \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":27}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" return \"T |\" + super.toString().substring(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"todo join sports club","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"radeon2525":8}}] diff --git a/radeon2525_ip_master/commits.json b/radeon2525_ip_master/commits.json index 2e92fe3d..41d43ea6 100644 --- a/radeon2525_ip_master/commits.json +++ b/radeon2525_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"radeon2525":[{"date":"2024-01-19","commitResults":[{"hash":"358659f9a3f9524eaa0ddb31a610226b46e3c611","isMergeCommit":false,"messageTitle":"This is Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"95fc4257204e799ae65de4b5425770c8d7ecd160","isMergeCommit":false,"messageTitle":"This is Level-1 of Lucifer","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"7bd40bb7a7907a1875b43b46076cb9e817711ae8","isMergeCommit":false,"messageTitle":"This is level-2 which includes list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]},{"date":"2024-01-21","commitResults":[{"hash":"12fd187f6bf5ffe700e810fa428d6b63090cf92c","isMergeCommit":false,"messageTitle":"Level-3 changes made(mark and unmark)","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":3}}}]},{"date":"2024-01-23","commitResults":[{"hash":"b4752dde0dd4623984bf394ebb87d1ce661e20ae","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":156,"deletions":71}}},{"hash":"b17426e4bfbc9a67beecb4208e3172f799d2edb5","isMergeCommit":false,"messageTitle":"Fixed code for Level-4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":7}}},{"hash":"6ff15d229190d55fd91461ee5827ae61b4c6d8cd","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":26}}},{"hash":"0367b0baedadb5b769b119700bcb582860f082c6","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"768732f5b9bd4c09e81cfae90bd399f7d25b054e","isMergeCommit":false,"messageTitle":"Completed Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"radeon2525":{"java":221,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":8}},"authorContributionVariance":{"radeon2525":16884.559},"authorDisplayNameMap":{"radeon2525":"CS2103T-W13-2 MAHI..SHIM"}} +{"authorDailyContributionsMap":{"radeon2525":[{"date":"2024-01-19","commitResults":[{"hash":"358659f9a3f9524eaa0ddb31a610226b46e3c611","isMergeCommit":false,"messageTitle":"This is Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"95fc4257204e799ae65de4b5425770c8d7ecd160","isMergeCommit":false,"messageTitle":"This is Level-1 of Lucifer","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"7bd40bb7a7907a1875b43b46076cb9e817711ae8","isMergeCommit":false,"messageTitle":"This is level-2 which includes list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]},{"date":"2024-01-21","commitResults":[{"hash":"12fd187f6bf5ffe700e810fa428d6b63090cf92c","isMergeCommit":false,"messageTitle":"Level-3 changes made(mark and unmark)","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":3}}}]},{"date":"2024-01-23","commitResults":[{"hash":"b4752dde0dd4623984bf394ebb87d1ce661e20ae","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":156,"deletions":71}}},{"hash":"b17426e4bfbc9a67beecb4208e3172f799d2edb5","isMergeCommit":false,"messageTitle":"Fixed code for Level-4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":7}}},{"hash":"6ff15d229190d55fd91461ee5827ae61b4c6d8cd","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":26}}},{"hash":"0367b0baedadb5b769b119700bcb582860f082c6","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0}}},{"hash":"768732f5b9bd4c09e81cfae90bd399f7d25b054e","isMergeCommit":false,"messageTitle":"Completed Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"5acb7657823513399db6d28c952a535e6443e119","isMergeCommit":false,"messageTitle":"Completed Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":155,"deletions":17}}},{"hash":"31664a45736cee0f2ea9da2a7772d18209262e91","isMergeCommit":true,"messageTitle":"Add file handling","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"30a2c2730c2f6783e47b5574a1dbf34fff4609b5","isMergeCommit":false,"messageTitle":"fix bugs file handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"radeon2525":{"java":360,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":12}},"authorContributionVariance":{"radeon2525":10379.138},"authorDisplayNameMap":{"radeon2525":"CS2103T-W13-2 MAHI..SHIM"}} diff --git a/redcolorbicycle_ip_master/authorship.json b/redcolorbicycle_ip_master/authorship.json index f006fac4..96732eda 100644 --- a/redcolorbicycle_ip_master/authorship.json +++ b/redcolorbicycle_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" public String typeid() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" return \"D\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" public String timeprint() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" String bystring \u003d formatter.format(by);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" return (\"~\" + bystring);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"redcolorbicycle":27}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" private Storage storage; //deals with loading and saving","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" private TaskList tasks; //operations to add and delete","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" private final Ui ui; //deals with interactions from user","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" public Duke(String filePath) { //creating a Duke object","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" ui.greet();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" Parser parser \u003d new Parser(scanner, tasks, storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" parser.read();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" Duke bearducky \u003d new Duke(\"./data/tasks.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" bearducky.run();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"redcolorbicycle":23,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" protected LocalDate start;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" protected LocalDate end;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" public String typeid() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" return \"E\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" public String timeprint() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" String startstring \u003d formatter.format(start);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":" String endstring \u003d formatter.format(end);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" return (\"~\" + startstring+\"~\" + endstring);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"redcolorbicycle":30}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" private TaskList tasklist;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" public Parser(Scanner s, TaskList t, Storage st){","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" scanner \u003d s;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" tasklist \u003d t;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" storage \u003d st;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" public void read() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" String userInputLowercase \u003d userInput.toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" if (checkFeeding(userInputLowercase)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" ui.happy();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":" continue;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfBaseCommand(userInputLowercase)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":" handleBaseCommand(userInput.split(\" \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" storage.writeToFile(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfLeave(userInputLowercase)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":" ui.goodbye();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"redcolorbicycle"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfList(userInputLowercase)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"redcolorbicycle"},"content":" handleList(tasklist);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfTodo(userInputLowercase)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"redcolorbicycle"},"content":" handleTodo(userInput, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"redcolorbicycle"},"content":" storage.writeToFile(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfEvent(userInputLowercase)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"redcolorbicycle"},"content":" handleEvent(userInput, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"redcolorbicycle"},"content":" storage.writeToFile(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfDeadline(userInputLowercase)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"redcolorbicycle"},"content":" handleDeadline(userInput, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"redcolorbicycle"},"content":" storage.writeToFile(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"redcolorbicycle"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"redcolorbicycle"},"content":" ui.instructionMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"redcolorbicycle"},"content":" public void handleEvent(String s, TaskList t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"redcolorbicycle"},"content":" String eventname \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"redcolorbicycle"},"content":" String[] temp \u003d s.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"redcolorbicycle"},"content":" if (temp.length \u003d\u003d 1 || temp[1].startsWith(\"/from\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Event cannot be blank\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"redcolorbicycle"},"content":" for (int a \u003d 1; a \u003c temp.length; a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"redcolorbicycle"},"content":" if (temp[a].startsWith(\"/from\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"redcolorbicycle"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"redcolorbicycle"},"content":" eventname \u003d eventname.concat(temp[a]);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"redcolorbicycle"},"content":" eventname \u003d eventname.concat(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"redcolorbicycle"},"content":" String[] findperiod \u003d s.split(\" /from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"redcolorbicycle"},"content":" String start \u003d findperiod[1].split(\" /to \")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"redcolorbicycle"},"content":" String end \u003d findperiod[1].split(\" /to \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"redcolorbicycle"},"content":" if (!canBeHandled(start) || !canBeHandled(end)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Please enter a event with the format event eventname /from dd/mm/yyyy /to dd/mm/yyyy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"redcolorbicycle"},"content":" Task ne \u003d new Event(eventname, DateConvert(start), DateConvert(end));","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"redcolorbicycle"},"content":" t.add(ne);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Task added! You now have \" + t.length() +\" tasks to attend to.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"redcolorbicycle"},"content":" } catch (ArrayIndexOutOfBoundsException b) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Please enter a event with the format event eventname /from dd/mm/yyyy /to dd/mm/yyyy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"redcolorbicycle"},"content":" public boolean canBeHandled(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"redcolorbicycle"},"content":" return !(DateConvert(s) \u003d\u003d null);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"redcolorbicycle"},"content":" public LocalDate DateConvert(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"redcolorbicycle"},"content":" String[] patterns \u003d {\"MM/dd/yyyy\", \"M/dd/yyyy\", \"MM/d/yyyy\",","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"redcolorbicycle"},"content":" \"M/d/yyyy\", \"MM-dd-yyyy\", \"M-dd-yyyy\", \"MM-d-yyyy\", \"M-d-yyyy\"};","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"redcolorbicycle"},"content":" for (String pattern : patterns) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"redcolorbicycle"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(pattern);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"redcolorbicycle"},"content":" LocalDate date \u003d LocalDate.parse(s, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"redcolorbicycle"},"content":" return date; // Return the parsed date if successful","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"redcolorbicycle"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"redcolorbicycle"},"content":" // Parsing failed for the current pattern, try the next one","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"redcolorbicycle"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"redcolorbicycle"},"content":" public void handleDeadline(String s, TaskList t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"redcolorbicycle"},"content":" String deadlinename \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"redcolorbicycle"},"content":" String[] temp \u003d s.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"redcolorbicycle"},"content":" if (temp.length \u003d\u003d 1 || temp[1].startsWith(\"/by\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Deadline cannot be blank\");","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"redcolorbicycle"},"content":" //create the deadline name","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"redcolorbicycle"},"content":" for (int a \u003d 1; a \u003c temp.length; a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"redcolorbicycle"},"content":" if (temp[a].startsWith(\"/by\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"redcolorbicycle"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"redcolorbicycle"},"content":" deadlinename \u003d deadlinename.concat(temp[a]);","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"redcolorbicycle"},"content":" deadlinename \u003d deadlinename.concat(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"redcolorbicycle"},"content":" String[] finddeadline \u003d s.split(\" /by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"redcolorbicycle"},"content":" String deadline \u003d finddeadline[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"redcolorbicycle"},"content":" if (!canBeHandled(deadline)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Please enter a deadline with the format deadline deadlinename /by dd/mm/yyyy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"redcolorbicycle"},"content":" Task nd \u003d new Deadline(deadlinename, DateConvert(deadline));","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"redcolorbicycle"},"content":" t.add(nd);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Task added! You now have \" + t.length() +\" tasks to attend to.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"redcolorbicycle"},"content":" } catch (ArrayIndexOutOfBoundsException b) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Please enter a deadline with the format deadline deadlinename /by dd/mm/yyyy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"redcolorbicycle"},"content":" public void handleTodo(String s, TaskList t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"redcolorbicycle"},"content":" String todoname \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"redcolorbicycle"},"content":" String[] temp \u003d s.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"redcolorbicycle"},"content":" if (temp.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Todo cannot be blank\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"redcolorbicycle"},"content":" for (int a \u003d 1; a \u003c temp.length; a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"redcolorbicycle"},"content":" todoname \u003d todoname.concat(temp[a]);","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"redcolorbicycle"},"content":" todoname \u003d todoname.concat(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"redcolorbicycle"},"content":" Task nt \u003d new ToDo(todoname);","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"redcolorbicycle"},"content":" t.add(nt);","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Task added! You now have \" + t.length() +\" tasks to attend to.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfTodo(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"redcolorbicycle"},"content":" return s.startsWith(\"todo \");","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfEvent(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"redcolorbicycle"},"content":" return s.startsWith(\"event \");","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfDeadline(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"redcolorbicycle"},"content":" return s.startsWith(\"deadline \");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"redcolorbicycle"},"content":" public void handleList(TaskList t) {","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"redcolorbicycle"},"content":" if (t.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"You\u0027re a lazy duck get back on the grind\");","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"redcolorbicycle"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"redcolorbicycle"},"content":" t.iterateout();","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfList(String f) {","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"redcolorbicycle"},"content":" return (f.equals(\"list\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkFeeding(String f) {","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"redcolorbicycle"},"content":" return (f.equals(\"feed bread to bearducky\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfLeave(String f) {","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"redcolorbicycle"},"content":" return (f.equals(\"bye\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfBaseCommand(String f) {","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"redcolorbicycle"},"content":" return (f.startsWith(\"mark \") || f.startsWith(\"unmark \") || f.startsWith(\"delete \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"redcolorbicycle"},"content":" public void handleBaseCommand(String[] commandsplit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"redcolorbicycle"},"content":" String firstword \u003d commandsplit[0].toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"redcolorbicycle"},"content":" int num \u003d Integer.parseInt(commandsplit[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"redcolorbicycle"},"content":" if (firstword.equals(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.mark(num - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"redcolorbicycle"},"content":" } else if (firstword.equals(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.unmark(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"redcolorbicycle"},"content":" } else if (firstword.equals(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.delete(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"redcolorbicycle"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"[angry quacking] I can only mark numbers!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"redcolorbicycle"},"content":" } catch (IndexOutOfBoundsException a) {","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"[exasperated quacking] You\u0027re not that busy - numbers from 1 to \" + tasklist.length() +","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"redcolorbicycle"},"content":" \" only, please.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":200,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"redcolorbicycle":200}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" private File infostored;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" private String filepath;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" public void writeToFile(TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" String filePath \u003d filepath; // Specify the file path","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" // Your new content to replace the existing content","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" // Iterate through the list of items","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":" for (int i \u003d 0; i \u003c tasklist.length(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" // Write the content of each item to the file","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" Task task \u003d tasklist.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":" writer.write(task.typeid()+\"~\"+task.markstatus()+\"~\"+task.getDescription()+task.timeprint());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" writer.newLine(); // Add a newline character after each item","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Your input has been saved!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"redcolorbicycle"},"content":" public void makeNewDirectory() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"redcolorbicycle"},"content":" File location \u003d new File(\"./data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"redcolorbicycle"},"content":" if (location.mkdirs()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Successfully made new directory!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"redcolorbicycle"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Data file already exists.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"redcolorbicycle"},"content":" public void makeNewFile(String filepath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"redcolorbicycle"},"content":" File file \u003d new File(filepath);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"redcolorbicycle"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"redcolorbicycle"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"redcolorbicycle"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"File successfully created.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"redcolorbicycle"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"redcolorbicycle"},"content":" file \u003d new File(\"./data/tasks.txt\"); //hardcode option","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Filepath invalid. Data has been stored to the filepath ./data/tasks.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"redcolorbicycle"},"content":" infostored \u003d file;","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"redcolorbicycle"},"content":" public List\u003cTask\u003e load() {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"redcolorbicycle"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"redcolorbicycle"},"content":" if (infostored.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"redcolorbicycle"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"redcolorbicycle"},"content":" Scanner s \u003d new Scanner(infostored);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"redcolorbicycle"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"redcolorbicycle"},"content":" String nextinput \u003d s.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"redcolorbicycle"},"content":" Task task \u003d convert(nextinput);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"redcolorbicycle"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"redcolorbicycle"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"redcolorbicycle"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"redcolorbicycle"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"redcolorbicycle"},"content":" public Task convert(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"redcolorbicycle"},"content":" //assuming the file content is the task type first, then marked or not, then the name, then start/due and end","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"redcolorbicycle"},"content":" //separated by ~","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"redcolorbicycle"},"content":" String[] inputs \u003d input.split(\"~\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"redcolorbicycle"},"content":" String type \u003d inputs[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"redcolorbicycle"},"content":" boolean marked \u003d inputs[1].equals(\"marked\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"redcolorbicycle"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"redcolorbicycle"},"content":" switch (type) {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"redcolorbicycle"},"content":" case \"T\" -\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"redcolorbicycle"},"content":" Task task \u003d new ToDo(inputs[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"redcolorbicycle"},"content":" if (marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"redcolorbicycle"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"redcolorbicycle"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"redcolorbicycle"},"content":" case \"E\" -\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"redcolorbicycle"},"content":" LocalDate start \u003d LocalDate.parse(inputs[3], dateFormatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"redcolorbicycle"},"content":" LocalDate end \u003d LocalDate.parse(inputs[4], dateFormatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"redcolorbicycle"},"content":" Task task \u003d new Event(inputs[2], start, end);","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"redcolorbicycle"},"content":" if (marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"redcolorbicycle"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"redcolorbicycle"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"redcolorbicycle"},"content":" case \"D\" -\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"redcolorbicycle"},"content":" LocalDate due \u003d LocalDate.parse(inputs[3], dateFormatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"redcolorbicycle"},"content":" Task task \u003d new Deadline(inputs[2], due);","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"redcolorbicycle"},"content":" if (marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"redcolorbicycle"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"redcolorbicycle"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"redcolorbicycle"},"content":" return new Task(\"Error\");","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"redcolorbicycle"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"redcolorbicycle"},"content":" filepath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"redcolorbicycle"},"content":" makeNewDirectory(); //creates a new data file in the same folder if not already existing","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"redcolorbicycle"},"content":" makeNewFile(filePath); //creates a new file in filepath if not already existing","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"redcolorbicycle":120}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" public String timeprint() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" return \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" public String typeid() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" return \"T\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" public String markstatus() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" return \"marked\";","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":" return \"unmarked\";","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"redcolorbicycle"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"redcolorbicycle"},"content":" return (\"[\"+ this.getStatusIcon()+\"] \" + this.description);","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"redcolorbicycle"},"content":" public void mark() {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"redcolorbicycle"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"redcolorbicycle"},"content":" public void unmark() {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"redcolorbicycle"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"redcolorbicycle"},"content":" //...","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"redcolorbicycle":47}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" private List\u003cTask\u003e tasklist;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" tasklist \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" public Task getTask(int n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" return tasklist.get(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" public void mark(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.get(num).mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" public void unmark(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.get(num).unmark();","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" public void delete(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.remove(num);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"redcolorbicycle"},"content":" public int length() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"redcolorbicycle"},"content":" return tasklist.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"redcolorbicycle"},"content":" public void iterateout() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"redcolorbicycle"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println((i + 1) + \". \" + tasklist.get(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"redcolorbicycle":42}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"redcolorbicycle":13}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":" public Ui () {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Invalid filepath.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" public void greet() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Quack! My name is Bearducky. I am a duck with a bear hat and a baseball bat.\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" \"How may I help you today?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" public void happy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"[happy quacking]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" public void goodbye() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"[sad quacking] Can I have some bread before you go?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" public void instructionMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"[quack] I don\u0027t understand that command. If you would like to add a task to the Duckalendar,\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" \" please specify with the task type - \\\"todo\\\", \\\"deadline\\\" or \\\"event\\\" followed by a space in front of the task\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" \" name.\\n For deadlines, please add a /by followed by the deadline (eg. /by 2/12/2019 1800) . For events, please add a / followed by the start time,\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":" \" then another / followed by the end time.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" \" To mark or unmark the nth task on the list, enter the command \\\"mark n\\\" or \\\"unmark n\\\" where n is the number on the list.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":" \" To delete the nth task on the list, enter the command \\\"delete n\\\" where n is the number on the list.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" \" If you would like me to list the things you are procrastinating, please enter the word \\\"list\\\".\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" \" \\n If you would like to leave, please enter the word \\\"bye\\\". \\n Do also feel free to also type the words \\\"feed bread to bearducky\\\"?\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":" \" [Hopeful quacking]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"redcolorbicycle":32}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"test","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"todo cs2103","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"deadline cs2103 /by tonight","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"event cs2103 /tonight 8pm /tonight 11pm","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":"listi","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":"feed bread to bearducky","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"redcolorbicycle":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":"redcolorbicycle"},"content":"del ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"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":{"redcolorbicycle":1,"-":20}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" public String typeid() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" return \"D\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" public String timeprint() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" String bystring \u003d formatter.format(by);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" return (\"~\" + bystring);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"redcolorbicycle":27}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" private Storage storage; //deals with loading and saving","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" private TaskList tasks; //operations to add and delete","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" private final Ui ui; //deals with interactions from user","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" public Duke(String filePath) { //creating a Duke object","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" ui.greet();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" Parser parser \u003d new Parser(scanner, tasks, storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" parser.read();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" Duke bearducky \u003d new Duke(\"./data/tasks.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" bearducky.run();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"redcolorbicycle":23,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" protected LocalDate start;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" protected LocalDate end;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" public String typeid() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" return \"E\";","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" public String timeprint() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" String startstring \u003d formatter.format(start);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":" String endstring \u003d formatter.format(end);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" return (\"~\" + startstring+\"~\" + endstring);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"redcolorbicycle":30}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" private TaskList tasklist;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" public Parser(Scanner s, TaskList t, Storage st){","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" scanner \u003d s;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" tasklist \u003d t;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" storage \u003d st;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" public void read() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" String userInputLowercase \u003d userInput.toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" if (checkFeeding(userInputLowercase)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" ui.happy();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":" continue;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfBaseCommand(userInputLowercase)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":" handleBaseCommand(userInput.split(\" \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" storage.writeToFile(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfLeave(userInputLowercase)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":" ui.goodbye();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"redcolorbicycle"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfList(userInputLowercase)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"redcolorbicycle"},"content":" handleList(tasklist);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfTodo(userInputLowercase)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"redcolorbicycle"},"content":" handleTodo(userInput, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"redcolorbicycle"},"content":" storage.writeToFile(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfEvent(userInputLowercase)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"redcolorbicycle"},"content":" handleEvent(userInput, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"redcolorbicycle"},"content":" storage.writeToFile(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"redcolorbicycle"},"content":" } else if (checkIfDeadline(userInputLowercase)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"redcolorbicycle"},"content":" handleDeadline(userInput, tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"redcolorbicycle"},"content":" storage.writeToFile(tasklist);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"redcolorbicycle"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"redcolorbicycle"},"content":" ui.instructionMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"redcolorbicycle"},"content":" public void handleEvent(String s, TaskList t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"redcolorbicycle"},"content":" String eventname \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"redcolorbicycle"},"content":" String[] temp \u003d s.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"redcolorbicycle"},"content":" if (temp.length \u003d\u003d 1 || temp[1].startsWith(\"/from\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Event cannot be blank\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"redcolorbicycle"},"content":" for (int a \u003d 1; a \u003c temp.length; a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"redcolorbicycle"},"content":" if (temp[a].startsWith(\"/from\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"redcolorbicycle"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"redcolorbicycle"},"content":" eventname \u003d eventname.concat(temp[a]);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"redcolorbicycle"},"content":" eventname \u003d eventname.concat(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"redcolorbicycle"},"content":" String[] findperiod \u003d s.split(\" /from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"redcolorbicycle"},"content":" String start \u003d findperiod[1].split(\" /to \")[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"redcolorbicycle"},"content":" String end \u003d findperiod[1].split(\" /to \")[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"redcolorbicycle"},"content":" if (!canBeHandled(start) || !canBeHandled(end)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Please enter a event with the format event eventname /from dd/mm/yyyy /to dd/mm/yyyy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"redcolorbicycle"},"content":" Task ne \u003d new Event(eventname, DateConvert(start), DateConvert(end));","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"redcolorbicycle"},"content":" t.add(ne);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Task added! You now have \" + t.length() +\" tasks to attend to.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"redcolorbicycle"},"content":" } catch (ArrayIndexOutOfBoundsException b) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Please enter a event with the format event eventname /from dd/mm/yyyy /to dd/mm/yyyy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"redcolorbicycle"},"content":" public boolean canBeHandled(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"redcolorbicycle"},"content":" return (DateConvert(s) !\u003d null);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"redcolorbicycle"},"content":" public LocalDate DateConvert(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"redcolorbicycle"},"content":" String[] patterns \u003d {\"MM/dd/yyyy\", \"M/dd/yyyy\", \"MM/d/yyyy\",","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"redcolorbicycle"},"content":" \"M/d/yyyy\", \"MM-dd-yyyy\", \"M-dd-yyyy\", \"MM-d-yyyy\", \"M-d-yyyy\"};","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"redcolorbicycle"},"content":" for (String pattern : patterns) {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"redcolorbicycle"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(pattern);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"redcolorbicycle"},"content":" return LocalDate.parse(s, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"redcolorbicycle"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"redcolorbicycle"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"redcolorbicycle"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"redcolorbicycle"},"content":" public void handleDeadline(String s, TaskList t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"redcolorbicycle"},"content":" String deadlinename \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"redcolorbicycle"},"content":" String[] temp \u003d s.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"redcolorbicycle"},"content":" if (temp.length \u003d\u003d 1 || temp[1].startsWith(\"/by\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Deadline cannot be blank\");","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"redcolorbicycle"},"content":" //create the deadline name","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"redcolorbicycle"},"content":" for (int a \u003d 1; a \u003c temp.length; a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"redcolorbicycle"},"content":" if (temp[a].startsWith(\"/by\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"redcolorbicycle"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"redcolorbicycle"},"content":" deadlinename \u003d deadlinename.concat(temp[a]);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"redcolorbicycle"},"content":" deadlinename \u003d deadlinename.concat(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"redcolorbicycle"},"content":" String[] finddeadline \u003d s.split(\" /by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"redcolorbicycle"},"content":" String deadline \u003d finddeadline[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"redcolorbicycle"},"content":" if (!canBeHandled(deadline)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Please enter a deadline with the format deadline deadlinename /by dd/mm/yyyy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"redcolorbicycle"},"content":" Task nd \u003d new Deadline(deadlinename, DateConvert(deadline));","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"redcolorbicycle"},"content":" t.add(nd);","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Task added! You now have \" + t.length() +\" tasks to attend to.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"redcolorbicycle"},"content":" } catch (ArrayIndexOutOfBoundsException b) {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Please enter a deadline with the format deadline deadlinename /by dd/mm/yyyy!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"redcolorbicycle"},"content":" public void handleTodo(String s, TaskList t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"redcolorbicycle"},"content":" String todoname \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"redcolorbicycle"},"content":" String[] temp \u003d s.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"redcolorbicycle"},"content":" if (temp.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Todo cannot be blank\");","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"redcolorbicycle"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"redcolorbicycle"},"content":" for (int a \u003d 1; a \u003c temp.length; a++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"redcolorbicycle"},"content":" todoname \u003d todoname.concat(temp[a]);","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"redcolorbicycle"},"content":" todoname \u003d todoname.concat(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"redcolorbicycle"},"content":" Task nt \u003d new ToDo(todoname);","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"redcolorbicycle"},"content":" t.add(nt);","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Task added! You now have \" + t.length() +\" tasks to attend to.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfTodo(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"redcolorbicycle"},"content":" return s.startsWith(\"todo \");","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfEvent(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"redcolorbicycle"},"content":" return s.startsWith(\"event \");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfDeadline(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"redcolorbicycle"},"content":" return s.startsWith(\"deadline \");","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"redcolorbicycle"},"content":" public void handleList(TaskList t) {","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"redcolorbicycle"},"content":" if (t.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"You\u0027re a lazy duck get back on the grind\");","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"redcolorbicycle"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"redcolorbicycle"},"content":" t.iterateout();","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfList(String f) {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"redcolorbicycle"},"content":" return (f.equals(\"list\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkFeeding(String f) {","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"redcolorbicycle"},"content":" return (f.equals(\"feed bread to bearducky\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfLeave(String f) {","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"redcolorbicycle"},"content":" return (f.equals(\"bye\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"redcolorbicycle"},"content":" public boolean checkIfBaseCommand(String f) {","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"redcolorbicycle"},"content":" return (f.startsWith(\"mark \") || f.startsWith(\"unmark \") || f.startsWith(\"delete \"));","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"redcolorbicycle"},"content":" public void handleBaseCommand(String[] commandsplit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"redcolorbicycle"},"content":" String firstword \u003d commandsplit[0].toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"redcolorbicycle"},"content":" int num \u003d Integer.parseInt(commandsplit[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"redcolorbicycle"},"content":" if (firstword.equals(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.mark(num - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"redcolorbicycle"},"content":" } else if (firstword.equals(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.unmark(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"redcolorbicycle"},"content":" } else if (firstword.equals(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.delete(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"redcolorbicycle"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"[angry quacking] I can only mark numbers!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"redcolorbicycle"},"content":" } catch (IndexOutOfBoundsException a) {","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"[exasperated quacking] You\u0027re not that busy - numbers from 1 to \" + tasklist.length() +","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"redcolorbicycle"},"content":" \" only, please.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"redcolorbicycle":197}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" private File infostored;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" private String filepath;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" public void writeToFile(TaskList tasklist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" String filePath \u003d filepath; // Specify the file path","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" // Your new content to replace the existing content","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" // Iterate through the list of items","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":" for (int i \u003d 0; i \u003c tasklist.length(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" // Write the content of each item to the file","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" Task task \u003d tasklist.getTask(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":" writer.write(task.typeid()+\"~\"+task.markstatus()+\"~\"+task.getDescription()+task.timeprint());","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" writer.newLine(); // Add a newline character after each item","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Your input has been saved!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"redcolorbicycle"},"content":" public void makeNewDirectory() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"redcolorbicycle"},"content":" File location \u003d new File(\"./data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"redcolorbicycle"},"content":" if (location.mkdirs()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Successfully made new directory!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"redcolorbicycle"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Data file already exists.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"redcolorbicycle"},"content":" public void makeNewFile(String filepath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"redcolorbicycle"},"content":" File file \u003d new File(filepath);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"redcolorbicycle"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"redcolorbicycle"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"redcolorbicycle"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"File successfully created.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"redcolorbicycle"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"redcolorbicycle"},"content":" file \u003d new File(\"./data/tasks.txt\"); //hardcode option","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Filepath invalid. Data has been stored to the filepath ./data/tasks.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"redcolorbicycle"},"content":" infostored \u003d file;","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"redcolorbicycle"},"content":" public List\u003cTask\u003e load() {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"redcolorbicycle"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"redcolorbicycle"},"content":" if (infostored.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"redcolorbicycle"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"redcolorbicycle"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"redcolorbicycle"},"content":" Scanner s \u003d new Scanner(infostored);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"redcolorbicycle"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"redcolorbicycle"},"content":" String nextinput \u003d s.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"redcolorbicycle"},"content":" Task task \u003d convert(nextinput);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"redcolorbicycle"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"redcolorbicycle"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"redcolorbicycle"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"redcolorbicycle"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"redcolorbicycle"},"content":" public Task convert(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"redcolorbicycle"},"content":" String[] inputs \u003d input.split(\"~\");","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"redcolorbicycle"},"content":" String type \u003d inputs[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"redcolorbicycle"},"content":" boolean marked \u003d inputs[1].equals(\"marked\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"redcolorbicycle"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"redcolorbicycle"},"content":" switch (type) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"redcolorbicycle"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"redcolorbicycle"},"content":" Task task \u003d new ToDo(inputs[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"redcolorbicycle"},"content":" if (marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"redcolorbicycle"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"redcolorbicycle"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"redcolorbicycle"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"redcolorbicycle"},"content":" LocalDate start \u003d LocalDate.parse(inputs[3], dateFormatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"redcolorbicycle"},"content":" LocalDate end \u003d LocalDate.parse(inputs[4], dateFormatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"redcolorbicycle"},"content":" Task task \u003d new Event(inputs[2], start, end);","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"redcolorbicycle"},"content":" if (marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"redcolorbicycle"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"redcolorbicycle"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"redcolorbicycle"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"redcolorbicycle"},"content":" LocalDate due \u003d LocalDate.parse(inputs[3], dateFormatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"redcolorbicycle"},"content":" Task task \u003d new Deadline(inputs[2], due);","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"redcolorbicycle"},"content":" if (marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"redcolorbicycle"},"content":" task.mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"redcolorbicycle"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"redcolorbicycle"},"content":" return new Task(\"Error\");","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"redcolorbicycle"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"redcolorbicycle"},"content":" filepath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"redcolorbicycle"},"content":" makeNewDirectory(); //creates a new data file in the same folder if not already existing","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"redcolorbicycle"},"content":" makeNewFile(filePath); //creates a new file in filepath if not already existing","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"redcolorbicycle":115}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" public String timeprint() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" return \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" public String typeid() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" return \"T\";","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" return description;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" public String markstatus() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" return \"marked\";","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":" return \"unmarked\";","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"redcolorbicycle"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"redcolorbicycle"},"content":" return (\"[\"+ this.getStatusIcon()+\"] \" + this.description);","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"redcolorbicycle"},"content":" public void mark() {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"redcolorbicycle"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"redcolorbicycle"},"content":" public void unmark() {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"redcolorbicycle"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"redcolorbicycle":45}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":" private List\u003cTask\u003e tasklist;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" tasklist \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" public Task getTask(int n) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" return tasklist.get(n);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" public void mark(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.get(num).mark();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" public void unmark(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.get(num).unmark();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" public void delete(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":" tasklist.remove(num);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" public int length() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" return tasklist.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"redcolorbicycle"},"content":" public void iterateout() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"redcolorbicycle"},"content":" for (int i \u003d 0; i \u003c tasklist.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println((i + 1) + \". \" + tasklist.get(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"redcolorbicycle":36}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"redcolorbicycle":13}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":" public Ui () {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Invalid filepath.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":" public void greet() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"Quack! My name is Bearducky. I am a duck with a bear hat and a baseball bat.\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":" \"How may I help you today?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"redcolorbicycle"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"redcolorbicycle"},"content":" public void happy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"[happy quacking]\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"redcolorbicycle"},"content":" public void goodbye() {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"[sad quacking] Can I have some bread before you go?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"redcolorbicycle"},"content":" public void instructionMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"redcolorbicycle"},"content":" System.out.println(\"[quack] I don\u0027t understand that command.\\n If you would like to add a task to the Duckalendar,\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"redcolorbicycle"},"content":" \" please specify with the task type - \\\"todo\\\", \\\"deadline\\\" or \\\"event\\\" then space then task\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"redcolorbicycle"},"content":" \" name.\\n For deadlines, please add a /by followed by the deadline (eg. /by 2/12/2019 1800) . For events, please add a / followed by the start time,\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"redcolorbicycle"},"content":" \" then another \\\"/\\\" followed by the end time.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"redcolorbicycle"},"content":" \" To mark or unmark the nth task on the list, enter the command \\\"mark n\\\" or \\\"unmark n\\\" where n is the number on the list.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"redcolorbicycle"},"content":" \" To delete the nth task on the list, enter the command \\\"delete n\\\" where n is the number on the list.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"redcolorbicycle"},"content":" \" If you would like me to list the things you are procrastinating, please enter the word \\\"list\\\".\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"redcolorbicycle"},"content":" \" \\n If you would like to leave, please enter the word \\\"bye\\\". \\n Do also feel free to also type the words \\\"feed bread to bearducky\\\"?\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"redcolorbicycle"},"content":" \" [Hopeful quacking]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"redcolorbicycle"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"redcolorbicycle"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"redcolorbicycle":32}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"redcolorbicycle"},"content":"test","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"redcolorbicycle"},"content":"todo cs2103","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"redcolorbicycle"},"content":"deadline cs2103 /by tonight","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"redcolorbicycle"},"content":"event cs2103 /tonight 8pm /tonight 11pm","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"redcolorbicycle"},"content":"listi","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"redcolorbicycle"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"redcolorbicycle"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"redcolorbicycle"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"redcolorbicycle"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"redcolorbicycle"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"redcolorbicycle"},"content":"feed bread to bearducky","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"redcolorbicycle"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"redcolorbicycle":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":"redcolorbicycle"},"content":"del ACTUAL.TXT","lastModifiedDate":"2024-01-22"},{"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":{"redcolorbicycle":1,"-":20}}] diff --git a/redcolorbicycle_ip_master/commits.json b/redcolorbicycle_ip_master/commits.json index 36023410..489668bc 100644 --- a/redcolorbicycle_ip_master/commits.json +++ b/redcolorbicycle_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"redcolorbicycle":[{"date":"2024-01-21","commitResults":[{"hash":"a471b799b42cfd8ed314635f7957990ede6bb0e2","isMergeCommit":false,"messageTitle":"Level 0 Rename","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"360af882aadde15be0c5681f4bc15a966b3e6496","isMergeCommit":false,"messageTitle":"Level 1 Echo","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"873bce7a5a8abf6ec81cc4d76d0d794719f34528","isMergeCommit":false,"messageTitle":"Level 2 Add, List","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":3}}},{"hash":"08013b1330ad2d2568bfbed8ee1e082880c8c10d","isMergeCommit":false,"messageTitle":"Task class shell","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"97caac60e7aa7583cda5200a3406f43c953cffb4","isMergeCommit":false,"messageTitle":"Level 3 Mark/Unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":7}}},{"hash":"678f3ca273c8863095278dc78e9523787cb96b2e","isMergeCommit":false,"messageTitle":"Level 3 Mark/Unmark","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":21}}},{"hash":"4580b5c199e71cfdb35e71603f7f757d20842800","isMergeCommit":false,"messageTitle":"Level 4 Todo Event Deadline","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":13}}},{"hash":"d91bf9e02ee9b77ce0b13cc2cf7f09b1bfd7a5dc","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":19,"deletions":8},"bat":{"insertions":2,"deletions":2}}},{"hash":"3ea68dfb7c0dd76ca631d3ae26776be15e360dad","isMergeCommit":false,"messageTitle":"Handle basic errors","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":10},"bat":{"insertions":1,"deletions":1}}},{"hash":"50a0a9557c15b37a42b429e0753dc5b0d841aaa9","isMergeCommit":false,"messageTitle":"Deleting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}}]},{"date":"2024-01-29","commitResults":[{"hash":"8289a4b91fbe239d60a91f2c394a887938792307","isMergeCommit":false,"messageTitle":"halfway through level 7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":216,"deletions":29}}},{"hash":"fbcf287752b4da7ff6b865a45809300985802858","isMergeCommit":false,"messageTitle":"halfway through level 7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":49}}}]},{"date":"2024-01-30","commitResults":[{"hash":"973dfee12fc41e6aec58538ef5c60caab9f785b6","isMergeCommit":false,"messageTitle":"halfway through level 7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":185,"deletions":61}}},{"hash":"cf626ddc3c83ef3b67ef6c120cab8e1e95d2eb66","isMergeCommit":false,"messageTitle":"halfway through level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":29}}},{"hash":"18e6535519796749934858f8dd26962d27309d54","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"redcolorbicycle":{"java":534,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"redcolorbicycle":20876.22},"authorDisplayNameMap":{"redcolorbicycle":"LIU ..YANG"}} +{"authorDailyContributionsMap":{"redcolorbicycle":[{"date":"2024-01-21","commitResults":[{"hash":"a471b799b42cfd8ed314635f7957990ede6bb0e2","isMergeCommit":false,"messageTitle":"Level 0 Rename","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"360af882aadde15be0c5681f4bc15a966b3e6496","isMergeCommit":false,"messageTitle":"Level 1 Echo","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"873bce7a5a8abf6ec81cc4d76d0d794719f34528","isMergeCommit":false,"messageTitle":"Level 2 Add, List","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":3}}},{"hash":"08013b1330ad2d2568bfbed8ee1e082880c8c10d","isMergeCommit":false,"messageTitle":"Task class shell","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"97caac60e7aa7583cda5200a3406f43c953cffb4","isMergeCommit":false,"messageTitle":"Level 3 Mark/Unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":7}}},{"hash":"678f3ca273c8863095278dc78e9523787cb96b2e","isMergeCommit":false,"messageTitle":"Level 3 Mark/Unmark","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":21}}},{"hash":"4580b5c199e71cfdb35e71603f7f757d20842800","isMergeCommit":false,"messageTitle":"Level 4 Todo Event Deadline","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":13}}},{"hash":"d91bf9e02ee9b77ce0b13cc2cf7f09b1bfd7a5dc","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":19,"deletions":8},"bat":{"insertions":2,"deletions":2}}},{"hash":"3ea68dfb7c0dd76ca631d3ae26776be15e360dad","isMergeCommit":false,"messageTitle":"Handle basic errors","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":10},"bat":{"insertions":1,"deletions":1}}},{"hash":"50a0a9557c15b37a42b429e0753dc5b0d841aaa9","isMergeCommit":false,"messageTitle":"Deleting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}}]},{"date":"2024-01-29","commitResults":[{"hash":"8289a4b91fbe239d60a91f2c394a887938792307","isMergeCommit":false,"messageTitle":"halfway through level 7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":216,"deletions":29}}},{"hash":"fbcf287752b4da7ff6b865a45809300985802858","isMergeCommit":false,"messageTitle":"halfway through level 7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":49}}}]},{"date":"2024-01-30","commitResults":[{"hash":"973dfee12fc41e6aec58538ef5c60caab9f785b6","isMergeCommit":false,"messageTitle":"halfway through level 7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":185,"deletions":61}}},{"hash":"cf626ddc3c83ef3b67ef6c120cab8e1e95d2eb66","isMergeCommit":false,"messageTitle":"halfway through level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":29}}},{"hash":"18e6535519796749934858f8dd26962d27309d54","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"ecca752f7c86f0e1902c535c4f15f3740838b9c6","isMergeCommit":false,"messageTitle":"Level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":25}}},{"hash":"9539d8aa98f4a258b4ab33bfb8b4e2eab142c3f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"d683b654fabf21bae3944c6fd0bd7bcfd869b7a2","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ff90a3c56a07faa60a77405dbdf3f3bb24abf2bd","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"redcolorbicycle":{"java":518,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"redcolorbicycle":22388.303},"authorDisplayNameMap":{"redcolorbicycle":"LIU ..YANG"}} diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index 20ed4446..4a561f40 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,26 +1,26 @@ -Jan 30, 2024 6:31:55 AM reposense.system.LogsManager addFileHandler +Jan 30, 2024 1:31:21 PM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Jan 30, 2024 6:31:55 AM reposense.parser.CsvParser validateHeader +Jan 30, 2024 1:31:21 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 -Jan 30, 2024 6:31:56 AM reposense.parser.CsvParser validateHeader +Jan 30, 2024 1:31:22 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 -Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 1:31:22 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 1:31:22 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 1:31:22 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 1:31:22 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 1:31:22 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 1:31:22 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 1:31:22 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Jan 30, 2024 6:31:56 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Jan 30, 2024 1:31:22 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Jan 30, 2024 6:31:56 AM reposense.git.GitConfig getGlobalGitLfsConfig +Jan 30, 2024 1:31:22 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 @@ -36,23 +36,23 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/fy17ohhh/ip.git... -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/eliotlee68/ip.git... +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chuahjiajie/ip.git... -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Austintjh19/ip.git... -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/eliotlee68/ip.git... -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chuahjiajie/ip.git to complete... -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/fy17ohhh/ip.git to complete... -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/eliotlee68/ip.git to complete... -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chuahjiajie/ip.git to complete... +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Austintjh19/ip.git to complete... -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/eliotlee68/ip.git to complete... +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "chuahjiajie/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/chuahjiajie/ip.git' 'repos/chuahjiajie_ip/ip_bare' on path . : Cloning into bare repository 'repos/chuahjiajie_ip/ip_bare'... @@ -68,443 +68,443 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/linnn-7/ip.git... -Jan 30, 2024 6:31:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/linnn-7/ip.git to complete... -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/eliotlee68/ip.git completed! -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/fy17ohhh/ip.git completed! +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dedsecrattle/ip.git... -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [1/428] Analyzing https://github.com/eliotlee68/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [1/428] Analyzing https://github.com/fy17ohhh/ip.git (master)... +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dedsecrattle/ip.git to complete... -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/eliotlee68/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/eliotlee68/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/fy17ohhh/ip.git completed! -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/eliotlee68/ip.git completed! +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gavingoh99/ip.git... -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [2/428] Analyzing https://github.com/fy17ohhh/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [2/428] Analyzing https://github.com/eliotlee68/ip.git (master)... +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gavingoh99/ip.git to complete... -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/fy17ohhh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/fy17ohhh/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Austintjh19/ip.git completed! -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/whitesnowx/ip.git... -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator analyzeRepos INFO: [3/428] Analyzing https://github.com/Austintjh19/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/eliotlee68/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/eliotlee68/ip.git (master)... +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/whitesnowx/ip.git to complete... -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Austintjh19/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Austintjh19/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/linnn-7/ip.git completed! -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/gavin331/ip.git... -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator analyzeRepos INFO: [4/428] Analyzing https://github.com/linnn-7/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/gavin331/ip.git... +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gavin331/ip.git to complete... -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/linnn-7/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/linnn-7/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/fy17ohhh/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/fy17ohhh/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/eliotlee68/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/eliotlee68/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/fy17ohhh/ip.git (master) completed! -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/eliotlee68/ip.git (master)... +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/eliotlee68/ip.git (master) completed! -Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Austintjh19/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Austintjh19/ip.git (master)... -Jan 30, 2024 6:31:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Austintjh19/ip.git (master) completed! -Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/linnn-7/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/linnn-7/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/linnn-7/ip.git (master) completed! -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dedsecrattle/ip.git completed! -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/428] Analyzing https://github.com/dedsecrattle/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gavingoh99/ip.git completed! +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [5/428] Analyzing https://github.com/gavingoh99/ip.git (master)... +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SherisseTJW/ip.git... -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dedsecrattle/ip.git completed! +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SherisseTJW/ip.git to complete... -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dedsecrattle/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dedsecrattle/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gavingoh99/ip.git completed! -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/428] Analyzing https://github.com/gavingoh99/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/whitesnowx/ip.git completed! +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [6/428] Analyzing https://github.com/dedsecrattle/ip.git (master)... +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tahnya/ip.git... -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tahnya/ip.git to complete... -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yongkotaro/ip.git... +Jan 30, 2024 1:31:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/gavingoh99/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/gavingoh99/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/whitesnowx/ip.git completed! -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yongkotaro/ip.git... -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/428] Analyzing https://github.com/whitesnowx/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yongkotaro/ip.git to complete... -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tahnya/ip.git to complete... +Jan 30, 2024 1:31:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Austintjh19/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dedsecrattle/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dedsecrattle/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Austintjh19/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Austintjh19/ip.git (master) completed! +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [7/428] Analyzing https://github.com/whitesnowx/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gavin331/ip.git completed! +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/whitesnowx/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/whitesnowx/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gavingoh99/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gavingoh99/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gavingoh99/ip.git (master) completed! -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gavin331/ip.git completed! -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/428] Analyzing https://github.com/gavin331/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/E0735389/ip.git... -Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dedsecrattle/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/linnn-7/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/E0735389/ip.git to complete... -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/linnn-7/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/linnn-7/ip.git (master) completed! +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [8/428] Analyzing https://github.com/gavin331/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/gavin331/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/gavin331/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dedsecrattle/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dedsecrattle/ip.git (master) completed! -Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gavingoh99/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gavingoh99/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gavingoh99/ip.git (master) completed! +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/whitesnowx/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/whitesnowx/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/whitesnowx/ip.git (master) completed! -Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dedsecrattle/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/gavin331/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/gavin331/ip.git (master)... -Jan 30, 2024 6:31:58 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dedsecrattle/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/gavin331/ip.git (master) completed! -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dedsecrattle/ip.git (master) completed! +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SherisseTJW/ip.git completed! -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yongkotaro/ip.git completed! +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepos INFO: [9/428] Analyzing https://github.com/SherisseTJW/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/beefsausagee/ip.git... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/c-wenlong/ip.git... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [10/428] Analyzing https://github.com/yongkotaro/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/c-wenlong/ip.git to complete... +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/beefsausagee/ip.git to complete... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tahnya/ip.git completed! +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChuaZenKhoon/ip.git... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [11/428] Analyzing https://github.com/tahnya/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SherisseTJW/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SherisseTJW/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tahnya/ip.git completed! -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/428] Analyzing https://github.com/tahnya/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/c-wenlong/ip.git... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/c-wenlong/ip.git to complete... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yongkotaro/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yongkotaro/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChuaZenKhoon/ip.git to complete... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tahnya/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tahnya/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tahnya/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tahnya/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tahnya/ip.git (master) completed! -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SherisseTJW/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SherisseTJW/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SherisseTJW/ip.git (master) completed! -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yongkotaro/ip.git completed! -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/428] Analyzing https://github.com/yongkotaro/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChuaZenKhoon/ip.git... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChuaZenKhoon/ip.git to complete... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yongkotaro/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yongkotaro/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yongkotaro/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tahnya/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yongkotaro/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/E0735389/ip.git completed! -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tahnya/ip.git (master) completed! +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yongkotaro/ip.git (master) completed! -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/E0735389/ip.git completed! +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepos INFO: [12/428] Analyzing https://github.com/E0735389/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ziyi22/ip.git... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ziyi22/ip.git to complete... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SherisseTJW/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/E0735389/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/E0735389/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SherisseTJW/ip.git (master)... +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SherisseTJW/ip.git (master) completed! +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/E0735389/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/E0735389/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/E0735389/ip.git (master) completed! -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/beefsausagee/ip.git completed! -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepos INFO: [13/428] Analyzing https://github.com/beefsausagee/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gauravuj/ip.git... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gauravuj/ip.git to complete... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/beefsausagee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/beefsausagee/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/beefsausagee/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/beefsausagee/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/beefsausagee/ip.git (master) completed! -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/c-wenlong/ip.git completed! -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepos INFO: [14/428] Analyzing https://github.com/c-wenlong/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/marclamp/ip.git... -Jan 30, 2024 6:31:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/marclamp/ip.git to complete... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/beefsausagee/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/c-wenlong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:31:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/c-wenlong/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/c-wenlong/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/c-wenlong/ip.git (master)... -Jan 30, 2024 6:31:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/c-wenlong/ip.git (master) completed! -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/beefsausagee/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/beefsausagee/ip.git (master) completed! +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChuaZenKhoon/ip.git completed! -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepos INFO: [15/428] Analyzing https://github.com/ChuaZenKhoon/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LifHoshi/ip.git... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LifHoshi/ip.git to complete... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChuaZenKhoon/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChuaZenKhoon/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/c-wenlong/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/c-wenlong/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/c-wenlong/ip.git (master) completed! +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChuaZenKhoon/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChuaZenKhoon/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChuaZenKhoon/ip.git (master) completed! +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ziyi22/ip.git completed! -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepos INFO: [16/428] Analyzing https://github.com/ziyi22/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/erv-teo/ip.git... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/erv-teo/ip.git to complete... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ziyi22/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ziyi22/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChuaZenKhoon/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChuaZenKhoon/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChuaZenKhoon/ip.git (master) completed! -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ziyi22/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ziyi22/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ziyi22/ip.git (master) completed! -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gauravuj/ip.git completed! -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/428] Analyzing https://github.com/gauravuj/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marclamp/ip.git completed! +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [17/428] Analyzing https://github.com/marclamp/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/PyromancerBoom/ip.git... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/PyromancerBoom/ip.git to complete... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gauravuj/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gauravuj/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marclamp/ip.git completed! -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [18/428] Analyzing https://github.com/marclamp/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/javierng2knus/ip.git... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/javierng2knus/ip.git to complete... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/marclamp/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/marclamp/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gauravuj/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gauravuj/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gauravuj/ip.git (master) completed! -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marclamp/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marclamp/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marclamp/ip.git (master) completed! -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LifHoshi/ip.git completed! -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/428] Analyzing https://github.com/LifHoshi/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Lalelulilulela/ip.git... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Lalelulilulela/ip.git to complete... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [18/428] Analyzing https://github.com/LifHoshi/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/javierng2knus/ip.git... +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/javierng2knus/ip.git to complete... +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LifHoshi/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LifHoshi/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marclamp/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marclamp/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marclamp/ip.git (master) completed! +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/erv-teo/ip.git completed! -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/428] Analyzing https://github.com/erv-teo/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/martinng01/ip.git... -Jan 30, 2024 6:32:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/martinng01/ip.git to complete... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/erv-teo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/erv-teo/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LifHoshi/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Lalelulilulela/ip.git... +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [19/428] Analyzing https://github.com/erv-teo/ip.git (master)... +Jan 30, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Lalelulilulela/ip.git to complete... +Jan 30, 2024 1:31:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LifHoshi/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LifHoshi/ip.git (master) completed! -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/erv-teo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/erv-teo/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/erv-teo/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/erv-teo/ip.git (master)... -Jan 30, 2024 6:32:00 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/erv-teo/ip.git (master) completed! -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gauravuj/ip.git completed! +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [20/428] Analyzing https://github.com/gauravuj/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/martinng01/ip.git... +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/martinng01/ip.git to complete... +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gauravuj/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gauravuj/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gauravuj/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gauravuj/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gauravuj/ip.git (master) completed! +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/PyromancerBoom/ip.git completed! -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/javierng2knus/ip.git completed! +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepos INFO: [21/428] Analyzing https://github.com/PyromancerBoom/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dwangwk/ip.git... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bryanyee33/ip.git... +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [22/428] Analyzing https://github.com/javierng2knus/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bryanyee33/ip.git to complete... +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dwangwk/ip.git to complete... -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/PyromancerBoom/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/PyromancerBoom/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/javierng2knus/ip.git completed! -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [22/428] Analyzing https://github.com/javierng2knus/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bryanyee33/ip.git... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bryanyee33/ip.git to complete... -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/javierng2knus/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/javierng2knus/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/PyromancerBoom/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PyromancerBoom/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PyromancerBoom/ip.git (master) completed! -Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/javierng2knus/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/javierng2knus/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/javierng2knus/ip.git (master) completed! -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Lalelulilulela/ip.git completed! -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [23/428] Analyzing https://github.com/Lalelulilulela/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cliftonchee/ip.git... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [23/428] Analyzing https://github.com/Lalelulilulela/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cliftonchee/ip.git to complete... -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PyromancerBoom/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PyromancerBoom/ip.git (master) completed! +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/javierng2knus/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Lalelulilulela/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Lalelulilulela/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/javierng2knus/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/javierng2knus/ip.git (master) completed! +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Lalelulilulela/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Lalelulilulela/ip.git (master)... +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Lalelulilulela/ip.git (master) completed! +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/martinng01/ip.git completed! -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepos INFO: [24/428] Analyzing https://github.com/martinng01/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/peterXGD/ip.git... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/peterXGD/ip.git to complete... -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/martinng01/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/martinng01/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Lalelulilulela/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Lalelulilulela/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Lalelulilulela/ip.git (master) completed! -Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/martinng01/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/martinng01/ip.git (master)... -Jan 30, 2024 6:32:01 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/martinng01/ip.git (master) completed! -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "peterXGD/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/peterXGD/ip.git' 'repos/peterXGD_ip/ip_bare' on path . : Cloning into bare repository 'repos/peterXGD_ip/ip_bare'... @@ -520,545 +520,533 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alex-setyawan/ip.git... -Jan 30, 2024 6:32:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alex-setyawan/ip.git to complete... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dwangwk/ip.git completed! -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:26 PM reposense.report.ReportGenerator analyzeRepos INFO: [25/428] Analyzing https://github.com/dwangwk/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jawad280/ip.git... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jawad280/ip.git to complete... -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dwangwk/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dwangwk/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/bryanyee33/ip.git completed! -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [26/428] Analyzing https://github.com/bryanyee33/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Howlong11/ip.git... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [26/428] Analyzing https://github.com/bryanyee33/ip.git (master)... +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Howlong11/ip.git to complete... -Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dwangwk/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bryanyee33/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bryanyee33/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dwangwk/ip.git (master)... +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dwangwk/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dwangwk/ip.git (master) completed! -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/cliftonchee/ip.git completed! -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepos INFO: [27/428] Analyzing https://github.com/cliftonchee/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bennyLCK/ip.git... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bennyLCK/ip.git to complete... -Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bryanyee33/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cliftonchee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cliftonchee/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bryanyee33/ip.git (master)... +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bryanyee33/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bryanyee33/ip.git (master) completed! -Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cliftonchee/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cliftonchee/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cliftonchee/ip.git (master) completed! -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/alex-setyawan/ip.git completed! -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepos INFO: [28/428] Analyzing https://github.com/alex-setyawan/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/garywongkai/ip.git... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/garywongkai/ip.git to complete... -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alex-setyawan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alex-setyawan/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alex-setyawan/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alex-setyawan/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alex-setyawan/ip.git (master) completed! -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Jawad280/ip.git completed! -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepos INFO: [29/428] Analyzing https://github.com/Jawad280/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sebin0817/ip.git... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sebin0817/ip.git to complete... -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jawad280/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jawad280/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Howlong11/ip.git completed! -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepos INFO: [30/428] Analyzing https://github.com/Howlong11/ip.git (master)... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AL-ZT/ip.git... -Jan 30, 2024 6:32:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AL-ZT/ip.git to complete... -Jan 30, 2024 6:32:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Howlong11/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Howlong11/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Howlong11/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jawad280/ip.git (master)... +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Howlong11/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Howlong11/ip.git (master) completed! -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jawad280/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jawad280/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jawad280/ip.git (master) completed! -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/bennyLCK/ip.git completed! -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepos INFO: [31/428] Analyzing https://github.com/bennyLCK/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/iynixil/ip.git... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/iynixil/ip.git to complete... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bennyLCK/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bennyLCK/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bennyLCK/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bennyLCK/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bennyLCK/ip.git (master) completed! -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/garywongkai/ip.git completed! -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [32/428] Analyzing https://github.com/garywongkai/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ys112/ip.git... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ys112/ip.git to complete... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/garywongkai/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/garywongkai/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/garywongkai/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/garywongkai/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/garywongkai/ip.git (master) completed! -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sebin0817/ip.git completed! -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [33/428] Analyzing https://github.com/sebin0817/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/acekhoon/ip.git... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/acekhoon/ip.git to complete... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/garywongkai/ip.git (master)... +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/garywongkai/ip.git (master) completed! +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sebin0817/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sebin0817/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sebin0817/ip.git (master)... +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sebin0817/ip.git (master)... +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sebin0817/ip.git (master) completed! +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AL-ZT/ip.git completed! -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [34/428] Analyzing https://github.com/AL-ZT/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/larainezo/ip.git... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/larainezo/ip.git to complete... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AL-ZT/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AL-ZT/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sebin0817/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sebin0817/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sebin0817/ip.git (master) completed! -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AL-ZT/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AL-ZT/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AL-ZT/ip.git (master) completed! -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/iynixil/ip.git completed! -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [35/428] Analyzing https://github.com/iynixil/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yyccbb/ip.git... -Jan 30, 2024 6:32:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yyccbb/ip.git to complete... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/iynixil/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/iynixil/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AL-ZT/ip.git (master)... +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AL-ZT/ip.git (master)... +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AL-ZT/ip.git (master) completed! +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/iynixil/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/iynixil/ip.git (master)... -Jan 30, 2024 6:32:03 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/iynixil/ip.git (master) completed! -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ys112/ip.git completed! -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [36/428] Analyzing https://github.com/ys112/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AidenLYT/ip.git... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AidenLYT/ip.git to complete... -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ys112/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ys112/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ys112/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ys112/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ys112/ip.git (master) completed! -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/acekhoon/ip.git completed! -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [37/428] Analyzing https://github.com/acekhoon/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/minghowC/ip.git... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/minghowC/ip.git to complete... -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/acekhoon/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/acekhoon/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ys112/ip.git (master)... +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ys112/ip.git (master)... +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ys112/ip.git (master) completed! +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/acekhoon/ip.git (master)... +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/acekhoon/ip.git (master)... +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/acekhoon/ip.git (master) completed! +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/larainezo/ip.git completed! -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [38/428] Analyzing https://github.com/larainezo/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jaspertzx/ip.git... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jaspertzx/ip.git to complete... -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/larainezo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/larainezo/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/acekhoon/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/acekhoon/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/acekhoon/ip.git (master) completed! -Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/larainezo/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/larainezo/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/larainezo/ip.git (master) completed! -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yyccbb/ip.git completed! -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [39/428] Analyzing https://github.com/yyccbb/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/limrik/ip.git... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/limrik/ip.git to complete... -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/larainezo/ip.git (master)... +Jan 30, 2024 1:31:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yyccbb/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yyccbb/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/larainezo/ip.git (master)... +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/larainezo/ip.git (master) completed! +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yyccbb/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yyccbb/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yyccbb/ip.git (master) completed! -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AidenLYT/ip.git completed! -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepos INFO: [40/428] Analyzing https://github.com/AidenLYT/ip.git (master)... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cyqjoseph/ip.git... -Jan 30, 2024 6:32:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cyqjoseph/ip.git to complete... -Jan 30, 2024 6:32:04 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AidenLYT/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AidenLYT/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AidenLYT/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AidenLYT/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AidenLYT/ip.git (master) completed! -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/minghowC/ip.git completed! -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepos INFO: [41/428] Analyzing https://github.com/minghowC/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jeong-jaeho/ip.git... -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jeong-jaeho/ip.git to complete... -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/minghowC/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/minghowC/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AidenLYT/ip.git (master)... +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/minghowC/ip.git (master)... +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/minghowC/ip.git (master)... +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AidenLYT/ip.git (master)... +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/minghowC/ip.git (master) completed! +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AidenLYT/ip.git (master) completed! +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Jaspertzx/ip.git completed! -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepos INFO: [42/428] Analyzing https://github.com/Jaspertzx/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wilsonwid/ip.git... -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wilsonwid/ip.git to complete... -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jaspertzx/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jaspertzx/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/minghowC/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/minghowC/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/minghowC/ip.git (master) completed! -Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jaspertzx/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jaspertzx/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jaspertzx/ip.git (master) completed! -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/limrik/ip.git completed! -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/428] Analyzing https://github.com/limrik/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/iamtr/ip.git... -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [43/428] Analyzing https://github.com/limrik/ip.git (master)... +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jaspertzx/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jaspertzx/ip.git (master)... +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/iamtr/ip.git to complete... -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/limrik/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/limrik/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jaspertzx/ip.git (master)... +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jaspertzx/ip.git (master)... +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jaspertzx/ip.git (master) completed! +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/limrik/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/limrik/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/limrik/ip.git (master) completed! -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/cyqjoseph/ip.git completed! -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepos INFO: [44/428] Analyzing https://github.com/cyqjoseph/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yleeyilin/ip.git... -Jan 30, 2024 6:32:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yleeyilin/ip.git to complete... -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cyqjoseph/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cyqjoseph/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cyqjoseph/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cyqjoseph/ip.git (master)... -Jan 30, 2024 6:32:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cyqjoseph/ip.git (master) completed! -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jeong-jaeho/ip.git completed! -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator analyzeRepos INFO: [45/428] Analyzing https://github.com/jeong-jaeho/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RunjiaChen/ip.git... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RunjiaChen/ip.git to complete... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:29 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jeong-jaeho/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jeong-jaeho/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jeong-jaeho/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jeong-jaeho/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jeong-jaeho/ip.git (master) completed! +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wilsonwid/ip.git completed! -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepos INFO: [46/428] Analyzing https://github.com/wilsonwid/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nichee/ip.git... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nichee/ip.git to complete... -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jeong-jaeho/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jeong-jaeho/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jeong-jaeho/ip.git (master) completed! -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wilsonwid/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wilsonwid/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/iamtr/ip.git completed! -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepos INFO: [47/428] Analyzing https://github.com/iamtr/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leeweiming3/ip.git... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leeweiming3/ip.git to complete... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/iamtr/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/iamtr/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wilsonwid/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wilsonwid/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wilsonwid/ip.git (master) completed! -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/iamtr/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cyqjoseph/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/iamtr/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/iamtr/ip.git (master) completed! -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cyqjoseph/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cyqjoseph/ip.git (master) completed! +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wilsonwid/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wilsonwid/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wilsonwid/ip.git (master) completed! +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yleeyilin/ip.git completed! -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepos INFO: [48/428] Analyzing https://github.com/yleeyilin/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leepoeaik/ip.git... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leepoeaik/ip.git to complete... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yleeyilin/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yleeyilin/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yleeyilin/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yleeyilin/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yleeyilin/ip.git (master) completed! -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/RunjiaChen/ip.git completed! -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepos INFO: [49/428] Analyzing https://github.com/RunjiaChen/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/danielleloh/ip.git... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/danielleloh/ip.git to complete... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RunjiaChen/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RunjiaChen/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yleeyilin/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yleeyilin/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RunjiaChen/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yleeyilin/ip.git (master) completed! +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RunjiaChen/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RunjiaChen/ip.git (master) completed! +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nichee/ip.git completed! -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepos INFO: [50/428] Analyzing https://github.com/nichee/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wallacexuhanxiao/ip.git... -Jan 30, 2024 6:32:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wallacexuhanxiao/ip.git to complete... -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RunjiaChen/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nichee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nichee/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RunjiaChen/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RunjiaChen/ip.git (master) completed! -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nichee/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nichee/ip.git (master)... -Jan 30, 2024 6:32:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nichee/ip.git (master) completed! -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/leeweiming3/ip.git completed! -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [51/428] Analyzing https://github.com/leeweiming3/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LimZiJia/ip.git... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [51/428] Analyzing https://github.com/leeweiming3/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LimZiJia/ip.git to complete... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/leeweiming3/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/leeweiming3/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/leeweiming3/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/leeweiming3/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/leeweiming3/ip.git (master) completed! -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nichee/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nichee/ip.git (master)... +Jan 30, 2024 1:31:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nichee/ip.git (master) completed! +Jan 30, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/leepoeaik/ip.git completed! -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos INFO: [52/428] Analyzing https://github.com/leepoeaik/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thewongdylan/ip.git... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/thewongdylan/ip.git to complete... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/leepoeaik/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/leepoeaik/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/leepoeaik/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/leepoeaik/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/leepoeaik/ip.git (master) completed! -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/danielleloh/ip.git completed! -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos INFO: [53/428] Analyzing https://github.com/danielleloh/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ryan-Reno/ip.git... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ryan-Reno/ip.git to complete... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/danielleloh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/danielleloh/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wallacexuhanxiao/ip.git completed! -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [54/428] Analyzing https://github.com/wallacexuhanxiao/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jerremyng/ip.git... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jerremyng/ip.git to complete... -Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/danielleloh/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wallacexuhanxiao/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wallacexuhanxiao/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/danielleloh/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/danielleloh/ip.git (master) completed! -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "Ryan-Reno/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/Ryan-Reno/ip.git' 'repos/Ryan-Reno_ip/ip_bare' on path . : Cloning into bare repository 'repos/Ryan-Reno_ip/ip_bare'... @@ -1074,1009 +1062,1013 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jerremyng/ip.git... +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jerremyng/ip.git to complete... +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wallacexuhanxiao/ip.git completed! +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [54/428] Analyzing https://github.com/wallacexuhanxiao/ip.git (master)... +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/marcus-ny/ip.git... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LimZiJia/ip.git completed! -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/marcus-ny/ip.git to complete... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wallacexuhanxiao/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wallacexuhanxiao/ip.git (master)... +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LimZiJia/ip.git completed! +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos INFO: [55/428] Analyzing https://github.com/LimZiJia/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wapisai/ip.git... -Jan 30, 2024 6:32:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wapisai/ip.git to complete... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LimZiJia/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LimZiJia/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wallacexuhanxiao/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wallacexuhanxiao/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wallacexuhanxiao/ip.git (master) completed! -Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LimZiJia/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LimZiJia/ip.git (master)... -Jan 30, 2024 6:32:07 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LimZiJia/ip.git (master) completed! -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/thewongdylan/ip.git completed! -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos INFO: [56/428] Analyzing https://github.com/thewongdylan/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ty-stan0417/ip.git... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ty-stan0417/ip.git to complete... -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/thewongdylan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/thewongdylan/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wallacexuhanxiao/ip.git (master)... +Jan 30, 2024 1:31:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wallacexuhanxiao/ip.git (master)... +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wallacexuhanxiao/ip.git (master) completed! +Jan 30, 2024 1:31:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/thewongdylan/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/thewongdylan/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/thewongdylan/ip.git (master) completed! -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jerremyng/ip.git completed! -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos INFO: [57/428] Analyzing https://github.com/jerremyng/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kjw142857/ip.git... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kjw142857/ip.git to complete... -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marcus-ny/ip.git completed! +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jerremyng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jerremyng/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jerremyng/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jerremyng/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jerremyng/ip.git (master) completed! -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marcus-ny/ip.git completed! -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos INFO: [58/428] Analyzing https://github.com/marcus-ny/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ljy0422/ip.git... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ljy0422/ip.git to complete... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wapisai/ip.git completed! -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [59/428] Analyzing https://github.com/wapisai/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lokidoki102/ip.git... -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/marcus-ny/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/marcus-ny/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lokidoki102/ip.git... +Jan 30, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [59/428] Analyzing https://github.com/wapisai/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lokidoki102/ip.git to complete... -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wapisai/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wapisai/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marcus-ny/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wapisai/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marcus-ny/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marcus-ny/ip.git (master) completed! -Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wapisai/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wapisai/ip.git (master) completed! -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jerremyng/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jerremyng/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jerremyng/ip.git (master) completed! +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Ty-stan0417/ip.git completed! -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/428] Analyzing https://github.com/Ty-stan0417/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanguoyang/ip.git... -Jan 30, 2024 6:32:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepos +INFO: [60/428] Analyzing https://github.com/Ty-stan0417/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanguoyang/ip.git to complete... -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wapisai/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ty-stan0417/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ty-stan0417/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wapisai/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wapisai/ip.git (master) completed! +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marcus-ny/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marcus-ny/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marcus-ny/ip.git (master) completed! +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Ty-stan0417/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Ty-stan0417/ip.git (master)... -Jan 30, 2024 6:32:08 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Ty-stan0417/ip.git (master) completed! -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kjw142857/ip.git completed! -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepos INFO: [61/428] Analyzing https://github.com/kjw142857/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/myang2020/ip.git... -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/myang2020/ip.git to complete... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ljy0422/ip.git completed! +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kjw142857/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kjw142857/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kjw142857/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kjw142857/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kjw142857/ip.git (master) completed! -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ljy0422/ip.git completed! -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lokidoki102/ip.git completed! -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepos INFO: [62/428] Analyzing https://github.com/ljy0422/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jaejayrome/ip.git... -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jaejayrome/ip.git to complete... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ljy0422/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ljy0422/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lokidoki102/ip.git completed! +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepos INFO: [63/428] Analyzing https://github.com/lokidoki102/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cocoanautz/ip.git... -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cocoanautz/ip.git to complete... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ljy0422/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ljy0422/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lokidoki102/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lokidoki102/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ljy0422/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ljy0422/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ljy0422/ip.git (master) completed! -Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lokidoki102/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lokidoki102/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lokidoki102/ip.git (master) completed! -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanguoyang/ip.git completed! -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ljy0422/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepos INFO: [64/428] Analyzing https://github.com/tanguoyang/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kaitinghh/ip.git... -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kjw142857/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ljy0422/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ljy0422/ip.git (master) completed! +Jan 30, 2024 1:31:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kaitinghh/ip.git to complete... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kjw142857/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kjw142857/ip.git (master) completed! +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanguoyang/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanguoyang/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanguoyang/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanguoyang/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanguoyang/ip.git (master) completed! -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/myang2020/ip.git completed! -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [65/428] Analyzing https://github.com/myang2020/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lokidoki102/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lokidoki102/ip.git (master)... +Jan 30, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lokidoki102/ip.git (master) completed! +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jaejayrome/ip.git completed! +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [65/428] Analyzing https://github.com/jaejayrome/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/1rbg/ip.git... -Jan 30, 2024 6:32:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/1rbg/ip.git to complete... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jaejayrome/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jaejayrome/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/myang2020/ip.git completed! +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [66/428] Analyzing https://github.com/myang2020/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/benson1029/ip.git... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/benson1029/ip.git to complete... +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/myang2020/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/myang2020/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/myang2020/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/myang2020/ip.git (master)... -Jan 30, 2024 6:32:09 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/myang2020/ip.git (master) completed! -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jaejayrome/ip.git completed! -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kaitinghh/ip.git completed! +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/cocoanautz/ip.git completed! -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [66/428] Analyzing https://github.com/jaejayrome/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/benson1029/ip.git... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/benson1029/ip.git to complete... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [67/428] Analyzing https://github.com/cocoanautz/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [67/428] Analyzing https://github.com/kaitinghh/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CaptainKeqing/ip.git... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/CaptainKeqing/ip.git to complete... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jaejayrome/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jaejayrome/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cocoanautz/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cocoanautz/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cocoanautz/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cocoanautz/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cocoanautz/ip.git (master) completed! -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kaitinghh/ip.git completed! -Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jaejayrome/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [68/428] Analyzing https://github.com/kaitinghh/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yuechen2001/ip.git... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [68/428] Analyzing https://github.com/cocoanautz/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/CaptainKeqing/ip.git to complete... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yuechen2001/ip.git to complete... -Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jaejayrome/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jaejayrome/ip.git (master) completed! -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kaitinghh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kaitinghh/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jaejayrome/ip.git (master) completed! +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cocoanautz/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cocoanautz/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kaitinghh/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kaitinghh/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cocoanautz/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kaitinghh/ip.git (master) completed! -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cocoanautz/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cocoanautz/ip.git (master) completed! +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/1rbg/ip.git completed! -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos INFO: [69/428] Analyzing https://github.com/1rbg/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wang-xinrong/ip.git... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wang-xinrong/ip.git to complete... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/1rbg/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/1rbg/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/benson1029/ip.git completed! +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [70/428] Analyzing https://github.com/benson1029/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jiahui0309/ip.git... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jiahui0309/ip.git to complete... +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/benson1029/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/benson1029/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/1rbg/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/1rbg/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/1rbg/ip.git (master) completed! -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/CaptainKeqing/ip.git completed! -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [70/428] Analyzing https://github.com/CaptainKeqing/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jiahui0309/ip.git... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jiahui0309/ip.git to complete... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/CaptainKeqing/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/CaptainKeqing/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/benson1029/ip.git completed! -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [71/428] Analyzing https://github.com/benson1029/ip.git (master)... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [71/428] Analyzing https://github.com/CaptainKeqing/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TheodoreKooo/ip.git... -Jan 30, 2024 6:32:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TheodoreKooo/ip.git to complete... -Jan 30, 2024 6:32:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/benson1029/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/benson1029/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/CaptainKeqing/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/CaptainKeqing/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CaptainKeqing/ip.git (master) completed! -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yuechen2001/ip.git completed! -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos INFO: [72/428] Analyzing https://github.com/yuechen2001/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kokerinks/ip.git... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/CaptainKeqing/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/CaptainKeqing/ip.git (master)... +Jan 30, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kokerinks/ip.git to complete... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yuechen2001/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yuechen2001/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/benson1029/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/benson1029/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/benson1029/ip.git (master) completed! -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/CaptainKeqing/ip.git (master)... +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yuechen2001/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/CaptainKeqing/ip.git (master)... +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CaptainKeqing/ip.git (master) completed! +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yuechen2001/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yuechen2001/ip.git (master) completed! -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wang-xinrong/ip.git completed! -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepos INFO: [73/428] Analyzing https://github.com/wang-xinrong/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ella-e/ip.git... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ella-e/ip.git to complete... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wang-xinrong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wang-xinrong/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wang-xinrong/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wang-xinrong/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wang-xinrong/ip.git (master) completed! -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jiahui0309/ip.git completed! -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepos INFO: [74/428] Analyzing https://github.com/jiahui0309/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ForAeons/ip.git... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ForAeons/ip.git to complete... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wang-xinrong/ip.git (master)... +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jiahui0309/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jiahui0309/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wang-xinrong/ip.git (master)... +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wang-xinrong/ip.git (master) completed! +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TheodoreKooo/ip.git completed! -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepos INFO: [75/428] Analyzing https://github.com/TheodoreKooo/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/solomonng2001/ip.git... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/solomonng2001/ip.git to complete... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TheodoreKooo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TheodoreKooo/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TheodoreKooo/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TheodoreKooo/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TheodoreKooo/ip.git (master) completed! -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kokerinks/ip.git completed! -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepos INFO: [76/428] Analyzing https://github.com/kokerinks/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Xuyan0518/ip.git... -Jan 30, 2024 6:32:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TheodoreKooo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TheodoreKooo/ip.git (master)... +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Xuyan0518/ip.git to complete... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jiahui0309/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kokerinks/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kokerinks/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TheodoreKooo/ip.git (master)... +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TheodoreKooo/ip.git (master)... +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jiahui0309/ip.git (master)... +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TheodoreKooo/ip.git (master) completed! +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jiahui0309/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jiahui0309/ip.git (master) completed! -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kokerinks/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kokerinks/ip.git (master)... -Jan 30, 2024 6:32:11 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kokerinks/ip.git (master) completed! -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Ella-e/ip.git completed! -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepos INFO: [77/428] Analyzing https://github.com/Ella-e/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/justinlengch/ip.git... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/justinlengch/ip.git to complete... -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:34 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ella-e/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ella-e/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ella-e/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ella-e/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ella-e/ip.git (master) completed! -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ForAeons/ip.git completed! -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [78/428] Analyzing https://github.com/ForAeons/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jjchee77/ip.git... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [78/428] Analyzing https://github.com/ForAeons/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jjchee77/ip.git to complete... -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ForAeons/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ForAeons/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ella-e/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/solomonng2001/ip.git completed! -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [79/428] Analyzing https://github.com/solomonng2001/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ronnnnnnnnn/ip.git... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [79/428] Analyzing https://github.com/solomonng2001/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ella-e/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ella-e/ip.git (master) completed! +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ronnnnnnnnn/ip.git to complete... -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ForAeons/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ForAeons/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/solomonng2001/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/solomonng2001/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Xuyan0518/ip.git completed! -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos INFO: [80/428] Analyzing https://github.com/Xuyan0518/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dayn-1/ip.git... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dayn-1/ip.git to complete... -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Xuyan0518/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Xuyan0518/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Xuyan0518/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Xuyan0518/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Xuyan0518/ip.git (master) completed! -Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/solomonng2001/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/solomonng2001/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/solomonng2001/ip.git (master) completed! -Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ForAeons/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ForAeons/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ForAeons/ip.git (master) completed! -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/justinlengch/ip.git completed! -Jan 30, 2024 6:32:12 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos INFO: [81/428] Analyzing https://github.com/justinlengch/ip.git (master)... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NeoHW/ip.git... -Jan 30, 2024 6:32:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NeoHW/ip.git to complete... -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/justinlengch/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/justinlengch/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ForAeons/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ForAeons/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ForAeons/ip.git (master) completed! +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/justinlengch/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/justinlengch/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/justinlengch/ip.git (master) completed! -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jjchee77/ip.git completed! -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [82/428] Analyzing https://github.com/jjchee77/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ronnnnnnnnn/ip.git completed! +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [82/428] Analyzing https://github.com/ronnnnnnnnn/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tituschewxj/ip.git... -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tituschewxj/ip.git to complete... -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jjchee77/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jjchee77/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jjchee77/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jjchee77/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jjchee77/ip.git (master) completed! -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ronnnnnnnnn/ip.git completed! -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [83/428] Analyzing https://github.com/ronnnnnnnnn/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/choowengyan/ip.git... -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/choowengyan/ip.git to complete... -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ronnnnnnnnn/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ronnnnnnnnn/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ronnnnnnnnn/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ronnnnnnnnn/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ronnnnnnnnn/ip.git (master) completed! -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dayn-1/ip.git completed! -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/428] Analyzing https://github.com/dayn-1/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/guanquann/ip.git... -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/guanquann/ip.git to complete... -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [83/428] Analyzing https://github.com/dayn-1/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/choowengyan/ip.git... +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/choowengyan/ip.git to complete... +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dayn-1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dayn-1/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jjchee77/ip.git completed! +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/guanquann/ip.git... +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [84/428] Analyzing https://github.com/jjchee77/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/guanquann/ip.git to complete... +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jjchee77/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jjchee77/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ronnnnnnnnn/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ronnnnnnnnn/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ronnnnnnnnn/ip.git (master) completed! +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dayn-1/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dayn-1/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dayn-1/ip.git (master) completed! -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jjchee77/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jjchee77/ip.git (master)... +Jan 30, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jjchee77/ip.git (master) completed! +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/NeoHW/ip.git completed! -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos INFO: [85/428] Analyzing https://github.com/NeoHW/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Hibeom0929/ip.git... -Jan 30, 2024 6:32:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Hibeom0929/ip.git to complete... -Jan 30, 2024 6:32:13 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/NeoHW/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/NeoHW/ip.git (master)... -Jan 30, 2024 6:32:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NeoHW/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/NeoHW/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/NeoHW/ip.git (master) completed! -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/choowengyan/ip.git completed! +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tituschewxj/ip.git completed! -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos INFO: [86/428] Analyzing https://github.com/tituschewxj/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [87/428] Analyzing https://github.com/choowengyan/ip.git (master)... +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JukeBoxK/ip.git... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lynnetteeee/ip.git... +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JukeBoxK/ip.git to complete... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lynnetteeee/ip.git to complete... +Jan 30, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/NeoHW/ip.git (master)... +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tituschewxj/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tituschewxj/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/choowengyan/ip.git completed! -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [87/428] Analyzing https://github.com/choowengyan/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lynnetteeee/ip.git... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lynnetteeee/ip.git to complete... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/NeoHW/ip.git (master) completed! +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/choowengyan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/choowengyan/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/choowengyan/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/choowengyan/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/choowengyan/ip.git (master) completed! -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/guanquann/ip.git completed! -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos INFO: [88/428] Analyzing https://github.com/guanquann/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tamagochuuu/ip.git... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tamagochuuu/ip.git to complete... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/guanquann/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/guanquann/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tituschewxj/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tituschewxj/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tituschewxj/ip.git (master) completed! -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/choowengyan/ip.git (master)... +Jan 30, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/choowengyan/ip.git (master)... +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/choowengyan/ip.git (master) completed! +Jan 30, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/guanquann/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/guanquann/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/guanquann/ip.git (master) completed! -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Hibeom0929/ip.git completed! -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos INFO: [89/428] Analyzing https://github.com/Hibeom0929/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/owenong1/ip.git... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/owenong1/ip.git to complete... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/guanquann/ip.git (master)... +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/guanquann/ip.git (master) completed! +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Hibeom0929/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Hibeom0929/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tituschewxj/ip.git (master)... +Jan 30, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tituschewxj/ip.git (master)... +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tituschewxj/ip.git (master) completed! +Jan 30, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Hibeom0929/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Hibeom0929/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Hibeom0929/ip.git (master) completed! -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lynnetteeee/ip.git completed! +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JukeBoxK/ip.git completed! -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [90/428] Analyzing https://github.com/JukeBoxK/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [90/428] Analyzing https://github.com/lynnetteeee/ip.git (master)... +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/willowisp01/ip.git... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/willowisp01/ip.git to complete... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JukeBoxK/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JukeBoxK/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JukeBoxK/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lynnetteeee/ip.git completed! -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [91/428] Analyzing https://github.com/lynnetteeee/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [91/428] Analyzing https://github.com/JukeBoxK/ip.git (master)... +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/HongRay/ip.git... -Jan 30, 2024 6:32:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HongRay/ip.git to complete... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JukeBoxK/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JukeBoxK/ip.git (master) completed! -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lynnetteeee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lynnetteeee/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lynnetteeee/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lynnetteeee/ip.git (master)... -Jan 30, 2024 6:32:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lynnetteeee/ip.git (master) completed! -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JukeBoxK/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JukeBoxK/ip.git (master)... +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tamagochuuu/ip.git completed! -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepos INFO: [92/428] Analyzing https://github.com/tamagochuuu/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Wyrkx/ip.git... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Wyrkx/ip.git to complete... -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JukeBoxK/ip.git (master)... +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lynnetteeee/ip.git (master)... +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tamagochuuu/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tamagochuuu/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JukeBoxK/ip.git (master)... +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JukeBoxK/ip.git (master) completed! +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lynnetteeee/ip.git (master)... +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lynnetteeee/ip.git (master) completed! +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tamagochuuu/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tamagochuuu/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tamagochuuu/ip.git (master) completed! -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/owenong1/ip.git completed! -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepos INFO: [93/428] Analyzing https://github.com/owenong1/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Benson15912/ip.git... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Benson15912/ip.git to complete... -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/owenong1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/owenong1/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/owenong1/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/owenong1/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/owenong1/ip.git (master) completed! -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/willowisp01/ip.git completed! -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepos INFO: [94/428] Analyzing https://github.com/willowisp01/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kailinteoo/ip.git... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kailinteoo/ip.git to complete... -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/willowisp01/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/willowisp01/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/HongRay/ip.git completed! -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepos INFO: [95/428] Analyzing https://github.com/HongRay/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Alteqa/ip.git... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Alteqa/ip.git to complete... -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HongRay/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HongRay/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Wyrkx/ip.git completed! +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/MaYuehan/ip.git... +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [96/428] Analyzing https://github.com/Wyrkx/ip.git (master)... +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/MaYuehan/ip.git to complete... +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/willowisp01/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Wyrkx/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Wyrkx/ip.git (master)... +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/willowisp01/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/willowisp01/ip.git (master) completed! -Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HongRay/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Wyrkx/ip.git completed! -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [96/428] Analyzing https://github.com/Wyrkx/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/MaYuehan/ip.git... -Jan 30, 2024 6:32:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/MaYuehan/ip.git to complete... -Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/HongRay/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/HongRay/ip.git (master) completed! -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Wyrkx/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Wyrkx/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Wyrkx/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Wyrkx/ip.git (master)... -Jan 30, 2024 6:32:15 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Wyrkx/ip.git (master) completed! -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Benson15912/ip.git completed! -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepos INFO: [97/428] Analyzing https://github.com/Benson15912/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhenghuil/ip.git... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhenghuil/ip.git to complete... -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Benson15912/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Benson15912/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Benson15912/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Benson15912/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Benson15912/ip.git (master) completed! -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess -WARNING: Exception met while trying to clone the repo "zhenghuil/ip[master]", will skip this repo. -reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/zhenghuil/ip.git' 'repos/zhenghuil_ip/ip_bare' on path . : -Cloning into bare repository 'repos/zhenghuil_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) - -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kailinteoo/ip.git completed! +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [98/428] Analyzing https://github.com/kailinteoo/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sarjinius/ip.git... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sarjinius/ip.git to complete... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kailinteoo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kailinteoo/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Alteqa/ip.git completed! -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [98/428] Analyzing https://github.com/Alteqa/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [99/428] Analyzing https://github.com/Alteqa/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/appleraincoat/ip.git... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/appleraincoat/ip.git to complete... -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kailinteoo/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Alteqa/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Alteqa/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kailinteoo/ip.git completed! -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [99/428] Analyzing https://github.com/kailinteoo/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kailinteoo/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kailinteoo/ip.git (master) completed! +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/MaYuehan/ip.git completed! +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [100/428] Analyzing https://github.com/MaYuehan/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/reetmitra/ip.git... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/reetmitra/ip.git to complete... -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kailinteoo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kailinteoo/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Alteqa/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/MaYuehan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/MaYuehan/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Alteqa/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Alteqa/ip.git (master) completed! -Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kailinteoo/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kailinteoo/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/MaYuehan/ip.git completed! -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kailinteoo/ip.git (master) completed! -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [100/428] Analyzing https://github.com/MaYuehan/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhenghuil/ip.git completed! +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [101/428] Analyzing https://github.com/zhenghuil/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/taeewonnn/ip.git... -Jan 30, 2024 6:32:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/taeewonnn/ip.git to complete... -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/MaYuehan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/MaYuehan/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhenghuil/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhenghuil/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhenghuil/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhenghuil/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhenghuil/ip.git (master) completed! +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/MaYuehan/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/MaYuehan/ip.git (master)... -Jan 30, 2024 6:32:16 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/MaYuehan/ip.git (master) completed! -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sarjinius/ip.git completed! -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [101/428] Analyzing https://github.com/sarjinius/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [102/428] Analyzing https://github.com/sarjinius/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jamessinmaojun/ip.git... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jamessinmaojun/ip.git to complete... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sarjinius/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sarjinius/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sarjinius/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sarjinius/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sarjinius/ip.git (master) completed! -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/appleraincoat/ip.git completed! -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [102/428] Analyzing https://github.com/appleraincoat/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [103/428] Analyzing https://github.com/appleraincoat/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/H4mes/ip.git... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/H4mes/ip.git to complete... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/appleraincoat/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/appleraincoat/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/reetmitra/ip.git completed! -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [103/428] Analyzing https://github.com/reetmitra/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [104/428] Analyzing https://github.com/reetmitra/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChocoRagdoll/ip.git... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChocoRagdoll/ip.git to complete... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/reetmitra/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/reetmitra/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/appleraincoat/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/appleraincoat/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/appleraincoat/ip.git (master) completed! -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/reetmitra/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/reetmitra/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/reetmitra/ip.git (master) completed! -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/appleraincoat/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/appleraincoat/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/appleraincoat/ip.git (master) completed! +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/taeewonnn/ip.git completed! -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [104/428] Analyzing https://github.com/taeewonnn/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [105/428] Analyzing https://github.com/taeewonnn/ip.git (master)... +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ondretann/ip.git... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ondretann/ip.git to complete... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/taeewonnn/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/taeewonnn/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/taeewonnn/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/taeewonnn/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/taeewonnn/ip.git (master) completed! -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jamessinmaojun/ip.git completed! -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [105/428] Analyzing https://github.com/jamessinmaojun/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [106/428] Analyzing https://github.com/jamessinmaojun/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ashleygoh1/ip.git... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ashleygoh1/ip.git to complete... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jamessinmaojun/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jamessinmaojun/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jamessinmaojun/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jamessinmaojun/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jamessinmaojun/ip.git (master) completed! -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/H4mes/ip.git completed! -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [106/428] Analyzing https://github.com/H4mes/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [107/428] Analyzing https://github.com/H4mes/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/justincred/ip.git... -Jan 30, 2024 6:32:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/justincred/ip.git to complete... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/H4mes/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/H4mes/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/H4mes/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/H4mes/ip.git (master)... -Jan 30, 2024 6:32:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/H4mes/ip.git (master) completed! -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChocoRagdoll/ip.git completed! -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [107/428] Analyzing https://github.com/ChocoRagdoll/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JerryWang0000/ip.git... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [108/428] Analyzing https://github.com/ChocoRagdoll/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JerryWang0000/ip.git to complete... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChocoRagdoll/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChocoRagdoll/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/H4mes/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jamessinmaojun/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/H4mes/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/H4mes/ip.git (master) completed! +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jamessinmaojun/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jamessinmaojun/ip.git (master) completed! +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChocoRagdoll/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChocoRagdoll/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChocoRagdoll/ip.git (master) completed! +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ondretann/ip.git completed! -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [108/428] Analyzing https://github.com/ondretann/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [109/428] Analyzing https://github.com/ondretann/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/julia-cp/ip.git... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/julia-cp/ip.git to complete... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ondretann/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ondretann/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChocoRagdoll/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ondretann/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChocoRagdoll/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChocoRagdoll/ip.git (master) completed! -Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ondretann/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ondretann/ip.git (master) completed! -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "JerryWang0000/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/JerryWang0000/ip.git' 'repos/JerryWang0000_ip/ip_bare' on path . : Cloning into bare repository 'repos/JerryWang0000_ip/ip_bare'... @@ -2092,253 +2084,269 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Tanzhiheng26/ip.git... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Tanzhiheng26/ip.git to complete... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ondretann/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ondretann/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ondretann/ip.git (master) completed! +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ashleygoh1/ip.git completed! -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [110/428] Analyzing https://github.com/ashleygoh1/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/BryanL2303/ip.git... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [109/428] Analyzing https://github.com/ashleygoh1/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/BryanL2303/ip.git to complete... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ashleygoh1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ashleygoh1/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ashleygoh1/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ashleygoh1/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ashleygoh1/ip.git (master) completed! -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/justincred/ip.git completed! -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [110/428] Analyzing https://github.com/justincred/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [111/428] Analyzing https://github.com/justincred/ip.git (master)... +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sethteo/ip.git... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sethteo/ip.git to complete... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:39 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/justincred/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/justincred/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/justincred/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/justincred/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/justincred/ip.git (master) completed! -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/julia-cp/ip.git completed! -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [111/428] Analyzing https://github.com/julia-cp/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [112/428] Analyzing https://github.com/julia-cp/ip.git (master)... +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Joelwang22/ip.git... -Jan 30, 2024 6:32:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Joelwang22/ip.git to complete... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/julia-cp/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/julia-cp/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/julia-cp/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/julia-cp/ip.git (master)... -Jan 30, 2024 6:32:18 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/julia-cp/ip.git (master) completed! -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Tanzhiheng26/ip.git completed! -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [112/428] Analyzing https://github.com/Tanzhiheng26/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [113/428] Analyzing https://github.com/Tanzhiheng26/ip.git (master)... +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ibnu2651/ip.git... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ibnu2651/ip.git to complete... -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Tanzhiheng26/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Tanzhiheng26/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Tanzhiheng26/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Tanzhiheng26/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Tanzhiheng26/ip.git (master) completed! -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/BryanL2303/ip.git completed! -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [113/428] Analyzing https://github.com/BryanL2303/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [114/428] Analyzing https://github.com/BryanL2303/ip.git (master)... +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SimKianSeng/ip.git... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SimKianSeng/ip.git to complete... -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/BryanL2303/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/BryanL2303/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/BryanL2303/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sethteo/ip.git completed! -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [114/428] Analyzing https://github.com/sethteo/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/guohuang88/ip.git... -Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/BryanL2303/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [115/428] Analyzing https://github.com/sethteo/ip.git (master)... +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/guohuang88/ip.git to complete... -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/BryanL2303/ip.git (master) completed! -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sethteo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sethteo/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sethteo/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/BryanL2303/ip.git (master)... +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sethteo/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sethteo/ip.git (master) completed! -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/BryanL2303/ip.git (master)... +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Joelwang22/ip.git completed! -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [115/428] Analyzing https://github.com/Joelwang22/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/BryanL2303/ip.git (master) completed! +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/rizkidelta/ip.git... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [116/428] Analyzing https://github.com/Joelwang22/ip.git (master)... +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/rizkidelta/ip.git to complete... -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Joelwang22/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Joelwang22/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Joelwang22/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Joelwang22/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Joelwang22/ip.git (master) completed! -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ibnu2651/ip.git completed! -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [116/428] Analyzing https://github.com/ibnu2651/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [117/428] Analyzing https://github.com/ibnu2651/ip.git (master)... +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Murugan-Maniish/ip.git... -Jan 30, 2024 6:32:19 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Murugan-Maniish/ip.git to complete... -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Joelwang22/ip.git (master)... +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ibnu2651/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ibnu2651/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Joelwang22/ip.git (master)... +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Joelwang22/ip.git (master) completed! +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ibnu2651/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ibnu2651/ip.git (master)... -Jan 30, 2024 6:32:19 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ibnu2651/ip.git (master) completed! -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SimKianSeng/ip.git completed! -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [117/428] Analyzing https://github.com/SimKianSeng/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [118/428] Analyzing https://github.com/SimKianSeng/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AjayArvind2207/ip.git... -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AjayArvind2207/ip.git to complete... -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SimKianSeng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SimKianSeng/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SimKianSeng/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SimKianSeng/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SimKianSeng/ip.git (master) completed! -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/guohuang88/ip.git completed! -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [118/428] Analyzing https://github.com/guohuang88/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [119/428] Analyzing https://github.com/guohuang88/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Teee728/ip.git... -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Teee728/ip.git to complete... -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/guohuang88/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/guohuang88/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SimKianSeng/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SimKianSeng/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SimKianSeng/ip.git (master) completed! +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/guohuang88/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/guohuang88/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/guohuang88/ip.git (master) completed! -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/rizkidelta/ip.git completed! -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [119/428] Analyzing https://github.com/rizkidelta/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [120/428] Analyzing https://github.com/rizkidelta/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dillontkh/ip.git... -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dillontkh/ip.git to complete... -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rizkidelta/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rizkidelta/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rizkidelta/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rizkidelta/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rizkidelta/ip.git (master) completed! -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Murugan-Maniish/ip.git completed! -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [120/428] Analyzing https://github.com/Murugan-Maniish/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [121/428] Analyzing https://github.com/Murugan-Maniish/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shaunlxw/ip.git... -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shaunlxw/ip.git to complete... -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Murugan-Maniish/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Murugan-Maniish/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rizkidelta/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rizkidelta/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rizkidelta/ip.git (master) completed! +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Murugan-Maniish/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Murugan-Maniish/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Murugan-Maniish/ip.git (master) completed! -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AjayArvind2207/ip.git completed! -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [121/428] Analyzing https://github.com/AjayArvind2207/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [122/428] Analyzing https://github.com/AjayArvind2207/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Morninggloryyy/ip.git... -Jan 30, 2024 6:32:20 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Morninggloryyy/ip.git to complete... -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AjayArvind2207/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AjayArvind2207/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AjayArvind2207/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AjayArvind2207/ip.git (master)... -Jan 30, 2024 6:32:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AjayArvind2207/ip.git (master) completed! -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Teee728/ip.git completed! -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [122/428] Analyzing https://github.com/Teee728/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [123/428] Analyzing https://github.com/Teee728/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jmsandiegoo/ip.git... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jmsandiegoo/ip.git to complete... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AjayArvind2207/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AjayArvind2207/ip.git (master) completed! +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Teee728/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Teee728/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Teee728/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Teee728/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Teee728/ip.git (master) completed! +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "Morninggloryyy/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/Morninggloryyy/ip.git' 'repos/Morninggloryyy_ip/ip_bare' on path . : Cloning into bare repository 'repos/Morninggloryyy_ip/ip_bare'... @@ -2354,417 +2362,431 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryanlimdx/ip.git... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryanlimdx/ip.git to complete... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Teee728/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Teee728/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Teee728/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Teee728/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Teee728/ip.git (master) completed! -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dillontkh/ip.git completed! -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [123/428] Analyzing https://github.com/dillontkh/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [124/428] Analyzing https://github.com/dillontkh/ip.git (master)... +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chiralcentre/ip.git... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chiralcentre/ip.git to complete... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dillontkh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dillontkh/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dillontkh/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dillontkh/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dillontkh/ip.git (master) completed! -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shaunlxw/ip.git completed! -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [124/428] Analyzing https://github.com/shaunlxw/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jmsandiegoo/ip.git completed! +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [125/428] Analyzing https://github.com/jmsandiegoo/ip.git (master)... +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/KhoonSun47/ip.git... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KhoonSun47/ip.git to complete... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shaunlxw/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shaunlxw/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shaunlxw/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shaunlxw/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shaunlxw/ip.git (master) completed! -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jmsandiegoo/ip.git completed! -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jmsandiegoo/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jmsandiegoo/ip.git (master)... +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ryanlimdx/ip.git completed! -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [125/428] Analyzing https://github.com/jmsandiegoo/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [126/428] Analyzing https://github.com/ryanlimdx/ip.git (master)... +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ThatGirlJam/ip.git... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ThatGirlJam/ip.git to complete... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [126/428] Analyzing https://github.com/ryanlimdx/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/0liverkong/ip.git... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/0liverkong/ip.git to complete... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jmsandiegoo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jmsandiegoo/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ryanlimdx/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ryanlimdx/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanlimdx/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanlimdx/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chiralcentre/ip.git completed! -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanlimdx/ip.git (master) completed! -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/0liverkong/ip.git... +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos INFO: [127/428] Analyzing https://github.com/chiralcentre/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xuelinglow/ip.git... -Jan 30, 2024 6:32:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xuelinglow/ip.git to complete... -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jmsandiegoo/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/0liverkong/ip.git to complete... +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chiralcentre/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chiralcentre/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jmsandiegoo/ip.git (master)... +Jan 30, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jmsandiegoo/ip.git (master)... -Jan 30, 2024 6:32:21 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jmsandiegoo/ip.git (master) completed! -Jan 30, 2024 6:32:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanlimdx/ip.git (master)... +Jan 30, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanlimdx/ip.git (master)... +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanlimdx/ip.git (master) completed! +Jan 30, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chiralcentre/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chiralcentre/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chiralcentre/ip.git (master) completed! -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/KhoonSun47/ip.git completed! -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos INFO: [128/428] Analyzing https://github.com/KhoonSun47/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yashpola/ip.git... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yashpola/ip.git to complete... -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xuelinglow/ip.git... +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xuelinglow/ip.git to complete... +Jan 30, 2024 1:31:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KhoonSun47/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KhoonSun47/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KhoonSun47/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KhoonSun47/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KhoonSun47/ip.git (master) completed! -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ThatGirlJam/ip.git completed! -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepos INFO: [129/428] Analyzing https://github.com/ThatGirlJam/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yashpola/ip.git... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yashpola/ip.git to complete... +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KhoonSun47/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shaunlxw/ip.git completed! +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/breezetall/ip.git... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [130/428] Analyzing https://github.com/shaunlxw/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ThatGirlJam/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ThatGirlJam/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KhoonSun47/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KhoonSun47/ip.git (master) completed! +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/breezetall/ip.git to complete... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shaunlxw/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shaunlxw/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/0liverkong/ip.git completed! -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [130/428] Analyzing https://github.com/0liverkong/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JiaXinEu/ip.git... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [131/428] Analyzing https://github.com/0liverkong/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JiaXinEu/ip.git to complete... -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ThatGirlJam/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ThatGirlJam/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/0liverkong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/0liverkong/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ThatGirlJam/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xuelinglow/ip.git completed! -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [131/428] Analyzing https://github.com/xuelinglow/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yisiox/ip.git... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yisiox/ip.git to complete... -Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ThatGirlJam/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ThatGirlJam/ip.git (master) completed! -Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shaunlxw/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shaunlxw/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shaunlxw/ip.git (master) completed! +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/0liverkong/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xuelinglow/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xuelinglow/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/0liverkong/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/0liverkong/ip.git (master) completed! -Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xuelinglow/ip.git completed! +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [132/428] Analyzing https://github.com/xuelinglow/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yisiox/ip.git... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yisiox/ip.git to complete... +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xuelinglow/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xuelinglow/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/xuelinglow/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xuelinglow/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xuelinglow/ip.git (master) completed! -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yashpola/ip.git completed! -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [132/428] Analyzing https://github.com/yashpola/ip.git (master)... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/maiyasaliha/ip.git... -Jan 30, 2024 6:32:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/maiyasaliha/ip.git to complete... -Jan 30, 2024 6:32:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yashpola/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yashpola/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yashpola/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yashpola/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yashpola/ip.git (master) completed! -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/breezetall/ip.git completed! -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepos INFO: [133/428] Analyzing https://github.com/breezetall/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/maiyasaliha/ip.git... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/maiyasaliha/ip.git to complete... +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/breezetall/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/breezetall/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yashpola/ip.git completed! +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [134/428] Analyzing https://github.com/yashpola/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/triciiaaa/ip.git... -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/triciiaaa/ip.git to complete... -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yashpola/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yashpola/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JiaXinEu/ip.git completed! -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [134/428] Analyzing https://github.com/JiaXinEu/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jolonauh/ip.git... -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [135/428] Analyzing https://github.com/JiaXinEu/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jolonauh/ip.git to complete... -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/breezetall/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/breezetall/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JiaXinEu/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JiaXinEu/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/breezetall/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yisiox/ip.git completed! -Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/breezetall/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [135/428] Analyzing https://github.com/yisiox/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alvinnzz/ip.git... -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/breezetall/ip.git (master) completed! -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alvinnzz/ip.git to complete... -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yisiox/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yisiox/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yashpola/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yashpola/ip.git (master)... +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yashpola/ip.git (master) completed! +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JiaXinEu/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JiaXinEu/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JiaXinEu/ip.git (master) completed! -Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yisiox/ip.git completed! +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [136/428] Analyzing https://github.com/yisiox/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alvinnzz/ip.git... +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alvinnzz/ip.git to complete... +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yisiox/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yisiox/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yisiox/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yisiox/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yisiox/ip.git (master) completed! -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/maiyasaliha/ip.git completed! -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [136/428] Analyzing https://github.com/maiyasaliha/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [137/428] Analyzing https://github.com/maiyasaliha/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wolffe88/ip.git... -Jan 30, 2024 6:32:23 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wolffe88/ip.git to complete... -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/maiyasaliha/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/maiyasaliha/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/maiyasaliha/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/maiyasaliha/ip.git (master)... -Jan 30, 2024 6:32:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/maiyasaliha/ip.git (master) completed! -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/triciiaaa/ip.git completed! -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jolonauh/ip.git completed! -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [137/428] Analyzing https://github.com/triciiaaa/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [138/428] Analyzing https://github.com/triciiaaa/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/menatahari/ip.git... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/menatahari/ip.git to complete... -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [138/428] Analyzing https://github.com/Jolonauh/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/modembcc/ip.git... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/modembcc/ip.git to complete... -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/triciiaaa/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/triciiaaa/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jolonauh/ip.git completed! +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/modembcc/ip.git... +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [139/428] Analyzing https://github.com/Jolonauh/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/modembcc/ip.git to complete... +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/maiyasaliha/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/triciiaaa/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jolonauh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jolonauh/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/triciiaaa/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jolonauh/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/maiyasaliha/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/triciiaaa/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/maiyasaliha/ip.git (master) completed! +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/triciiaaa/ip.git (master) completed! -Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jolonauh/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jolonauh/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alvinnzz/ip.git completed! -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jolonauh/ip.git (master) completed! -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [139/428] Analyzing https://github.com/alvinnzz/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alvinnzz/ip.git completed! +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [140/428] Analyzing https://github.com/alvinnzz/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tsulim/ip.git... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tsulim/ip.git to complete... -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alvinnzz/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alvinnzz/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alvinnzz/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alvinnzz/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alvinnzz/ip.git (master) completed! -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wolffe88/ip.git completed! -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [140/428] Analyzing https://github.com/wolffe88/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [141/428] Analyzing https://github.com/wolffe88/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanyunchao/ip.git... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanyunchao/ip.git to complete... -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wolffe88/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wolffe88/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wolffe88/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wolffe88/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wolffe88/ip.git (master) completed! -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/menatahari/ip.git completed! -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [141/428] Analyzing https://github.com/menatahari/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [142/428] Analyzing https://github.com/menatahari/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yashma-sonara/ip.git... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yashma-sonara/ip.git to complete... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/modembcc/ip.git completed! -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [142/428] Analyzing https://github.com/modembcc/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [143/428] Analyzing https://github.com/modembcc/ip.git (master)... +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Hwww23/ip.git... -Jan 30, 2024 6:32:24 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Hwww23/ip.git to complete... -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/menatahari/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/menatahari/ip.git (master)... -Jan 30, 2024 6:32:24 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/modembcc/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/modembcc/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/menatahari/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tsulim/ip.git completed! -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [143/428] Analyzing https://github.com/tsulim/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rickkoh/ip.git... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rickkoh/ip.git to complete... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wolffe88/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/menatahari/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/menatahari/ip.git (master) completed! -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tsulim/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tsulim/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wolffe88/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wolffe88/ip.git (master) completed! +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/modembcc/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/modembcc/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/modembcc/ip.git (master) completed! -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tsulim/ip.git completed! +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [144/428] Analyzing https://github.com/tsulim/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rickkoh/ip.git... +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rickkoh/ip.git to complete... +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tsulim/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tsulim/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tsulim/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tsulim/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tsulim/ip.git (master) completed! -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanyunchao/ip.git completed! -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [144/428] Analyzing https://github.com/tanyunchao/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [145/428] Analyzing https://github.com/tanyunchao/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ValenciaLim/ip.git... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ValenciaLim/ip.git to complete... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanyunchao/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanyunchao/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Hwww23/ip.git completed! +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Zer0Legion/ip.git... +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [146/428] Analyzing https://github.com/Hwww23/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Zer0Legion/ip.git to complete... +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanyunchao/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yashma-sonara/ip.git completed! +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [147/428] Analyzing https://github.com/yashma-sonara/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/maze508/ip.git... +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanyunchao/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanyunchao/ip.git (master) completed! -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/maze508/ip.git to complete... +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Hwww23/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Hwww23/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yashma-sonara/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yashma-sonara/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "ValenciaLim/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/ValenciaLim/ip.git' 'repos/ValenciaLim_ip/ip_bare' on path . : Cloning into bare repository 'repos/ValenciaLim_ip/ip_bare'... @@ -2780,83 +2802,73 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Zer0Legion/ip.git... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Zer0Legion/ip.git to complete... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yashma-sonara/ip.git completed! -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [145/428] Analyzing https://github.com/yashma-sonara/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/maze508/ip.git... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/maze508/ip.git to complete... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yashma-sonara/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yashma-sonara/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Hwww23/ip.git completed! -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [146/428] Analyzing https://github.com/Hwww23/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/eunrcn/ip.git... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/eunrcn/ip.git to complete... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Hwww23/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Hwww23/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rickkoh/ip.git completed! -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [147/428] Analyzing https://github.com/rickkoh/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ziyang27/ip.git... -Jan 30, 2024 6:32:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ziyang27/ip.git to complete... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rickkoh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rickkoh/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yashma-sonara/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Hwww23/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yashma-sonara/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yashma-sonara/ip.git (master) completed! -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Hwww23/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Hwww23/ip.git (master) completed! -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yashma-sonara/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yashma-sonara/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yashma-sonara/ip.git (master) completed! +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rickkoh/ip.git completed! +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [148/428] Analyzing https://github.com/rickkoh/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ziyang27/ip.git... +Jan 30, 2024 1:31:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ziyang27/ip.git to complete... +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rickkoh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rickkoh/ip.git (master)... +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/rickkoh/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/rickkoh/ip.git (master)... -Jan 30, 2024 6:32:25 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/rickkoh/ip.git (master) completed! -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Zer0Legion/ip.git completed! -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [148/428] Analyzing https://github.com/Zer0Legion/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/maze508/ip.git completed! +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [149/428] Analyzing https://github.com/maze508/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nusliuyifan/ip.git... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nusliuyifan/ip.git to complete... -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Zer0Legion/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Zer0Legion/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Zer0Legion/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Zer0Legion/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Zer0Legion/ip.git (master) completed! -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/maze508/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/maze508/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/eunrcn/ip.git completed! +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [150/428] Analyzing https://github.com/eunrcn/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/miffi/ip.git... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/miffi/ip.git to complete... +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/eunrcn/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/eunrcn/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ziyang27/ip.git completed! +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [151/428] Analyzing https://github.com/ziyang27/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kwuunnn/ip.git... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kwuunnn/ip.git to complete... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "nusliuyifan/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/nusliuyifan/ip.git' 'repos/nusliuyifan_ip/ip_bare' on path . : Cloning into bare repository 'repos/nusliuyifan_ip/ip_bare'... @@ -2872,635 +2884,609 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/miffi/ip.git... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/miffi/ip.git to complete... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/maze508/ip.git completed! -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [149/428] Analyzing https://github.com/maze508/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kwuunnn/ip.git... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kwuunnn/ip.git to complete... -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/maze508/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/maze508/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/eunrcn/ip.git completed! -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [150/428] Analyzing https://github.com/eunrcn/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/KSSWSept20/ip.git... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KSSWSept20/ip.git to complete... -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/eunrcn/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/eunrcn/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ziyang27/ip.git completed! -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [151/428] Analyzing https://github.com/ziyang27/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zengzihui/ip.git... -Jan 30, 2024 6:32:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zengzihui/ip.git to complete... -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/maze508/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ziyang27/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ziyang27/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/maze508/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Zer0Legion/ip.git completed! +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [152/428] Analyzing https://github.com/Zer0Legion/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zengzihui/ip.git... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KSSWSept20/ip.git to complete... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zengzihui/ip.git to complete... +Jan 30, 2024 1:31:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/maze508/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/eunrcn/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/maze508/ip.git (master) completed! -Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Zer0Legion/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Zer0Legion/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/eunrcn/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/eunrcn/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/eunrcn/ip.git (master) completed! -Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ziyang27/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/eunrcn/ip.git (master) completed! +Jan 30, 2024 1:31:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ziyang27/ip.git (master)... -Jan 30, 2024 6:32:26 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ziyang27/ip.git (master) completed! -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Zer0Legion/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Zer0Legion/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Zer0Legion/ip.git (master) completed! +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/miffi/ip.git completed! -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [152/428] Analyzing https://github.com/miffi/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [153/428] Analyzing https://github.com/miffi/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sdevih/ip.git... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sdevih/ip.git to complete... -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/miffi/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/miffi/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/miffi/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/miffi/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/miffi/ip.git (master) completed! -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kwuunnn/ip.git completed! -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [153/428] Analyzing https://github.com/kwuunnn/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [154/428] Analyzing https://github.com/kwuunnn/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/DingBao-sys/ip.git... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/DingBao-sys/ip.git to complete... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kwuunnn/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kwuunnn/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/KSSWSept20/ip.git completed! -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [154/428] Analyzing https://github.com/KSSWSept20/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jerome-j/ip.git... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [155/428] Analyzing https://github.com/KSSWSept20/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jerome-j/ip.git to complete... -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kwuunnn/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kwuunnn/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KSSWSept20/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KSSWSept20/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zengzihui/ip.git completed! -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [155/428] Analyzing https://github.com/zengzihui/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [156/428] Analyzing https://github.com/zengzihui/ip.git (master)... +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kaya3842/ip.git... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kaya3842/ip.git to complete... -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/miffi/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zengzihui/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zengzihui/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/miffi/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/miffi/ip.git (master) completed! +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kwuunnn/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kwuunnn/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kwuunnn/ip.git (master) completed! -Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KSSWSept20/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KSSWSept20/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KSSWSept20/ip.git (master) completed! -Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zengzihui/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KSSWSept20/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zengzihui/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zengzihui/ip.git (master) completed! -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KSSWSept20/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KSSWSept20/ip.git (master) completed! +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sdevih/ip.git completed! -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [156/428] Analyzing https://github.com/sdevih/ip.git (master)... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [157/428] Analyzing https://github.com/sdevih/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/legionlegion/ip.git... -Jan 30, 2024 6:32:27 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/legionlegion/ip.git to complete... -Jan 30, 2024 6:32:27 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sdevih/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sdevih/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sdevih/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sdevih/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sdevih/ip.git (master) completed! -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/DingBao-sys/ip.git completed! -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [157/428] Analyzing https://github.com/DingBao-sys/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [158/428] Analyzing https://github.com/DingBao-sys/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chiaryan/ip.git... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chiaryan/ip.git to complete... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DingBao-sys/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DingBao-sys/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Jerome-j/ip.git completed! -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [158/428] Analyzing https://github.com/Jerome-j/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [159/428] Analyzing https://github.com/Jerome-j/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChrisHo1341/ip.git... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChrisHo1341/ip.git to complete... -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DingBao-sys/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DingBao-sys/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jerome-j/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jerome-j/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/DingBao-sys/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/DingBao-sys/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/DingBao-sys/ip.git (master) completed! +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Kaya3842/ip.git completed! -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [159/428] Analyzing https://github.com/Kaya3842/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [160/428] Analyzing https://github.com/Kaya3842/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/hjuntan/ip.git... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/hjuntan/ip.git to complete... -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kaya3842/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kaya3842/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/DingBao-sys/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kaya3842/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Jerome-j/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/DingBao-sys/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/DingBao-sys/ip.git (master) completed! -Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kaya3842/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kaya3842/ip.git (master) completed! -Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jerome-j/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jerome-j/ip.git (master) completed! -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kaya3842/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kaya3842/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kaya3842/ip.git (master) completed! +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/legionlegion/ip.git completed! -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [160/428] Analyzing https://github.com/legionlegion/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [161/428] Analyzing https://github.com/legionlegion/ip.git (master)... +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AwJoey/ip.git... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AwJoey/ip.git to complete... -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/legionlegion/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/legionlegion/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/legionlegion/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/legionlegion/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/legionlegion/ip.git (master) completed! -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChrisHo1341/ip.git completed! -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [161/428] Analyzing https://github.com/ChrisHo1341/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ZhiWei1010/ip.git... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ZhiWei1010/ip.git to complete... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chiaryan/ip.git completed! -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepos INFO: [162/428] Analyzing https://github.com/chiaryan/ip.git (master)... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ZhiWei1010/ip.git... +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ZhiWei1010/ip.git to complete... +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chiaryan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chiaryan/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chiaryan/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChrisHo1341/ip.git completed! +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [163/428] Analyzing https://github.com/ChrisHo1341/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ReflectiveObsidian/ip.git... -Jan 30, 2024 6:32:28 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ReflectiveObsidian/ip.git to complete... -Jan 30, 2024 6:32:28 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chiaryan/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chiaryan/ip.git (master) completed! +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChrisHo1341/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChrisHo1341/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chiaryan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chiaryan/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChrisHo1341/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChrisHo1341/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChrisHo1341/ip.git (master) completed! +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/hjuntan/ip.git completed! -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [163/428] Analyzing https://github.com/hjuntan/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [164/428] Analyzing https://github.com/hjuntan/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NusMinato/ip.git... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NusMinato/ip.git to complete... -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChrisHo1341/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hjuntan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hjuntan/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChrisHo1341/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChrisHo1341/ip.git (master) completed! -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chiaryan/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chiaryan/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chiaryan/ip.git (master) completed! -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/hjuntan/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/hjuntan/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/hjuntan/ip.git (master) completed! -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AwJoey/ip.git completed! -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [164/428] Analyzing https://github.com/AwJoey/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [165/428] Analyzing https://github.com/AwJoey/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/soons1/ip.git... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/soons1/ip.git to complete... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AwJoey/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AwJoey/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AwJoey/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AwJoey/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AwJoey/ip.git (master) completed! -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ZhiWei1010/ip.git completed! -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [165/428] Analyzing https://github.com/ZhiWei1010/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [166/428] Analyzing https://github.com/ZhiWei1010/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/evedaktyl/ip.git... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/evedaktyl/ip.git to complete... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ZhiWei1010/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ZhiWei1010/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ZhiWei1010/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ZhiWei1010/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ZhiWei1010/ip.git (master) completed! +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ReflectiveObsidian/ip.git completed! -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [166/428] Analyzing https://github.com/ReflectiveObsidian/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [167/428] Analyzing https://github.com/ReflectiveObsidian/ip.git (master)... +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xuwen-ho/ip.git... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NusMinato/ip.git completed! -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xuwen-ho/ip.git to complete... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chewbum/ip.git... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [167/428] Analyzing https://github.com/NusMinato/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chewbum/ip.git to complete... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ReflectiveObsidian/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ReflectiveObsidian/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NusMinato/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NusMinato/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ZhiWei1010/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ZhiWei1010/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ZhiWei1010/ip.git (master) completed! -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ReflectiveObsidian/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ReflectiveObsidian/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/NusMinato/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ReflectiveObsidian/ip.git (master) completed! -Jan 30, 2024 6:32:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/NusMinato/ip.git (master)... -Jan 30, 2024 6:32:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/NusMinato/ip.git (master) completed! -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/soons1/ip.git completed! -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos INFO: [168/428] Analyzing https://github.com/soons1/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tanjieling0/ip.git... -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanjieling0/ip.git to complete... -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chewbum/ip.git... +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chewbum/ip.git to complete... +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/soons1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/soons1/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/soons1/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/soons1/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/soons1/ip.git (master) completed! -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/evedaktyl/ip.git completed! -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos INFO: [169/428] Analyzing https://github.com/evedaktyl/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sun-ruiheng/ip.git... -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sun-ruiheng/ip.git to complete... -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tanjieling0/ip.git... +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanjieling0/ip.git to complete... +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/evedaktyl/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/evedaktyl/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NusMinato/ip.git completed! +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [170/428] Analyzing https://github.com/NusMinato/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sun-ruiheng/ip.git... +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sun-ruiheng/ip.git to complete... +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NusMinato/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NusMinato/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/evedaktyl/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/evedaktyl/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/evedaktyl/ip.git (master) completed! +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/xuwen-ho/ip.git completed! -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [170/428] Analyzing https://github.com/xuwen-ho/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [171/428] Analyzing https://github.com/xuwen-ho/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhikaiong2001/ip.git... -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhikaiong2001/ip.git to complete... -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chewbum/ip.git completed! -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bgopi23/ip.git... -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [171/428] Analyzing https://github.com/chewbum/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bgopi23/ip.git to complete... -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xuwen-ho/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xuwen-ho/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chewbum/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chewbum/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/evedaktyl/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/evedaktyl/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/evedaktyl/ip.git (master) completed! -Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/NusMinato/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/NusMinato/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/NusMinato/ip.git (master) completed! +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/xuwen-ho/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xuwen-ho/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xuwen-ho/ip.git (master) completed! -Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chewbum/ip.git completed! +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [172/428] Analyzing https://github.com/chewbum/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bgopi23/ip.git... +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bgopi23/ip.git to complete... +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chewbum/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chewbum/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chewbum/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chewbum/ip.git (master)... -Jan 30, 2024 6:32:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chewbum/ip.git (master) completed! -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanjieling0/ip.git completed! -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [172/428] Analyzing https://github.com/tanjieling0/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [173/428] Analyzing https://github.com/tanjieling0/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dhlee03/ip.git... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dhlee03/ip.git to complete... -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chewbum/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chewbum/ip.git (master) completed! +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanjieling0/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanjieling0/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanjieling0/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanjieling0/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanjieling0/ip.git (master) completed! -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sun-ruiheng/ip.git completed! -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [173/428] Analyzing https://github.com/sun-ruiheng/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanjieling0/ip.git (master) completed! +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [174/428] Analyzing https://github.com/sun-ruiheng/ip.git (master)... +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ReganChoy/ip.git... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ReganChoy/ip.git to complete... -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sun-ruiheng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sun-ruiheng/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bgopi23/ip.git completed! -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [174/428] Analyzing https://github.com/bgopi23/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LWS49/ip.git... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LWS49/ip.git to complete... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zhikaiong2001/ip.git completed! -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bgopi23/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bgopi23/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChillinRage/ip.git... -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos INFO: [175/428] Analyzing https://github.com/zhikaiong2001/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChillinRage/ip.git to complete... -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LWS49/ip.git... +Jan 30, 2024 1:31:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LWS49/ip.git to complete... +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhikaiong2001/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhikaiong2001/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sun-ruiheng/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bgopi23/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sun-ruiheng/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sun-ruiheng/ip.git (master) completed! -Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bgopi23/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bgopi23/ip.git (master) completed! -Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zhikaiong2001/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zhikaiong2001/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zhikaiong2001/ip.git (master) completed! -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bgopi23/ip.git completed! +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [176/428] Analyzing https://github.com/bgopi23/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChillinRage/ip.git... +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChillinRage/ip.git to complete... +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bgopi23/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bgopi23/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bgopi23/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bgopi23/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bgopi23/ip.git (master) completed! +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dhlee03/ip.git completed! -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [176/428] Analyzing https://github.com/dhlee03/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [177/428] Analyzing https://github.com/dhlee03/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Shauryan123/ip.git... -Jan 30, 2024 6:32:31 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Shauryan123/ip.git to complete... -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dhlee03/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dhlee03/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dhlee03/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dhlee03/ip.git (master)... -Jan 30, 2024 6:32:31 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dhlee03/ip.git (master) completed! -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ReganChoy/ip.git completed! -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [177/428] Analyzing https://github.com/ReganChoy/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [178/428] Analyzing https://github.com/ReganChoy/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Colex2000/ip.git... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Colex2000/ip.git to complete... -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ReganChoy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ReganChoy/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LWS49/ip.git completed! -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [178/428] Analyzing https://github.com/LWS49/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HusseinSafwan02/ip.git... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/HusseinSafwan02/ip.git to complete... -Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ReganChoy/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ReganChoy/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ReganChoy/ip.git (master) completed! -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LWS49/ip.git completed! +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [179/428] Analyzing https://github.com/LWS49/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HusseinSafwan02/ip.git... +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/HusseinSafwan02/ip.git to complete... +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LWS49/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LWS49/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LWS49/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LWS49/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LWS49/ip.git (master) completed! +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChillinRage/ip.git completed! -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [179/428] Analyzing https://github.com/ChillinRage/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [180/428] Analyzing https://github.com/ChillinRage/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ZHANGTIANYAO1/ip.git... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ZHANGTIANYAO1/ip.git to complete... -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChillinRage/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChillinRage/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LWS49/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LWS49/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LWS49/ip.git (master) completed! -Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChillinRage/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChillinRage/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChillinRage/ip.git (master) completed! -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Shauryan123/ip.git completed! -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [180/428] Analyzing https://github.com/Shauryan123/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [181/428] Analyzing https://github.com/Shauryan123/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Windofbitter/ip.git... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChillinRage/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Windofbitter/ip.git to complete... -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChillinRage/ip.git (master)... +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChillinRage/ip.git (master) completed! +Jan 30, 2024 1:31:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Shauryan123/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Shauryan123/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Shauryan123/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Shauryan123/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Shauryan123/ip.git (master) completed! -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Colex2000/ip.git completed! -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [181/428] Analyzing https://github.com/Colex2000/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [182/428] Analyzing https://github.com/Colex2000/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/quelinxiao/ip.git... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/quelinxiao/ip.git to complete... -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Colex2000/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Colex2000/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/HusseinSafwan02/ip.git completed! -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [182/428] Analyzing https://github.com/HusseinSafwan02/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [183/428] Analyzing https://github.com/HusseinSafwan02/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ararchch/ip.git... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ararchch/ip.git to complete... -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HusseinSafwan02/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HusseinSafwan02/ip.git (master)... -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ZHANGTIANYAO1/ip.git completed! -Jan 30, 2024 6:32:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KiatLun/ip.git... -Jan 30, 2024 6:32:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [183/428] Analyzing https://github.com/ZHANGTIANYAO1/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KiatLun/ip.git to complete... -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/HusseinSafwan02/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HusseinSafwan02/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HusseinSafwan02/ip.git (master) completed! -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Colex2000/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ZHANGTIANYAO1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ZHANGTIANYAO1/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Colex2000/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Colex2000/ip.git (master) completed! -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/HusseinSafwan02/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HusseinSafwan02/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HusseinSafwan02/ip.git (master) completed! +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "quelinxiao/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/quelinxiao/ip.git' 'repos/quelinxiao_ip/ip_bare' on path . : Cloning into bare repository 'repos/quelinxiao_ip/ip_bare'... @@ -3516,2141 +3502,2161 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KiatLun/ip.git... +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KiatLun/ip.git to complete... +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ZHANGTIANYAO1/ip.git completed! +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [184/428] Analyzing https://github.com/ZHANGTIANYAO1/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Bandov/ip.git... -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Bandov/ip.git to complete... -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ZHANGTIANYAO1/ip.git (master) completed! -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ZHANGTIANYAO1/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ZHANGTIANYAO1/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Windofbitter/ip.git completed! -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [184/428] Analyzing https://github.com/Windofbitter/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [185/428] Analyzing https://github.com/Windofbitter/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/peienlim/ip.git... -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/peienlim/ip.git to complete... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Windofbitter/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Windofbitter/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Windofbitter/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Windofbitter/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Windofbitter/ip.git (master) completed! -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ararchch/ip.git completed! -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [185/428] Analyzing https://github.com/ararchch/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [186/428] Analyzing https://github.com/ararchch/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zoebelle-pang/ip.git... -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zoebelle-pang/ip.git to complete... -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ararchch/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ararchch/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ZHANGTIANYAO1/ip.git (master) completed! +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ararchch/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/KiatLun/ip.git completed! -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [187/428] Analyzing https://github.com/KiatLun/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tayziyi/ip.git... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [186/428] Analyzing https://github.com/KiatLun/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tayziyi/ip.git to complete... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ararchch/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ararchch/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Windofbitter/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ararchch/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ararchch/ip.git (master) completed! +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KiatLun/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KiatLun/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Windofbitter/ip.git (master)... +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Windofbitter/ip.git (master) completed! +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KiatLun/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/KiatLun/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/KiatLun/ip.git (master) completed! -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ararchch/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ararchch/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ararchch/ip.git (master) completed! -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Bandov/ip.git completed! -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [187/428] Analyzing https://github.com/Bandov/ip.git (master)... -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [188/428] Analyzing https://github.com/Bandov/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/R-Laksh/ip.git... -Jan 30, 2024 6:32:33 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/R-Laksh/ip.git to complete... -Jan 30, 2024 6:32:33 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Bandov/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Bandov/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Bandov/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Bandov/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Bandov/ip.git (master) completed! -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/peienlim/ip.git completed! -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [188/428] Analyzing https://github.com/peienlim/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [189/428] Analyzing https://github.com/peienlim/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Cedricaca/ip.git... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Cedricaca/ip.git to complete... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/peienlim/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/peienlim/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/peienlim/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Bandov/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/peienlim/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/peienlim/ip.git (master) completed! -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Bandov/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Bandov/ip.git (master) completed! +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zoebelle-pang/ip.git completed! -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [189/428] Analyzing https://github.com/zoebelle-pang/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [190/428] Analyzing https://github.com/zoebelle-pang/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/matthewken19/ip.git... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/matthewken19/ip.git to complete... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tayziyi/ip.git completed! -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zoebelle-pang/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zoebelle-pang/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [190/428] Analyzing https://github.com/tayziyi/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/taufiq/ip.git... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/taufiq/ip.git to complete... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tayziyi/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tayziyi/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zoebelle-pang/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zoebelle-pang/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zoebelle-pang/ip.git (master) completed! -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tayziyi/ip.git completed! +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [191/428] Analyzing https://github.com/tayziyi/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/taufiq/ip.git... +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/taufiq/ip.git to complete... +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tayziyi/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tayziyi/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tayziyi/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tayziyi/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tayziyi/ip.git (master) completed! -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/R-Laksh/ip.git completed! -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [191/428] Analyzing https://github.com/R-Laksh/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [192/428] Analyzing https://github.com/R-Laksh/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gingerbreaf/ip.git... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gingerbreaf/ip.git to complete... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/R-Laksh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/R-Laksh/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/R-Laksh/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/R-Laksh/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/R-Laksh/ip.git (master) completed! -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Cedricaca/ip.git completed! -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [192/428] Analyzing https://github.com/Cedricaca/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [193/428] Analyzing https://github.com/Cedricaca/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Zack-Tay/ip.git... -Jan 30, 2024 6:32:34 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/R-Laksh/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/R-Laksh/ip.git (master) completed! +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Zack-Tay/ip.git to complete... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cedricaca/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cedricaca/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cedricaca/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Cedricaca/ip.git (master)... -Jan 30, 2024 6:32:34 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Cedricaca/ip.git (master) completed! -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/matthewken19/ip.git completed! -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [193/428] Analyzing https://github.com/matthewken19/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [194/428] Analyzing https://github.com/matthewken19/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/darryl-chan/ip.git... -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/darryl-chan/ip.git to complete... -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/matthewken19/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/matthewken19/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/matthewken19/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/matthewken19/ip.git (master)... +Jan 30, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/matthewken19/ip.git (master) completed! +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/taufiq/ip.git completed! -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [194/428] Analyzing https://github.com/taufiq/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [195/428] Analyzing https://github.com/taufiq/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JustWeiHao/ip.git... -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JustWeiHao/ip.git to complete... -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/matthewken19/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/matthewken19/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/taufiq/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/taufiq/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/taufiq/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/matthewken19/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/taufiq/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/taufiq/ip.git (master) completed! -Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/matthewken19/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/matthewken19/ip.git (master) completed! -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gingerbreaf/ip.git completed! -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [195/428] Analyzing https://github.com/gingerbreaf/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/brennalaurentan/ip.git... -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/brennalaurentan/ip.git to complete... -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gingerbreaf/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gingerbreaf/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gingerbreaf/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gingerbreaf/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gingerbreaf/ip.git (master) completed! -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Zack-Tay/ip.git completed! -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [196/428] Analyzing https://github.com/Zack-Tay/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/0-yibai/ip.git... -Jan 30, 2024 6:32:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/0-yibai/ip.git to complete... -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/brennalaurentan/ip.git... +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/brennalaurentan/ip.git to complete... +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Zack-Tay/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Zack-Tay/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gingerbreaf/ip.git completed! +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [197/428] Analyzing https://github.com/gingerbreaf/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/0-yibai/ip.git... +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/0-yibai/ip.git to complete... +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gingerbreaf/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gingerbreaf/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Zack-Tay/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Zack-Tay/ip.git (master)... -Jan 30, 2024 6:32:35 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Zack-Tay/ip.git (master) completed! -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gingerbreaf/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gingerbreaf/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gingerbreaf/ip.git (master) completed! +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/darryl-chan/ip.git completed! -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [197/428] Analyzing https://github.com/darryl-chan/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [198/428] Analyzing https://github.com/darryl-chan/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Apzure/ip.git... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Apzure/ip.git to complete... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JustWeiHao/ip.git completed! -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [198/428] Analyzing https://github.com/JustWeiHao/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jxunze/ip.git... -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/darryl-chan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/darryl-chan/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/darryl-chan/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/darryl-chan/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/darryl-chan/ip.git (master) completed! +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/0-yibai/ip.git completed! +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [199/428] Analyzing https://github.com/0-yibai/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jxunze/ip.git... +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jxunze/ip.git to complete... -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JustWeiHao/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JustWeiHao/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/brennalaurentan/ip.git completed! -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [199/428] Analyzing https://github.com/brennalaurentan/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [200/428] Analyzing https://github.com/brennalaurentan/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alphajae11/ip.git... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/0-yibai/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/0-yibai/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alphajae11/ip.git to complete... -Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/darryl-chan/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JustWeiHao/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/brennalaurentan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/brennalaurentan/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/darryl-chan/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/darryl-chan/ip.git (master) completed! -Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JustWeiHao/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JustWeiHao/ip.git (master) completed! -Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/brennalaurentan/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/brennalaurentan/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/brennalaurentan/ip.git (master) completed! -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/0-yibai/ip.git completed! -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [200/428] Analyzing https://github.com/0-yibai/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JustWeiHao/ip.git completed! +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [201/428] Analyzing https://github.com/JustWeiHao/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yespiggy/ip.git... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yespiggy/ip.git to complete... -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/0-yibai/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/0-yibai/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/brennalaurentan/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JustWeiHao/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JustWeiHao/ip.git (master)... +Jan 30, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/0-yibai/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/0-yibai/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/0-yibai/ip.git (master) completed! -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/brennalaurentan/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Apzure/ip.git completed! -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [201/428] Analyzing https://github.com/Apzure/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/brennalaurentan/ip.git (master) completed! +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/raysonchia/ip.git... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [202/428] Analyzing https://github.com/Apzure/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/raysonchia/ip.git to complete... -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/0-yibai/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/0-yibai/ip.git (master) completed! +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Apzure/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Apzure/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JustWeiHao/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JustWeiHao/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JustWeiHao/ip.git (master) completed! +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Apzure/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Apzure/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Apzure/ip.git (master) completed! +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/alphajae11/ip.git completed! -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [202/428] Analyzing https://github.com/alphajae11/ip.git (master)... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [203/428] Analyzing https://github.com/alphajae11/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bachletuankhai/ip.git... -Jan 30, 2024 6:32:36 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bachletuankhai/ip.git to complete... -Jan 30, 2024 6:32:36 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jxunze/ip.git completed! +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [204/428] Analyzing https://github.com/jxunze/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/joelgoh1/ip.git... +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alphajae11/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alphajae11/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Apzure/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Apzure/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Apzure/ip.git (master) completed! -Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/alphajae11/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/alphajae11/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/alphajae11/ip.git (master) completed! -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yespiggy/ip.git completed! -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [203/428] Analyzing https://github.com/yespiggy/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/joelgoh1/ip.git... -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/joelgoh1/ip.git to complete... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jxunze/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jxunze/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yespiggy/ip.git completed! +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [205/428] Analyzing https://github.com/yespiggy/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/YuZizhen/ip.git... +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/alphajae11/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/YuZizhen/ip.git to complete... +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yespiggy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yespiggy/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yespiggy/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yespiggy/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yespiggy/ip.git (master) completed! -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/alphajae11/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/alphajae11/ip.git (master) completed! +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/raysonchia/ip.git completed! -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [204/428] Analyzing https://github.com/raysonchia/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/YuZizhen/ip.git... -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/YuZizhen/ip.git to complete... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [206/428] Analyzing https://github.com/raysonchia/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SherwynNg/ip.git... +Jan 30, 2024 1:31:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SherwynNg/ip.git to complete... +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/raysonchia/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/raysonchia/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yespiggy/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yespiggy/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yespiggy/ip.git (master) completed! +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/raysonchia/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jxunze/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/raysonchia/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/raysonchia/ip.git (master) completed! -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jxunze/ip.git (master)... +Jan 30, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jxunze/ip.git (master) completed! +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/bachletuankhai/ip.git completed! -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [205/428] Analyzing https://github.com/bachletuankhai/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SherwynNg/ip.git... -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SherwynNg/ip.git to complete... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bachletuankhai/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bachletuankhai/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bachletuankhai/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jxunze/ip.git completed! -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [207/428] Analyzing https://github.com/bachletuankhai/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kab-dot/ip.git... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [206/428] Analyzing https://github.com/jxunze/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bachletuankhai/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kab-dot/ip.git to complete... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bachletuankhai/ip.git (master) completed! -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bachletuankhai/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bachletuankhai/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/joelgoh1/ip.git completed! -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [207/428] Analyzing https://github.com/joelgoh1/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/belligerentbeagle/ip.git... -Jan 30, 2024 6:32:37 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [208/428] Analyzing https://github.com/joelgoh1/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/belligerentbeagle/ip.git to complete... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jxunze/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jxunze/ip.git (master)... -Jan 30, 2024 6:32:37 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/joelgoh1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/joelgoh1/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/joelgoh1/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/joelgoh1/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/joelgoh1/ip.git (master) completed! -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jxunze/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jxunze/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jxunze/ip.git (master) completed! -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/YuZizhen/ip.git completed! -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [208/428] Analyzing https://github.com/YuZizhen/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [209/428] Analyzing https://github.com/YuZizhen/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ongzhili/ip.git... -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ongzhili/ip.git to complete... -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/joelgoh1/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/YuZizhen/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/YuZizhen/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/joelgoh1/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/joelgoh1/ip.git (master) completed! +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/YuZizhen/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/YuZizhen/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/YuZizhen/ip.git (master) completed! -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bachletuankhai/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bachletuankhai/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bachletuankhai/ip.git (master) completed! +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SherwynNg/ip.git completed! -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [209/428] Analyzing https://github.com/SherwynNg/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [210/428] Analyzing https://github.com/SherwynNg/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Dethada/ip.git... -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Dethada/ip.git to complete... -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SherwynNg/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SherwynNg/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SherwynNg/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SherwynNg/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SherwynNg/ip.git (master) completed! -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kab-dot/ip.git completed! -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [210/428] Analyzing https://github.com/kab-dot/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [211/428] Analyzing https://github.com/kab-dot/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yuhinarita/ip.git... -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yuhinarita/ip.git to complete... -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kab-dot/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kab-dot/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/belligerentbeagle/ip.git completed! -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [211/428] Analyzing https://github.com/belligerentbeagle/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [212/428] Analyzing https://github.com/belligerentbeagle/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vnnamng/ip.git... -Jan 30, 2024 6:32:38 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vnnamng/ip.git to complete... -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/belligerentbeagle/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/belligerentbeagle/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kab-dot/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kab-dot/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kab-dot/ip.git (master) completed! -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/belligerentbeagle/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/belligerentbeagle/ip.git (master)... -Jan 30, 2024 6:32:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/belligerentbeagle/ip.git (master) completed! -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/belligerentbeagle/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/belligerentbeagle/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ongzhili/ip.git completed! -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [212/428] Analyzing https://github.com/ongzhili/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/DominicFuMJ/ip.git... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [213/428] Analyzing https://github.com/ongzhili/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/DominicFuMJ/ip.git to complete... -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/belligerentbeagle/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/belligerentbeagle/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/belligerentbeagle/ip.git (master) completed! +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ongzhili/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ongzhili/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ongzhili/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ongzhili/ip.git (master)... +Jan 30, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ongzhili/ip.git (master) completed! +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Dethada/ip.git completed! -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [213/428] Analyzing https://github.com/Dethada/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [214/428] Analyzing https://github.com/Dethada/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Anant1902/ip.git... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Anant1902/ip.git to complete... -Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ongzhili/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Dethada/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Dethada/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ongzhili/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ongzhili/ip.git (master) completed! -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yuhinarita/ip.git completed! -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [214/428] Analyzing https://github.com/yuhinarita/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [215/428] Analyzing https://github.com/yuhinarita/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/redcolorbicycle/ip.git... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/redcolorbicycle/ip.git to complete... -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yuhinarita/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yuhinarita/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/vnnamng/ip.git completed! -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [215/428] Analyzing https://github.com/vnnamng/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [216/428] Analyzing https://github.com/vnnamng/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yorklim/ip.git... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yorklim/ip.git to complete... -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/vnnamng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/vnnamng/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Dethada/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Dethada/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Dethada/ip.git (master) completed! -Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yuhinarita/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yorklim/ip.git to complete... +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yuhinarita/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yuhinarita/ip.git (master) completed! -Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vnnamng/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vnnamng/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vnnamng/ip.git (master) completed! -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/vnnamng/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/vnnamng/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/DominicFuMJ/ip.git completed! -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [216/428] Analyzing https://github.com/DominicFuMJ/ip.git (master)... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [217/428] Analyzing https://github.com/DominicFuMJ/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Wongqingyee/ip.git... -Jan 30, 2024 6:32:39 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Wongqingyee/ip.git to complete... -Jan 30, 2024 6:32:39 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/DominicFuMJ/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/DominicFuMJ/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Dethada/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Dethada/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Dethada/ip.git (master) completed! +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DominicFuMJ/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DominicFuMJ/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DominicFuMJ/ip.git (master) completed! -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vnnamng/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vnnamng/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vnnamng/ip.git (master) completed! +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Anant1902/ip.git completed! -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [217/428] Analyzing https://github.com/Anant1902/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [218/428] Analyzing https://github.com/Anant1902/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/YowSiaoKang/ip.git... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/YowSiaoKang/ip.git to complete... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Anant1902/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Anant1902/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Anant1902/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Anant1902/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Anant1902/ip.git (master) completed! -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/redcolorbicycle/ip.git completed! -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [218/428] Analyzing https://github.com/redcolorbicycle/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [219/428] Analyzing https://github.com/redcolorbicycle/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LargeCrowd/ip.git... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LargeCrowd/ip.git to complete... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Anant1902/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Anant1902/ip.git (master) completed! +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/redcolorbicycle/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/redcolorbicycle/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yorklim/ip.git completed! -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [219/428] Analyzing https://github.com/yorklim/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/irwynliong/ip.git... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [220/428] Analyzing https://github.com/yorklim/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/irwynliong/ip.git to complete... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yorklim/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yorklim/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/redcolorbicycle/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/redcolorbicycle/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/redcolorbicycle/ip.git (master) completed! -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yorklim/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yorklim/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yorklim/ip.git (master) completed! -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Wongqingyee/ip.git completed! -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [220/428] Analyzing https://github.com/Wongqingyee/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/redcolorbicycle/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [221/428] Analyzing https://github.com/Wongqingyee/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jannaleong/ip.git... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jannaleong/ip.git to complete... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/redcolorbicycle/ip.git (master)... +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/redcolorbicycle/ip.git (master) completed! +Jan 30, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Wongqingyee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Wongqingyee/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Wongqingyee/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yorklim/ip.git (master)... +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Wongqingyee/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Wongqingyee/ip.git (master) completed! -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yorklim/ip.git (master)... +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yorklim/ip.git (master) completed! +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/YowSiaoKang/ip.git completed! -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [221/428] Analyzing https://github.com/YowSiaoKang/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [222/428] Analyzing https://github.com/YowSiaoKang/ip.git (master)... +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kaiyi27/ip.git... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kaiyi27/ip.git to complete... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/YowSiaoKang/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/YowSiaoKang/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/YowSiaoKang/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/YowSiaoKang/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/YowSiaoKang/ip.git (master) completed! -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LargeCrowd/ip.git completed! -Jan 30, 2024 6:32:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [222/428] Analyzing https://github.com/LargeCrowd/ip.git (master)... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [223/428] Analyzing https://github.com/LargeCrowd/ip.git (master)... +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aureliony/ip.git... -Jan 30, 2024 6:32:40 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aureliony/ip.git to complete... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LargeCrowd/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LargeCrowd/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LargeCrowd/ip.git (master)... +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LargeCrowd/ip.git (master)... +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LargeCrowd/ip.git (master) completed! +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/irwynliong/ip.git completed! -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [223/428] Analyzing https://github.com/irwynliong/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [224/428] Analyzing https://github.com/irwynliong/ip.git (master)... +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/azumieflare/ip.git... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/azumieflare/ip.git to complete... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/irwynliong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/irwynliong/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LargeCrowd/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LargeCrowd/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LargeCrowd/ip.git (master) completed! -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/irwynliong/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/irwynliong/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/irwynliong/ip.git (master) completed! -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jannaleong/ip.git completed! -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [224/428] Analyzing https://github.com/jannaleong/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [225/428] Analyzing https://github.com/jannaleong/ip.git (master)... +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/qinboan/ip.git... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/qinboan/ip.git to complete... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jannaleong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jannaleong/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/irwynliong/ip.git (master)... +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/irwynliong/ip.git (master)... +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/irwynliong/ip.git (master) completed! +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jannaleong/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kaiyi27/ip.git completed! -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jannaleong/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [225/428] Analyzing https://github.com/kaiyi27/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tengcharmaine/ip.git... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tengcharmaine/ip.git to complete... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jannaleong/ip.git (master) completed! -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kaiyi27/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kaiyi27/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/aureliony/ip.git completed! -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos INFO: [226/428] Analyzing https://github.com/aureliony/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/moguries/ip.git... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/moguries/ip.git to complete... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tengcharmaine/ip.git... +Jan 30, 2024 1:31:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tengcharmaine/ip.git to complete... +Jan 30, 2024 1:31:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aureliony/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aureliony/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/azumieflare/ip.git completed! -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kaiyi27/ip.git completed! +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/moguries/ip.git... +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos INFO: [227/428] Analyzing https://github.com/azumieflare/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Joshy837/ip.git... -Jan 30, 2024 6:32:41 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [228/428] Analyzing https://github.com/kaiyi27/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/moguries/ip.git to complete... +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Joshy837/ip.git to complete... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aureliony/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aureliony/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/azumieflare/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/azumieflare/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kaiyi27/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kaiyi27/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kaiyi27/ip.git (master) completed! -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/azumieflare/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/azumieflare/ip.git (master)... -Jan 30, 2024 6:32:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/azumieflare/ip.git (master) completed! -Jan 30, 2024 6:32:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/aureliony/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aureliony/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aureliony/ip.git (master) completed! -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kaiyi27/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kaiyi27/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/qinboan/ip.git completed! -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [228/428] Analyzing https://github.com/qinboan/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [229/428] Analyzing https://github.com/qinboan/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chengjunyuan/ip.git... -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chengjunyuan/ip.git to complete... -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/qinboan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/qinboan/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/aureliony/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aureliony/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aureliony/ip.git (master) completed! +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/azumieflare/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/azumieflare/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/azumieflare/ip.git (master) completed! +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/qinboan/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/qinboan/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/qinboan/ip.git (master) completed! -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kaiyi27/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kaiyi27/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kaiyi27/ip.git (master) completed! +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tengcharmaine/ip.git completed! -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [229/428] Analyzing https://github.com/tengcharmaine/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [230/428] Analyzing https://github.com/tengcharmaine/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChrysanthemumT/ip.git... -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChrysanthemumT/ip.git to complete... -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tengcharmaine/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tengcharmaine/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tengcharmaine/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tengcharmaine/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tengcharmaine/ip.git (master) completed! -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/moguries/ip.git completed! +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Joshy837/ip.git completed! -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [230/428] Analyzing https://github.com/Joshy837/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [231/428] Analyzing https://github.com/moguries/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/camille-readbean/ip.git... -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/camille-readbean/ip.git to complete... -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/moguries/ip.git completed! -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [231/428] Analyzing https://github.com/moguries/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [232/428] Analyzing https://github.com/Joshy837/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dabzpengu/ip.git... -Jan 30, 2024 6:32:42 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dabzpengu/ip.git to complete... -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Joshy837/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Joshy837/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/moguries/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/moguries/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Joshy837/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Joshy837/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Joshy837/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/moguries/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Joshy837/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Joshy837/ip.git (master) completed! -Jan 30, 2024 6:32:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/moguries/ip.git (master)... -Jan 30, 2024 6:32:42 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/moguries/ip.git (master) completed! -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chengjunyuan/ip.git completed! -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [232/428] Analyzing https://github.com/chengjunyuan/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [233/428] Analyzing https://github.com/chengjunyuan/ip.git (master)... +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cleowenxuan/ip.git... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cleowenxuan/ip.git to complete... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chengjunyuan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chengjunyuan/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chengjunyuan/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chengjunyuan/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chengjunyuan/ip.git (master) completed! -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChrysanthemumT/ip.git completed! -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [233/428] Analyzing https://github.com/ChrysanthemumT/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [234/428] Analyzing https://github.com/ChrysanthemumT/ip.git (master)... +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ziiqii/ip.git... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ziiqii/ip.git to complete... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChrysanthemumT/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChrysanthemumT/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChrysanthemumT/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChrysanthemumT/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChrysanthemumT/ip.git (master) completed! -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/camille-readbean/ip.git completed! -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [234/428] Analyzing https://github.com/camille-readbean/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rertyy/ip.git... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rertyy/ip.git to complete... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dabzpengu/ip.git completed! -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos INFO: [235/428] Analyzing https://github.com/dabzpengu/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xiaorui-ui/ip.git... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xiaorui-ui/ip.git to complete... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/camille-readbean/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/camille-readbean/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rertyy/ip.git... +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rertyy/ip.git to complete... +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dabzpengu/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dabzpengu/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dabzpengu/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dabzpengu/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dabzpengu/ip.git (master) completed! -Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/camille-readbean/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/camille-readbean/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/camille-readbean/ip.git (master) completed! -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/cleowenxuan/ip.git completed! -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos INFO: [236/428] Analyzing https://github.com/cleowenxuan/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TarinPairor/ip.git... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TarinPairor/ip.git to complete... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xiaorui-ui/ip.git... +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xiaorui-ui/ip.git to complete... +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/camille-readbean/ip.git completed! +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [237/428] Analyzing https://github.com/camille-readbean/ip.git (master)... +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TarinPairor/ip.git... +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TarinPairor/ip.git to complete... +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cleowenxuan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cleowenxuan/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/camille-readbean/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/camille-readbean/ip.git (master)... +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cleowenxuan/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cleowenxuan/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cleowenxuan/ip.git (master) completed! -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/camille-readbean/ip.git (master)... +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/camille-readbean/ip.git (master)... +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/camille-readbean/ip.git (master) completed! +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ziiqii/ip.git completed! -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [237/428] Analyzing https://github.com/ziiqii/ip.git (master)... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [238/428] Analyzing https://github.com/ziiqii/ip.git (master)... +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/amanzainal/ip.git... -Jan 30, 2024 6:32:43 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/amanzainal/ip.git to complete... -Jan 30, 2024 6:32:43 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ziiqii/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ziiqii/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ziiqii/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ziiqii/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ziiqii/ip.git (master) completed! -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/rertyy/ip.git completed! -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [238/428] Analyzing https://github.com/rertyy/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [239/428] Analyzing https://github.com/rertyy/ip.git (master)... +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/minwaiphyo/ip.git... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/minwaiphyo/ip.git to complete... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xiaorui-ui/ip.git completed! -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rertyy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rertyy/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [239/428] Analyzing https://github.com/xiaorui-ui/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Javiery3889/ip.git... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Javiery3889/ip.git to complete... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xiaorui-ui/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xiaorui-ui/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xiaorui-ui/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/rertyy/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xiaorui-ui/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/rertyy/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xiaorui-ui/ip.git (master) completed! -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/rertyy/ip.git (master) completed! -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TarinPairor/ip.git completed! -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos INFO: [240/428] Analyzing https://github.com/TarinPairor/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Javiery3889/ip.git... +Jan 30, 2024 1:31:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Javiery3889/ip.git to complete... +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xiaorui-ui/ip.git completed! +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jimseah-0116/ip.git... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [241/428] Analyzing https://github.com/xiaorui-ui/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jimseah-0116/ip.git to complete... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TarinPairor/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TarinPairor/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xiaorui-ui/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xiaorui-ui/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TarinPairor/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TarinPairor/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xiaorui-ui/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TarinPairor/ip.git (master) completed! -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xiaorui-ui/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xiaorui-ui/ip.git (master) completed! +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/amanzainal/ip.git completed! -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [241/428] Analyzing https://github.com/amanzainal/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [242/428] Analyzing https://github.com/amanzainal/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/VatsalVitosh/ip.git... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/VatsalVitosh/ip.git to complete... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/amanzainal/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/amanzainal/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/amanzainal/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/amanzainal/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/amanzainal/ip.git (master) completed! -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/minwaiphyo/ip.git completed! -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [242/428] Analyzing https://github.com/minwaiphyo/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [243/428] Analyzing https://github.com/minwaiphyo/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/narwhalsilent/ip.git... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/narwhalsilent/ip.git to complete... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/minwaiphyo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/minwaiphyo/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Javiery3889/ip.git completed! -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [243/428] Analyzing https://github.com/Javiery3889/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChuaZiLong/ip.git... -Jan 30, 2024 6:32:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChuaZiLong/ip.git to complete... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/minwaiphyo/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Javiery3889/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Javiery3889/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/minwaiphyo/ip.git (master)... -Jan 30, 2024 6:32:44 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/minwaiphyo/ip.git (master) completed! -Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Javiery3889/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Javiery3889/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Javiery3889/ip.git (master) completed! -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Javiery3889/ip.git completed! +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [244/428] Analyzing https://github.com/Javiery3889/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChuaZiLong/ip.git... +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChuaZiLong/ip.git to complete... +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jimseah-0116/ip.git completed! -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [244/428] Analyzing https://github.com/jimseah-0116/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [245/428] Analyzing https://github.com/jimseah-0116/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Lin-Shuang-Shuang/ip.git... -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Lin-Shuang-Shuang/ip.git to complete... -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Javiery3889/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Javiery3889/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jimseah-0116/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jimseah-0116/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jimseah-0116/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jimseah-0116/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jimseah-0116/ip.git (master) completed! -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Javiery3889/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Javiery3889/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Javiery3889/ip.git (master) completed! +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/VatsalVitosh/ip.git completed! -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [245/428] Analyzing https://github.com/VatsalVitosh/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [246/428] Analyzing https://github.com/VatsalVitosh/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/whelan-low/ip.git... -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/whelan-low/ip.git to complete... -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/VatsalVitosh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/VatsalVitosh/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/VatsalVitosh/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/VatsalVitosh/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/VatsalVitosh/ip.git (master) completed! -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/narwhalsilent/ip.git completed! -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [246/428] Analyzing https://github.com/narwhalsilent/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [247/428] Analyzing https://github.com/narwhalsilent/ip.git (master)... +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ThitipatC/ip.git... -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ThitipatC/ip.git to complete... -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/narwhalsilent/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/narwhalsilent/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/narwhalsilent/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/narwhalsilent/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/narwhalsilent/ip.git (master) completed! +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChuaZiLong/ip.git completed! -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [247/428] Analyzing https://github.com/ChuaZiLong/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [248/428] Analyzing https://github.com/ChuaZiLong/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/YuvBindal/ip.git... -Jan 30, 2024 6:32:45 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/YuvBindal/ip.git to complete... -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChuaZiLong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChuaZiLong/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/narwhalsilent/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/narwhalsilent/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/narwhalsilent/ip.git (master) completed! -Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChuaZiLong/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChuaZiLong/ip.git (master)... -Jan 30, 2024 6:32:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChuaZiLong/ip.git (master) completed! -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Lin-Shuang-Shuang/ip.git completed! -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [248/428] Analyzing https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [249/428] Analyzing https://github.com/Lin-Shuang-Shuang/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/doyelee0313/ip.git... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/doyelee0313/ip.git to complete... -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Lin-Shuang-Shuang/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Lin-Shuang-Shuang/ip.git (master) completed! -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChuaZiLong/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChuaZiLong/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChuaZiLong/ip.git (master) completed! +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/whelan-low/ip.git completed! -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [249/428] Analyzing https://github.com/whelan-low/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [250/428] Analyzing https://github.com/whelan-low/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/taniatsq/ip.git... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/taniatsq/ip.git to complete... -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Lin-Shuang-Shuang/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/whelan-low/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/whelan-low/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Lin-Shuang-Shuang/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Lin-Shuang-Shuang/ip.git (master) completed! +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/whelan-low/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/whelan-low/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/whelan-low/ip.git (master) completed! -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ThitipatC/ip.git completed! -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [250/428] Analyzing https://github.com/ThitipatC/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [251/428] Analyzing https://github.com/ThitipatC/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Rikko1204/ip.git... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Rikko1204/ip.git to complete... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/YuvBindal/ip.git completed! -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [251/428] Analyzing https://github.com/YuvBindal/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Yskie/ip.git... -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ThitipatC/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ThitipatC/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Yskie/ip.git to complete... -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/YuvBindal/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/YuvBindal/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ThitipatC/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/YuvBindal/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ThitipatC/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ThitipatC/ip.git (master) completed! -Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/YuvBindal/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/YuvBindal/ip.git (master) completed! -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/doyelee0313/ip.git completed! -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos INFO: [252/428] Analyzing https://github.com/doyelee0313/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Yskie/ip.git... +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/YuvBindal/ip.git completed! +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Yskie/ip.git to complete... +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [253/428] Analyzing https://github.com/YuvBindal/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Fidget-Spinner/ip.git... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Fidget-Spinner/ip.git to complete... -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/doyelee0313/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/doyelee0313/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/YuvBindal/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/YuvBindal/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/doyelee0313/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/YuvBindal/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/doyelee0313/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/doyelee0313/ip.git (master) completed! -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/YuvBindal/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/YuvBindal/ip.git (master) completed! +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/taniatsq/ip.git completed! -Jan 30, 2024 6:32:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [253/428] Analyzing https://github.com/taniatsq/ip.git (master)... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [254/428] Analyzing https://github.com/taniatsq/ip.git (master)... +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/FangRuoqing/ip.git... -Jan 30, 2024 6:32:46 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/FangRuoqing/ip.git to complete... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/taniatsq/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/taniatsq/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/taniatsq/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/taniatsq/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/taniatsq/ip.git (master) completed! -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Rikko1204/ip.git completed! -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [254/428] Analyzing https://github.com/Rikko1204/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [255/428] Analyzing https://github.com/Rikko1204/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhuuyicheng/ip.git... -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhuuyicheng/ip.git to complete... -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Yskie/ip.git completed! -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/taniatsq/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/taniatsq/ip.git (master) completed! +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Rikko1204/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Rikko1204/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [255/428] Analyzing https://github.com/Yskie/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/smolegz/ip.git... -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/smolegz/ip.git to complete... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Yskie/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Yskie/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Rikko1204/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Rikko1204/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Rikko1204/ip.git (master) completed! -Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Yskie/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Yskie/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Yskie/ip.git (master) completed! -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Fidget-Spinner/ip.git completed! -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos INFO: [256/428] Analyzing https://github.com/Fidget-Spinner/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jinhanfromNUS/ip.git... -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jinhanfromNUS/ip.git to complete... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/smolegz/ip.git... +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/smolegz/ip.git to complete... +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Fidget-Spinner/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Fidget-Spinner/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Fidget-Spinner/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Yskie/ip.git completed! +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [257/428] Analyzing https://github.com/Yskie/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jinhanfromNUS/ip.git... +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jinhanfromNUS/ip.git to complete... +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Yskie/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Yskie/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/FangRuoqing/ip.git completed! -Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Fidget-Spinner/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [257/428] Analyzing https://github.com/FangRuoqing/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/0nesheep/ip.git... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Fidget-Spinner/ip.git (master) completed! -Jan 30, 2024 6:32:47 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [258/428] Analyzing https://github.com/FangRuoqing/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/0nesheep/ip.git to complete... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/FangRuoqing/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/FangRuoqing/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Fidget-Spinner/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/FangRuoqing/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Fidget-Spinner/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/FangRuoqing/ip.git (master)... -Jan 30, 2024 6:32:47 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Fidget-Spinner/ip.git (master) completed! +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/FangRuoqing/ip.git (master) completed! -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Yskie/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Yskie/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Yskie/ip.git (master) completed! +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zhuuyicheng/ip.git completed! -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [258/428] Analyzing https://github.com/zhuuyicheng/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [259/428] Analyzing https://github.com/zhuuyicheng/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AdityaB4/ip.git... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AdityaB4/ip.git to complete... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhuuyicheng/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhuuyicheng/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhuuyicheng/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhuuyicheng/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhuuyicheng/ip.git (master) completed! +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/smolegz/ip.git completed! -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [260/428] Analyzing https://github.com/smolegz/ip.git (master)... +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/HM33-Stu/ip.git... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [259/428] Analyzing https://github.com/smolegz/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HM33-Stu/ip.git to complete... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhuuyicheng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhuuyicheng/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/smolegz/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/smolegz/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhuuyicheng/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/smolegz/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhuuyicheng/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhuuyicheng/ip.git (master) completed! -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/smolegz/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/smolegz/ip.git (master) completed! -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jinhanfromNUS/ip.git completed! -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [260/428] Analyzing https://github.com/jinhanfromNUS/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [261/428] Analyzing https://github.com/jinhanfromNUS/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yap-zong-xin/ip.git... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yap-zong-xin/ip.git to complete... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jinhanfromNUS/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jinhanfromNUS/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jinhanfromNUS/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jinhanfromNUS/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jinhanfromNUS/ip.git (master) completed! -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/0nesheep/ip.git completed! -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [261/428] Analyzing https://github.com/0nesheep/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [262/428] Analyzing https://github.com/0nesheep/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jocelyn-soh/ip.git... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jocelyn-soh/ip.git to complete... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/0nesheep/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/0nesheep/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jinhanfromNUS/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jinhanfromNUS/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jinhanfromNUS/ip.git (master) completed! +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/0nesheep/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/0nesheep/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/0nesheep/ip.git (master) completed! -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AdityaB4/ip.git completed! -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HM33-Stu/ip.git completed! -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [262/428] Analyzing https://github.com/AdityaB4/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [263/428] Analyzing https://github.com/HM33-Stu/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [263/428] Analyzing https://github.com/AdityaB4/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/felixchanyy/ip.git... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/felixchanyy/ip.git to complete... +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AdityaB4/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AdityaB4/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AdityaB4/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AdityaB4/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AdityaB4/ip.git (master) completed! +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HM33-Stu/ip.git completed! +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [264/428] Analyzing https://github.com/HM33-Stu/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/donwong2308/ip.git... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/donwong2308/ip.git to complete... -Jan 30, 2024 6:32:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/felixchanyy/ip.git to complete... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HM33-Stu/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HM33-Stu/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AdityaB4/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AdityaB4/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HM33-Stu/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/HM33-Stu/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/HM33-Stu/ip.git (master) completed! -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AdityaB4/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AdityaB4/ip.git (master)... -Jan 30, 2024 6:32:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AdityaB4/ip.git (master) completed! -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yap-zong-xin/ip.git completed! -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [264/428] Analyzing https://github.com/yap-zong-xin/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [265/428] Analyzing https://github.com/yap-zong-xin/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/minreiseah/ip.git... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/minreiseah/ip.git to complete... -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yap-zong-xin/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yap-zong-xin/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yap-zong-xin/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yap-zong-xin/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yap-zong-xin/ip.git (master) completed! -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jocelyn-soh/ip.git completed! -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [265/428] Analyzing https://github.com/jocelyn-soh/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [266/428] Analyzing https://github.com/jocelyn-soh/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Pluiexo/ip.git... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Pluiexo/ip.git to complete... -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yap-zong-xin/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yap-zong-xin/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jocelyn-soh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jocelyn-soh/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yap-zong-xin/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yap-zong-xin/ip.git (master)... +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yap-zong-xin/ip.git (master) completed! +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jocelyn-soh/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jocelyn-soh/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jocelyn-soh/ip.git (master) completed! -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/donwong2308/ip.git completed! -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [266/428] Analyzing https://github.com/donwong2308/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Emberlynn-Loo/ip.git... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Emberlynn-Loo/ip.git to complete... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/felixchanyy/ip.git completed! -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepos INFO: [267/428] Analyzing https://github.com/felixchanyy/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Emberlynn-Loo/ip.git... +Jan 30, 2024 1:32:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Emberlynn-Loo/ip.git to complete... +Jan 30, 2024 1:32:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/felixchanyy/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/felixchanyy/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/felixchanyy/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/felixchanyy/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/felixchanyy/ip.git (master) completed! +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/donwong2308/ip.git completed! +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [268/428] Analyzing https://github.com/donwong2308/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/DhiraPT/ip.git... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/DhiraPT/ip.git to complete... -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/donwong2308/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/donwong2308/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/felixchanyy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/felixchanyy/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/donwong2308/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/donwong2308/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/donwong2308/ip.git (master) completed! -Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/felixchanyy/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/felixchanyy/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/felixchanyy/ip.git (master) completed! -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/minreiseah/ip.git completed! -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [268/428] Analyzing https://github.com/minreiseah/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/howen02/ip.git... -Jan 30, 2024 6:32:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/howen02/ip.git to complete... -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/minreiseah/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/minreiseah/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/minreiseah/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/minreiseah/ip.git (master)... -Jan 30, 2024 6:32:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/minreiseah/ip.git (master) completed! -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Pluiexo/ip.git completed! -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [269/428] Analyzing https://github.com/Pluiexo/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shunjieee/ip.git... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shunjieee/ip.git to complete... -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/howen02/ip.git... +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/howen02/ip.git to complete... +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Pluiexo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Pluiexo/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/minreiseah/ip.git completed! +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [270/428] Analyzing https://github.com/minreiseah/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shunjieee/ip.git... +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shunjieee/ip.git to complete... +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/minreiseah/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/minreiseah/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Pluiexo/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Pluiexo/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Pluiexo/ip.git (master) completed! -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/minreiseah/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/minreiseah/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/minreiseah/ip.git (master) completed! +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Emberlynn-Loo/ip.git completed! -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [270/428] Analyzing https://github.com/Emberlynn-Loo/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [271/428] Analyzing https://github.com/Emberlynn-Loo/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nigel27022001/ip.git... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nigel27022001/ip.git to complete... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DhiraPT/ip.git completed! -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [271/428] Analyzing https://github.com/DhiraPT/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shayaansultan/ip.git... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shayaansultan/ip.git to complete... -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Emberlynn-Loo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Emberlynn-Loo/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DhiraPT/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DhiraPT/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DhiraPT/ip.git completed! +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Emberlynn-Loo/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [272/428] Analyzing https://github.com/DhiraPT/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shayaansultan/ip.git... +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shayaansultan/ip.git to complete... +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Emberlynn-Loo/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Emberlynn-Loo/ip.git (master) completed! -Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DhiraPT/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DhiraPT/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DhiraPT/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DhiraPT/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DhiraPT/ip.git (master) completed! -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/howen02/ip.git completed! -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [272/428] Analyzing https://github.com/howen02/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [273/428] Analyzing https://github.com/howen02/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mahadhir247/ip.git... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mahadhir247/ip.git to complete... -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/howen02/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/howen02/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/howen02/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shunjieee/ip.git completed! -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [273/428] Analyzing https://github.com/shunjieee/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [274/428] Analyzing https://github.com/shunjieee/ip.git (master)... +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GiselleTan/ip.git... -Jan 30, 2024 6:32:50 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GiselleTan/ip.git to complete... -Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/howen02/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/howen02/ip.git (master) completed! -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shunjieee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shunjieee/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shunjieee/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shunjieee/ip.git (master)... -Jan 30, 2024 6:32:50 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shunjieee/ip.git (master) completed! -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nigel27022001/ip.git completed! -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [274/428] Analyzing https://github.com/nigel27022001/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lihaoquan/ip.git... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lihaoquan/ip.git to complete... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nigel27022001/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nigel27022001/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/howen02/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/howen02/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/howen02/ip.git (master) completed! +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shayaansultan/ip.git completed! -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepos INFO: [275/428] Analyzing https://github.com/shayaansultan/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PallonCX/ip.git... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PallonCX/ip.git to complete... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lihaoquan/ip.git... +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lihaoquan/ip.git to complete... +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shayaansultan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shayaansultan/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nigel27022001/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nigel27022001/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nigel27022001/ip.git (master) completed! -Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shayaansultan/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shayaansultan/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shayaansultan/ip.git (master) completed! -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/mahadhir247/ip.git completed! -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepos INFO: [276/428] Analyzing https://github.com/mahadhir247/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yadunut/ip.git... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yadunut/ip.git to complete... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PallonCX/ip.git... +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PallonCX/ip.git to complete... +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/mahadhir247/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/mahadhir247/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mahadhir247/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mahadhir247/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mahadhir247/ip.git (master) completed! -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/GiselleTan/ip.git completed! -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepos INFO: [277/428] Analyzing https://github.com/GiselleTan/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yiwern5/ip.git... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yiwern5/ip.git to complete... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yadunut/ip.git... +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yadunut/ip.git to complete... +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/GiselleTan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/GiselleTan/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mahadhir247/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mahadhir247/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mahadhir247/ip.git (master) completed! +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/GiselleTan/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/GiselleTan/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/GiselleTan/ip.git (master) completed! -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PallonCX/ip.git completed! -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lihaoquan/ip.git completed! -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [278/428] Analyzing https://github.com/PallonCX/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [278/428] Analyzing https://github.com/lihaoquan/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yiwern5/ip.git... +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yiwern5/ip.git to complete... +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lihaoquan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lihaoquan/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nigel27022001/ip.git completed! +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [279/428] Analyzing https://github.com/nigel27022001/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/saiutkarsh33/ip.git... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [279/428] Analyzing https://github.com/lihaoquan/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/saiutkarsh33/ip.git to complete... +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nigel27022001/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nigel27022001/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nigel27022001/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lihaoquan/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nigel27022001/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nigel27022001/ip.git (master) completed! +Jan 30, 2024 1:32:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lihaoquan/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lihaoquan/ip.git (master) completed! +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PallonCX/ip.git completed! +Jan 30, 2024 1:32:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [280/428] Analyzing https://github.com/PallonCX/ip.git (master)... +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Dexter-Wong/ip.git... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Dexter-Wong/ip.git to complete... -Jan 30, 2024 6:32:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/saiutkarsh33/ip.git to complete... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/PallonCX/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/PallonCX/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lihaoquan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lihaoquan/ip.git (master)... -Jan 30, 2024 6:32:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PallonCX/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PallonCX/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PallonCX/ip.git (master) completed! -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yadunut/ip.git completed! -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [280/428] Analyzing https://github.com/yadunut/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [281/428] Analyzing https://github.com/yadunut/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/h4ow3i/ip.git... -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/h4ow3i/ip.git to complete... -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lihaoquan/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yadunut/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yadunut/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lihaoquan/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lihaoquan/ip.git (master) completed! -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PallonCX/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yadunut/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PallonCX/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PallonCX/ip.git (master) completed! +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yadunut/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yadunut/ip.git (master) completed! -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yiwern5/ip.git completed! -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [281/428] Analyzing https://github.com/yiwern5/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [282/428] Analyzing https://github.com/yiwern5/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Derekljh/ip.git... -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Derekljh/ip.git to complete... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yiwern5/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yiwern5/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yiwern5/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yiwern5/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yiwern5/ip.git (master) completed! -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Dexter-Wong/ip.git completed! -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Jayne1010/ip.git... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [282/428] Analyzing https://github.com/Dexter-Wong/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jayne1010/ip.git to complete... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Dexter-Wong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Dexter-Wong/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/saiutkarsh33/ip.git completed! -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepos INFO: [283/428] Analyzing https://github.com/saiutkarsh33/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/officialchengyud/ip.git... -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/officialchengyud/ip.git to complete... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Jayne1010/ip.git... +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jayne1010/ip.git to complete... +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/saiutkarsh33/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/saiutkarsh33/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Dexter-Wong/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/saiutkarsh33/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/saiutkarsh33/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/saiutkarsh33/ip.git (master) completed! +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Dexter-Wong/ip.git completed! +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [284/428] Analyzing https://github.com/Dexter-Wong/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/officialchengyud/ip.git... +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/officialchengyud/ip.git to complete... +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/h4ow3i/ip.git completed! -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Dexter-Wong/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [285/428] Analyzing https://github.com/h4ow3i/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chenyixin0/ip.git... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [284/428] Analyzing https://github.com/h4ow3i/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Dexter-Wong/ip.git (master) completed! -Jan 30, 2024 6:32:52 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Dexter-Wong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Dexter-Wong/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chenyixin0/ip.git to complete... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/h4ow3i/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/h4ow3i/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/saiutkarsh33/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/saiutkarsh33/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/saiutkarsh33/ip.git (master) completed! -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yiwern5/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yiwern5/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yiwern5/ip.git (master) completed! +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Dexter-Wong/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/h4ow3i/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Dexter-Wong/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Dexter-Wong/ip.git (master) completed! +Jan 30, 2024 1:32:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/h4ow3i/ip.git (master)... -Jan 30, 2024 6:32:52 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/h4ow3i/ip.git (master) completed! -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Derekljh/ip.git completed! -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [285/428] Analyzing https://github.com/Derekljh/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [286/428] Analyzing https://github.com/Derekljh/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shavonneg/ip.git... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shavonneg/ip.git to complete... -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Derekljh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Derekljh/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Derekljh/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Derekljh/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Derekljh/ip.git (master) completed! -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Jayne1010/ip.git completed! -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [286/428] Analyzing https://github.com/Jayne1010/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [287/428] Analyzing https://github.com/Jayne1010/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/caitlyntang/ip.git... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/caitlyntang/ip.git to complete... -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Derekljh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Derekljh/ip.git (master)... +Jan 30, 2024 1:32:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jayne1010/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jayne1010/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jayne1010/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jayne1010/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jayne1010/ip.git (master) completed! +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Derekljh/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Derekljh/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Derekljh/ip.git (master) completed! +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/officialchengyud/ip.git completed! -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [287/428] Analyzing https://github.com/officialchengyud/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [288/428] Analyzing https://github.com/officialchengyud/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/getsquared/ip.git... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/getsquared/ip.git to complete... -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/officialchengyud/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/officialchengyud/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jayne1010/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jayne1010/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jayne1010/ip.git (master) completed! -Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/officialchengyud/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/officialchengyud/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/officialchengyud/ip.git (master) completed! -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chenyixin0/ip.git completed! -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [288/428] Analyzing https://github.com/chenyixin0/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [289/428] Analyzing https://github.com/chenyixin0/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ashleyy2444/ip.git... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ashleyy2444/ip.git to complete... -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chenyixin0/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chenyixin0/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/officialchengyud/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/officialchengyud/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/officialchengyud/ip.git (master) completed! +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chenyixin0/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chenyixin0/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chenyixin0/ip.git (master) completed! -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shavonneg/ip.git completed! -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [289/428] Analyzing https://github.com/shavonneg/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/caitlyntang/ip.git completed! +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [290/428] Analyzing https://github.com/caitlyntang/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhekaiii/ip.git... -Jan 30, 2024 6:32:53 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhekaiii/ip.git to complete... -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shavonneg/ip.git completed! +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [291/428] Analyzing https://github.com/shavonneg/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/johnyoozhengxian/ip.git... +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/johnyoozhengxian/ip.git to complete... +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/caitlyntang/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/caitlyntang/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shavonneg/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shavonneg/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/caitlyntang/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shavonneg/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/caitlyntang/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/caitlyntang/ip.git (master) completed! +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shavonneg/ip.git (master)... -Jan 30, 2024 6:32:53 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shavonneg/ip.git (master) completed! -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/caitlyntang/ip.git completed! -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [290/428] Analyzing https://github.com/caitlyntang/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/johnyoozhengxian/ip.git... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/johnyoozhengxian/ip.git to complete... -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/caitlyntang/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/caitlyntang/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/getsquared/ip.git completed! -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [291/428] Analyzing https://github.com/getsquared/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [292/428] Analyzing https://github.com/getsquared/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/meenulekha/ip.git... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/meenulekha/ip.git to complete... -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/getsquared/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/getsquared/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/caitlyntang/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/caitlyntang/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/caitlyntang/ip.git (master) completed! -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ashleyy2444/ip.git completed! -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [292/428] Analyzing https://github.com/ashleyy2444/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [293/428] Analyzing https://github.com/ashleyy2444/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Li-Zizhen/ip.git... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Li-Zizhen/ip.git to complete... -Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/getsquared/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/getsquared/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/getsquared/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/getsquared/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ashleyy2444/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ashleyy2444/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/getsquared/ip.git (master) completed! -Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/getsquared/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ashleyy2444/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/getsquared/ip.git (master)... +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/getsquared/ip.git (master) completed! +Jan 30, 2024 1:32:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ashleyy2444/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ashleyy2444/ip.git (master) completed! -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zhekaiii/ip.git completed! -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [293/428] Analyzing https://github.com/zhekaiii/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [294/428] Analyzing https://github.com/zhekaiii/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SimHanKiong/ip.git... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SimHanKiong/ip.git to complete... -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/johnyoozhengxian/ip.git completed! +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [295/428] Analyzing https://github.com/johnyoozhengxian/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JuliaPoo/ip.git... +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JuliaPoo/ip.git to complete... +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhekaiii/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhekaiii/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/johnyoozhengxian/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/johnyoozhengxian/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/johnyoozhengxian/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/johnyoozhengxian/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/johnyoozhengxian/ip.git (master) completed! +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zhekaiii/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zhekaiii/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zhekaiii/ip.git (master) completed! -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/meenulekha/ip.git completed! -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [294/428] Analyzing https://github.com/meenulekha/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JuliaPoo/ip.git... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JuliaPoo/ip.git to complete... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/johnyoozhengxian/ip.git completed! -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/meenulekha/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/meenulekha/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [295/428] Analyzing https://github.com/johnyoozhengxian/ip.git (master)... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [296/428] Analyzing https://github.com/meenulekha/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vannykin/ip.git... -Jan 30, 2024 6:32:54 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vannykin/ip.git to complete... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/johnyoozhengxian/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/johnyoozhengxian/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/meenulekha/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/meenulekha/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/meenulekha/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/meenulekha/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/meenulekha/ip.git (master) completed! -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/johnyoozhengxian/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Li-Zizhen/ip.git completed! -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/johnyoozhengxian/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/johnyoozhengxian/ip.git (master) completed! -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [296/428] Analyzing https://github.com/Li-Zizhen/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [297/428] Analyzing https://github.com/Li-Zizhen/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/teojunda/ip.git... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/teojunda/ip.git to complete... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Li-Zizhen/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Li-Zizhen/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Li-Zizhen/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Li-Zizhen/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Li-Zizhen/ip.git (master) completed! -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SimHanKiong/ip.git completed! -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [297/428] Analyzing https://github.com/SimHanKiong/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [298/428] Analyzing https://github.com/SimHanKiong/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ko-Khan/ip.git... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ko-Khan/ip.git to complete... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SimHanKiong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SimHanKiong/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SimHanKiong/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SimHanKiong/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SimHanKiong/ip.git (master) completed! -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JuliaPoo/ip.git completed! -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [298/428] Analyzing https://github.com/JuliaPoo/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [299/428] Analyzing https://github.com/JuliaPoo/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jyztintan/ip.git... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jyztintan/ip.git to complete... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vannykin/ip.git completed! +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JuliaPoo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JuliaPoo/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vannykin/ip.git completed! -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [299/428] Analyzing https://github.com/vannykin/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [300/428] Analyzing https://github.com/vannykin/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jasperng-nus/ip.git... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jasperng-nus/ip.git to complete... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/vannykin/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/vannykin/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SimHanKiong/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JuliaPoo/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SimHanKiong/ip.git (master)... +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JuliaPoo/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SimHanKiong/ip.git (master) completed! +Jan 30, 2024 1:32:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JuliaPoo/ip.git (master) completed! -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/vannykin/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teojunda/ip.git completed! -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/vannykin/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/vannykin/ip.git (master) completed! -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teojunda/ip.git completed! +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [301/428] Analyzing https://github.com/teojunda/ip.git (master)... +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/delishad21/ip.git... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [300/428] Analyzing https://github.com/teojunda/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/delishad21/ip.git to complete... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/teojunda/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/teojunda/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/teojunda/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/teojunda/ip.git (master)... -Jan 30, 2024 6:32:55 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/teojunda/ip.git (master) completed! -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Ko-Khan/ip.git completed! -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [301/428] Analyzing https://github.com/Ko-Khan/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [302/428] Analyzing https://github.com/Ko-Khan/ip.git (master)... +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/IamZhenHong/ip.git... -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/IamZhenHong/ip.git to complete... -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ko-Khan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ko-Khan/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Ko-Khan/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Ko-Khan/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Ko-Khan/ip.git (master) completed! -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jyztintan/ip.git completed! +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [303/428] Analyzing https://github.com/jyztintan/ip.git (master)... +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shamesjen/ip.git... +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shamesjen/ip.git to complete... +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "IamZhenHong/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/IamZhenHong/ip.git' 'repos/IamZhenHong_ip/ip_bare' on path . : Cloning into bare repository 'repos/IamZhenHong_ip/ip_bare'... @@ -5666,1001 +5672,977 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shamesjen/ip.git... -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shamesjen/ip.git to complete... -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jyztintan/ip.git completed! -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [302/428] Analyzing https://github.com/jyztintan/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ma-Yirui/ip.git... -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ma-Yirui/ip.git to complete... -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jyztintan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jyztintan/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jasperng-nus/ip.git completed! -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [304/428] Analyzing https://github.com/jasperng-nus/ip.git (master)... +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/timothysashimi/ip.git... -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [303/428] Analyzing https://github.com/jasperng-nus/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/timothysashimi/ip.git to complete... -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jyztintan/ip.git (master)... +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jasperng-nus/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jasperng-nus/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jyztintan/ip.git (master)... +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jyztintan/ip.git (master) completed! +Jan 30, 2024 1:32:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jasperng-nus/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/delishad21/ip.git completed! -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [304/428] Analyzing https://github.com/delishad21/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Xilef121/ip.git... -Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jasperng-nus/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jasperng-nus/ip.git (master) completed! -Jan 30, 2024 6:32:56 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/delishad21/ip.git completed! +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [305/428] Analyzing https://github.com/delishad21/ip.git (master)... +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Xilef121/ip.git... +Jan 30, 2024 1:32:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Xilef121/ip.git to complete... -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/delishad21/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/delishad21/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jyztintan/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jyztintan/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jyztintan/ip.git (master) completed! -Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/delishad21/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/delishad21/ip.git (master)... -Jan 30, 2024 6:32:56 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/delishad21/ip.git (master) completed! -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shamesjen/ip.git completed! -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [305/428] Analyzing https://github.com/shamesjen/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ma-Yirui/ip.git completed! +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [306/428] Analyzing https://github.com/Ma-Yirui/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SamuelZero1/ip.git... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SamuelZero1/ip.git to complete... -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shamesjen/ip.git completed! +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Ma-Yirui/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Ma-Yirui/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [307/428] Analyzing https://github.com/shamesjen/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/swtan346/ip.git... +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/swtan346/ip.git to complete... +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shamesjen/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shamesjen/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ma-Yirui/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ma-Yirui/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shamesjen/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ma-Yirui/ip.git (master) completed! +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shamesjen/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shamesjen/ip.git (master) completed! -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ma-Yirui/ip.git completed! -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [306/428] Analyzing https://github.com/Ma-Yirui/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/swtan346/ip.git... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/swtan346/ip.git to complete... -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Ma-Yirui/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Ma-Yirui/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/timothysashimi/ip.git completed! -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [307/428] Analyzing https://github.com/timothysashimi/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [308/428] Analyzing https://github.com/timothysashimi/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/faaheem13/ip.git... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/faaheem13/ip.git to complete... -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/timothysashimi/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/timothysashimi/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ma-Yirui/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ma-Yirui/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ma-Yirui/ip.git (master) completed! -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Xilef121/ip.git completed! -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [308/428] Analyzing https://github.com/Xilef121/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [309/428] Analyzing https://github.com/Xilef121/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChenXy128/ip.git... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChenXy128/ip.git to complete... -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Xilef121/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Xilef121/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/timothysashimi/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/timothysashimi/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/timothysashimi/ip.git (master) completed! -Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Xilef121/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Xilef121/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Xilef121/ip.git (master) completed! -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SamuelZero1/ip.git completed! -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [309/428] Analyzing https://github.com/SamuelZero1/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [310/428] Analyzing https://github.com/SamuelZero1/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Arixeyeion/ip.git... -Jan 30, 2024 6:32:57 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Arixeyeion/ip.git to complete... -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SamuelZero1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SamuelZero1/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SamuelZero1/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SamuelZero1/ip.git (master)... -Jan 30, 2024 6:32:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SamuelZero1/ip.git (master) completed! -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/swtan346/ip.git completed! -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [310/428] Analyzing https://github.com/swtan346/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [311/428] Analyzing https://github.com/swtan346/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Darylgolden/ip.git... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Darylgolden/ip.git to complete... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SamuelZero1/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SamuelZero1/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/swtan346/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/swtan346/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SamuelZero1/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SamuelZero1/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SamuelZero1/ip.git (master) completed! +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/swtan346/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/faaheem13/ip.git completed! -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [311/428] Analyzing https://github.com/faaheem13/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/swtan346/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/swtan346/ip.git (master) completed! +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [312/428] Analyzing https://github.com/faaheem13/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tankh99/ip.git... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tankh99/ip.git to complete... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/faaheem13/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/faaheem13/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/swtan346/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/faaheem13/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/swtan346/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/swtan346/ip.git (master) completed! -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/faaheem13/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/faaheem13/ip.git (master) completed! -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChenXy128/ip.git completed! -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [312/428] Analyzing https://github.com/ChenXy128/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [313/428] Analyzing https://github.com/ChenXy128/ip.git (master)... +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Tsenrae/ip.git... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Tsenrae/ip.git to complete... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChenXy128/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChenXy128/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChenXy128/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChenXy128/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:10 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChenXy128/ip.git (master) completed! -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Arixeyeion/ip.git completed! -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [313/428] Analyzing https://github.com/Arixeyeion/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [314/428] Analyzing https://github.com/Arixeyeion/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/starsia/ip.git... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/starsia/ip.git to complete... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Arixeyeion/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Arixeyeion/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Arixeyeion/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Arixeyeion/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Arixeyeion/ip.git (master) completed! -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Darylgolden/ip.git completed! -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [314/428] Analyzing https://github.com/Darylgolden/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/hjungwoo01/ip.git... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [315/428] Analyzing https://github.com/Darylgolden/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/hjungwoo01/ip.git to complete... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Darylgolden/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Darylgolden/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tankh99/ip.git completed! -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [315/428] Analyzing https://github.com/tankh99/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/YuSoonZ/ip.git... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/YuSoonZ/ip.git to complete... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tankh99/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tankh99/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Arixeyeion/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Arixeyeion/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Arixeyeion/ip.git (master) completed! +Jan 30, 2024 1:32:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Darylgolden/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Darylgolden/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Darylgolden/ip.git (master) completed! -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Tsenrae/ip.git completed! -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepos INFO: [316/428] Analyzing https://github.com/Tsenrae/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/YuSoonZ/ip.git... +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/YuSoonZ/ip.git to complete... +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tankh99/ip.git completed! +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [317/428] Analyzing https://github.com/tankh99/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Darkarche3/ip.git... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tankh99/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Darkarche3/ip.git to complete... -Jan 30, 2024 6:32:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tankh99/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Tsenrae/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Tsenrae/ip.git (master)... -Jan 30, 2024 6:32:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tankh99/ip.git (master) completed! -Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tankh99/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tankh99/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Tsenrae/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Tsenrae/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Tsenrae/ip.git (master) completed! -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tankh99/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tankh99/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tankh99/ip.git (master) completed! +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/starsia/ip.git completed! -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [317/428] Analyzing https://github.com/starsia/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [318/428] Analyzing https://github.com/starsia/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Vision-2000/ip.git... -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Vision-2000/ip.git to complete... -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/starsia/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/starsia/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hjungwoo01/ip.git completed! +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [319/428] Analyzing https://github.com/hjungwoo01/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chiageng/ip.git... +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chiageng/ip.git to complete... +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/hjungwoo01/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/hjungwoo01/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/starsia/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/starsia/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/starsia/ip.git (master) completed! -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/YuSoonZ/ip.git completed! -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [318/428] Analyzing https://github.com/YuSoonZ/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chiageng/ip.git... -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hjungwoo01/ip.git completed! -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chiageng/ip.git to complete... -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Darkarche3/ip.git completed! +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [320/428] Analyzing https://github.com/YuSoonZ/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/logical-1985516/ip.git... -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [319/428] Analyzing https://github.com/hjungwoo01/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/logical-1985516/ip.git to complete... -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/YuSoonZ/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/YuSoonZ/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/hjungwoo01/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/hjungwoo01/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/YuSoonZ/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Darkarche3/ip.git completed! -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [321/428] Analyzing https://github.com/Darkarche3/ip.git (master)... +Jan 30, 2024 1:32:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ananya21/ip.git... -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [320/428] Analyzing https://github.com/Darkarche3/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ananya21/ip.git to complete... -Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/YuSoonZ/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/YuSoonZ/ip.git (master) completed! -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hjungwoo01/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/YuSoonZ/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/YuSoonZ/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Darkarche3/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:32:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Darkarche3/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hjungwoo01/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hjungwoo01/ip.git (master) completed! +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Darkarche3/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hjungwoo01/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/YuSoonZ/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Darkarche3/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Darkarche3/ip.git (master) completed! -Jan 30, 2024 6:32:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hjungwoo01/ip.git (master)... -Jan 30, 2024 6:32:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hjungwoo01/ip.git (master) completed! -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/YuSoonZ/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/YuSoonZ/ip.git (master) completed! +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Vision-2000/ip.git completed! -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [321/428] Analyzing https://github.com/Vision-2000/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chiageng/ip.git completed! +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [322/428] Analyzing https://github.com/Vision-2000/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/purivirakarin/ip.git... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/joenus/ip.git... +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [323/428] Analyzing https://github.com/chiageng/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/purivirakarin/ip.git to complete... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/joenus/ip.git to complete... +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Vision-2000/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Vision-2000/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chiageng/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chiageng/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Vision-2000/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Vision-2000/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Vision-2000/ip.git (master) completed! -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chiageng/ip.git completed! -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/joenus/ip.git... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [322/428] Analyzing https://github.com/chiageng/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/joenus/ip.git to complete... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/logical-1985516/ip.git completed! -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [323/428] Analyzing https://github.com/logical-1985516/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jessicawyz/ip.git... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jessicawyz/ip.git to complete... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chiageng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chiageng/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/logical-1985516/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/logical-1985516/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chiageng/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ananya21/ip.git completed! -Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/logical-1985516/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepos INFO: [324/428] Analyzing https://github.com/ananya21/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/casaarlai/ip.git... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/casaarlai/ip.git to complete... -Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/logical-1985516/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/logical-1985516/ip.git (master) completed! -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jessicawyz/ip.git... +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jessicawyz/ip.git to complete... +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chiageng/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chiageng/ip.git (master) completed! +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/logical-1985516/ip.git completed! +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ananya21/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ananya21/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [325/428] Analyzing https://github.com/logical-1985516/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/casaarlai/ip.git... +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/casaarlai/ip.git to complete... +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/logical-1985516/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/logical-1985516/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ananya21/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ananya21/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ananya21/ip.git (master) completed! -Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chiageng/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chiageng/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chiageng/ip.git (master) completed! -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/purivirakarin/ip.git completed! -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [325/428] Analyzing https://github.com/purivirakarin/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/logical-1985516/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/logical-1985516/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/logical-1985516/ip.git (master) completed! +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/joenus/ip.git completed! +Jan 30, 2024 1:32:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [326/428] Analyzing https://github.com/joenus/ip.git (master)... +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ryo-Seah/ip.git... -Jan 30, 2024 6:33:00 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ryo-Seah/ip.git to complete... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/purivirakarin/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/purivirakarin/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/purivirakarin/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/purivirakarin/ip.git (master)... -Jan 30, 2024 6:33:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/purivirakarin/ip.git (master) completed! -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/joenus/ip.git completed! -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [326/428] Analyzing https://github.com/joenus/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/purivirakarin/ip.git completed! +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [327/428] Analyzing https://github.com/purivirakarin/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jeremiahlzz/ip.git... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jeremiahlzz/ip.git to complete... -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/joenus/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/joenus/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jessicawyz/ip.git completed! -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [327/428] Analyzing https://github.com/jessicawyz/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/macareonie/ip.git... -Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/purivirakarin/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/purivirakarin/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/joenus/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/macareonie/ip.git to complete... -Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/joenus/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/joenus/ip.git (master) completed! -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jessicawyz/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jessicawyz/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/purivirakarin/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/purivirakarin/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/purivirakarin/ip.git (master) completed! +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/casaarlai/ip.git completed! -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepos INFO: [328/428] Analyzing https://github.com/casaarlai/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chin-herng/ip.git... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chin-herng/ip.git to complete... -Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jessicawyz/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/macareonie/ip.git... +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/macareonie/ip.git to complete... +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/casaarlai/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/casaarlai/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jessicawyz/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jessicawyz/ip.git (master) completed! -Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jessicawyz/ip.git completed! +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [329/428] Analyzing https://github.com/jessicawyz/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chin-herng/ip.git... +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chin-herng/ip.git to complete... +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jessicawyz/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jessicawyz/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/casaarlai/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/casaarlai/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/casaarlai/ip.git (master) completed! -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jessicawyz/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jessicawyz/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jessicawyz/ip.git (master) completed! +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Ryo-Seah/ip.git completed! -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [329/428] Analyzing https://github.com/Ryo-Seah/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [330/428] Analyzing https://github.com/Ryo-Seah/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gowthaman-01/ip.git... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gowthaman-01/ip.git to complete... -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Ryo-Seah/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Ryo-Seah/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ryo-Seah/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ryo-Seah/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ryo-Seah/ip.git (master) completed! -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jeremiahlzz/ip.git completed! -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [330/428] Analyzing https://github.com/jeremiahlzz/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [331/428] Analyzing https://github.com/jeremiahlzz/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Joseph31416/ip.git... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Joseph31416/ip.git to complete... -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Ryo-Seah/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Ryo-Seah/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jeremiahlzz/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jeremiahlzz/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/macareonie/ip.git completed! -Jan 30, 2024 6:33:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ryo-Seah/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jeremiahlzz/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [331/428] Analyzing https://github.com/macareonie/ip.git (master)... -Jan 30, 2024 6:33:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/radeon2525/ip.git... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/radeon2525/ip.git to complete... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ryo-Seah/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jeremiahlzz/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ryo-Seah/ip.git (master) completed! +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jeremiahlzz/ip.git (master) completed! -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/macareonie/ip.git completed! +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [332/428] Analyzing https://github.com/macareonie/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/radeon2525/ip.git... +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/radeon2525/ip.git to complete... +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/macareonie/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/macareonie/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chin-herng/ip.git completed! -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [332/428] Analyzing https://github.com/chin-herng/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [333/428] Analyzing https://github.com/chin-herng/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ejnan/ip.git... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ejnan/ip.git to complete... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chin-herng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chin-herng/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/macareonie/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chin-herng/ip.git (master)... +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/macareonie/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/macareonie/ip.git (master) completed! -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chin-herng/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chin-herng/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:13 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chin-herng/ip.git (master) completed! -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/gowthaman-01/ip.git completed! -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [333/428] Analyzing https://github.com/gowthaman-01/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [334/428] Analyzing https://github.com/gowthaman-01/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jskimdev/ip.git... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jskimdev/ip.git to complete... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gowthaman-01/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gowthaman-01/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gowthaman-01/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gowthaman-01/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gowthaman-01/ip.git (master) completed! -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Joseph31416/ip.git completed! -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [334/428] Analyzing https://github.com/Joseph31416/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [335/428] Analyzing https://github.com/Joseph31416/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Chiarena/ip.git... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Chiarena/ip.git to complete... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gowthaman-01/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gowthaman-01/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Joseph31416/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Joseph31416/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gowthaman-01/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gowthaman-01/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Joseph31416/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gowthaman-01/ip.git (master) completed! +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Joseph31416/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Joseph31416/ip.git (master) completed! +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/radeon2525/ip.git completed! -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [336/428] Analyzing https://github.com/radeon2525/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chonghaoen/ip.git... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [335/428] Analyzing https://github.com/radeon2525/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chonghaoen/ip.git to complete... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Joseph31416/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/radeon2525/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/radeon2525/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Joseph31416/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Joseph31416/ip.git (master) completed! -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ejnan/ip.git completed! -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [336/428] Analyzing https://github.com/ejnan/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [337/428] Analyzing https://github.com/ejnan/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CJerrong/ip.git... -Jan 30, 2024 6:33:02 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/CJerrong/ip.git to complete... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/radeon2525/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/radeon2525/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ejnan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ejnan/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/radeon2525/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/radeon2525/ip.git (master) completed! -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ejnan/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ejnan/ip.git (master)... -Jan 30, 2024 6:33:02 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ejnan/ip.git (master) completed! -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jskimdev/ip.git completed! -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [337/428] Analyzing https://github.com/jskimdev/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chiarena/ip.git completed! +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [338/428] Analyzing https://github.com/jskimdev/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/qinxutan/ip.git... -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/qinxutan/ip.git to complete... -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jskimdev/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jskimdev/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jskimdev/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jskimdev/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jskimdev/ip.git (master) completed! -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chiarena/ip.git completed! -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/billyhoce/ip.git... -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [338/428] Analyzing https://github.com/Chiarena/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [339/428] Analyzing https://github.com/Chiarena/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/billyhoce/ip.git to complete... -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jskimdev/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jskimdev/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Chiarena/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Chiarena/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Chiarena/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Chiarena/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Chiarena/ip.git (master) completed! -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jskimdev/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jskimdev/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jskimdev/ip.git (master) completed! +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chonghaoen/ip.git completed! -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [339/428] Analyzing https://github.com/chonghaoen/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [340/428] Analyzing https://github.com/chonghaoen/ip.git (master)... +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/4llysa/ip.git... -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/4llysa/ip.git to complete... -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chonghaoen/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chonghaoen/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/CJerrong/ip.git completed! -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [340/428] Analyzing https://github.com/CJerrong/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [341/428] Analyzing https://github.com/CJerrong/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TopKec/ip.git... -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TopKec/ip.git to complete... -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/CJerrong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/CJerrong/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chonghaoen/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chonghaoen/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chonghaoen/ip.git (master) completed! -Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/CJerrong/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/CJerrong/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/CJerrong/ip.git (master) completed! -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/qinxutan/ip.git completed! -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [341/428] Analyzing https://github.com/qinxutan/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/MarcusGitty/ip.git... -Jan 30, 2024 6:33:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/MarcusGitty/ip.git to complete... -Jan 30, 2024 6:33:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/qinxutan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/qinxutan/ip.git (master)... -Jan 30, 2024 6:33:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/qinxutan/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/qinxutan/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/qinxutan/ip.git (master) completed! -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/billyhoce/ip.git completed! -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepos INFO: [342/428] Analyzing https://github.com/billyhoce/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shawnnlimm/ip.git... -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shawnnlimm/ip.git to complete... -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/MarcusGitty/ip.git... +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/MarcusGitty/ip.git to complete... +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/billyhoce/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/billyhoce/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/qinxutan/ip.git completed! +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [343/428] Analyzing https://github.com/qinxutan/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shawnnlimm/ip.git... +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shawnnlimm/ip.git to complete... +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/qinxutan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/qinxutan/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/billyhoce/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/billyhoce/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/billyhoce/ip.git (master) completed! +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/4llysa/ip.git completed! -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [343/428] Analyzing https://github.com/4llysa/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [344/428] Analyzing https://github.com/4llysa/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/huekoh/ip.git... -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/huekoh/ip.git to complete... -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/4llysa/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/4llysa/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/billyhoce/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/billyhoce/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/qinxutan/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/qinxutan/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/qinxutan/ip.git (master) completed! +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/4llysa/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/4llysa/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/4llysa/ip.git (master) completed! +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TopKec/ip.git completed! -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/billyhoce/ip.git (master) completed! -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [344/428] Analyzing https://github.com/TopKec/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [345/428] Analyzing https://github.com/TopKec/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JonChong98/ip.git... -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JonChong98/ip.git to complete... -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TopKec/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TopKec/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/4llysa/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/4llysa/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/4llysa/ip.git (master) completed! -Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TopKec/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TopKec/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TopKec/ip.git (master) completed! -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/MarcusGitty/ip.git completed! -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [345/428] Analyzing https://github.com/MarcusGitty/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [346/428] Analyzing https://github.com/MarcusGitty/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/STELLA-LYE/ip.git... -Jan 30, 2024 6:33:04 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/STELLA-LYE/ip.git to complete... -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/MarcusGitty/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/MarcusGitty/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/MarcusGitty/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/MarcusGitty/ip.git (master)... -Jan 30, 2024 6:33:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/MarcusGitty/ip.git (master) completed! -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shawnnlimm/ip.git completed! -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [346/428] Analyzing https://github.com/shawnnlimm/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [347/428] Analyzing https://github.com/shawnnlimm/ip.git (master)... +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nyankoclaws/ip.git... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nyankoclaws/ip.git to complete... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/huekoh/ip.git completed! -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shawnnlimm/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shawnnlimm/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [347/428] Analyzing https://github.com/huekoh/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/MarcusGitty/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/MarcusGitty/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/MarcusGitty/ip.git (master) completed! +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shawnnlimm/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shawnnlimm/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shawnnlimm/ip.git (master) completed! +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/huekoh/ip.git completed! +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [348/428] Analyzing https://github.com/huekoh/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/meowwtama/ip.git... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/meowwtama/ip.git to complete... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/huekoh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/huekoh/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JonChong98/ip.git completed! -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [348/428] Analyzing https://github.com/JonChong98/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [349/428] Analyzing https://github.com/JonChong98/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/KohGuanZeh/ip.git... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KohGuanZeh/ip.git to complete... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JonChong98/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JonChong98/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/huekoh/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shawnnlimm/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/huekoh/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/huekoh/ip.git (master) completed! -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shawnnlimm/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shawnnlimm/ip.git (master) completed! -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JonChong98/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JonChong98/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JonChong98/ip.git (master) completed! -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/STELLA-LYE/ip.git completed! -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [349/428] Analyzing https://github.com/STELLA-LYE/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [350/428] Analyzing https://github.com/STELLA-LYE/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nuyer/ip.git... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nuyer/ip.git to complete... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/STELLA-LYE/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/STELLA-LYE/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/STELLA-LYE/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/STELLA-LYE/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/STELLA-LYE/ip.git (master) completed! -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nyankoclaws/ip.git completed! -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [350/428] Analyzing https://github.com/nyankoclaws/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [351/428] Analyzing https://github.com/nyankoclaws/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SeaHogs/ip.git... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SeaHogs/ip.git to complete... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nyankoclaws/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nyankoclaws/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/meowwtama/ip.git completed! -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [351/428] Analyzing https://github.com/meowwtama/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/S-Aishvarya/ip.git... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/S-Aishvarya/ip.git to complete... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/meowwtama/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/meowwtama/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/STELLA-LYE/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/STELLA-LYE/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/STELLA-LYE/ip.git (master) completed! +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nyankoclaws/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KohGuanZeh/ip.git completed! -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nyankoclaws/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nyankoclaws/ip.git (master) completed! -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tejas-1405/ip.git... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KohGuanZeh/ip.git completed! +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepos INFO: [352/428] Analyzing https://github.com/KohGuanZeh/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/S-Aishvarya/ip.git... +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/S-Aishvarya/ip.git to complete... +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/meowwtama/ip.git completed! +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tejas-1405/ip.git... +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [353/428] Analyzing https://github.com/meowwtama/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tejas-1405/ip.git to complete... -Jan 30, 2024 6:33:05 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KohGuanZeh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KohGuanZeh/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/meowwtama/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/meowwtama/ip.git (master)... +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/meowwtama/ip.git (master)... -Jan 30, 2024 6:33:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/meowwtama/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:16 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/meowwtama/ip.git (master) completed! -Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KohGuanZeh/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/KohGuanZeh/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/KohGuanZeh/ip.git (master) completed! -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nuyer/ip.git completed! -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [353/428] Analyzing https://github.com/nuyer/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [354/428] Analyzing https://github.com/nuyer/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/youdonnnn/ip.git... -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/youdonnnn/ip.git to complete... -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nuyer/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nuyer/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nuyer/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nuyer/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nuyer/ip.git (master) completed! -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SeaHogs/ip.git completed! -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [354/428] Analyzing https://github.com/SeaHogs/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [355/428] Analyzing https://github.com/SeaHogs/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tcjazwei/ip.git... -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tcjazwei/ip.git to complete... -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SeaHogs/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SeaHogs/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SeaHogs/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SeaHogs/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SeaHogs/ip.git (master) completed! -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/S-Aishvarya/ip.git completed! -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [355/428] Analyzing https://github.com/S-Aishvarya/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [356/428] Analyzing https://github.com/S-Aishvarya/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jieqiboh/ip.git... -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jieqiboh/ip.git to complete... -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/S-Aishvarya/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/S-Aishvarya/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tejas-1405/ip.git completed! -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [356/428] Analyzing https://github.com/tejas-1405/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [357/428] Analyzing https://github.com/tejas-1405/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wongkj12/ip.git... -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wongkj12/ip.git to complete... -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tejas-1405/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tejas-1405/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/S-Aishvarya/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/S-Aishvarya/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/S-Aishvarya/ip.git (master) completed! -Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tejas-1405/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tejas-1405/ip.git (master)... -Jan 30, 2024 6:33:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tejas-1405/ip.git (master) completed! -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/S-Aishvarya/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/S-Aishvarya/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "tcjazwei/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/tcjazwei/ip.git' 'repos/tcjazwei_ip/ip_bare' on path . : Cloning into bare repository 'repos/tcjazwei_ip/ip_bare'... @@ -6676,605 +6658,651 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GERARDJM018/ip.git... -Jan 30, 2024 6:33:06 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GERARDJM018/ip.git to complete... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tejas-1405/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tejas-1405/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/S-Aishvarya/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/S-Aishvarya/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/S-Aishvarya/ip.git (master) completed! +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tejas-1405/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tejas-1405/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tejas-1405/ip.git (master) completed! +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/youdonnnn/ip.git completed! -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [357/428] Analyzing https://github.com/youdonnnn/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [358/428] Analyzing https://github.com/youdonnnn/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/blaukc/ip.git... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/blaukc/ip.git to complete... -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/youdonnnn/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/youdonnnn/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/youdonnnn/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/youdonnnn/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/youdonnnn/ip.git (master) completed! -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jieqiboh/ip.git completed! -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [358/428] Analyzing https://github.com/jieqiboh/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [359/428] Analyzing https://github.com/jieqiboh/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tohlh/ip.git... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tohlh/ip.git to complete... -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jieqiboh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jieqiboh/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wongkj12/ip.git completed! -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [359/428] Analyzing https://github.com/wongkj12/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/hiivan/ip.git... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [360/428] Analyzing https://github.com/wongkj12/ip.git (master)... +Jan 30, 2024 1:32:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/hiivan/ip.git to complete... -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jieqiboh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jieqiboh/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wongkj12/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wongkj12/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wongkj12/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wongkj12/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wongkj12/ip.git (master) completed! -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/GERARDJM018/ip.git completed! -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [360/428] Analyzing https://github.com/GERARDJM018/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/darkvoid32/ip.git... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [361/428] Analyzing https://github.com/GERARDJM018/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/darkvoid32/ip.git to complete... -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/GERARDJM018/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/GERARDJM018/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jieqiboh/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jieqiboh/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jieqiboh/ip.git (master) completed! -Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wongkj12/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wongkj12/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wongkj12/ip.git (master) completed! +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/GERARDJM018/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/GERARDJM018/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/GERARDJM018/ip.git (master) completed! -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jieqiboh/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jieqiboh/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jieqiboh/ip.git (master) completed! +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/blaukc/ip.git completed! -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [361/428] Analyzing https://github.com/blaukc/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [362/428] Analyzing https://github.com/blaukc/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yapxuanxuan/ip.git... -Jan 30, 2024 6:33:07 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yapxuanxuan/ip.git to complete... -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/blaukc/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/blaukc/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/blaukc/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/blaukc/ip.git (master)... -Jan 30, 2024 6:33:07 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/blaukc/ip.git (master) completed! -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tohlh/ip.git completed! -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [362/428] Analyzing https://github.com/tohlh/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [363/428] Analyzing https://github.com/tohlh/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanjiajiajun/ip.git... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanjiajiajun/ip.git to complete... -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tohlh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tohlh/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/hiivan/ip.git completed! -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [363/428] Analyzing https://github.com/hiivan/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [364/428] Analyzing https://github.com/hiivan/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Greg-Tan/ip.git... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Greg-Tan/ip.git to complete... -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hiivan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hiivan/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tohlh/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tohlh/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tohlh/ip.git (master) completed! -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/darkvoid32/ip.git completed! -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [364/428] Analyzing https://github.com/darkvoid32/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tohlh/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [365/428] Analyzing https://github.com/darkvoid32/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kervyntan/ip.git... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kervyntan/ip.git to complete... -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tohlh/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tohlh/ip.git (master) completed! +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/darkvoid32/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/darkvoid32/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/hiivan/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hiivan/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hiivan/ip.git (master) completed! -Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/darkvoid32/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/darkvoid32/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/darkvoid32/ip.git (master) completed! -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yapxuanxuan/ip.git completed! -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [365/428] Analyzing https://github.com/yapxuanxuan/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [366/428] Analyzing https://github.com/yapxuanxuan/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AndrewOng2066/ip.git... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AndrewOng2066/ip.git to complete... -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hiivan/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hiivan/ip.git (master) completed! +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yapxuanxuan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yapxuanxuan/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/darkvoid32/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/darkvoid32/ip.git (master)... +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/darkvoid32/ip.git (master) completed! +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yapxuanxuan/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yapxuanxuan/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:18 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yapxuanxuan/ip.git (master) completed! -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanjiajiajun/ip.git completed! -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [366/428] Analyzing https://github.com/tanjiajiajun/ip.git (master)... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [367/428] Analyzing https://github.com/tanjiajiajun/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/g-tejas/ip.git... -Jan 30, 2024 6:33:08 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/g-tejas/ip.git to complete... -Jan 30, 2024 6:33:08 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanjiajiajun/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanjiajiajun/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Greg-Tan/ip.git completed! -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [367/428] Analyzing https://github.com/Greg-Tan/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RyanNgWH/ip.git... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RyanNgWH/ip.git to complete... -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Greg-Tan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Greg-Tan/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanjiajiajun/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanjiajiajun/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanjiajiajun/ip.git (master) completed! -Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Greg-Tan/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Greg-Tan/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kervyntan/ip.git completed! -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Greg-Tan/ip.git (master) completed! -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepos INFO: [368/428] Analyzing https://github.com/kervyntan/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yeoshuheng/ip.git... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yeoshuheng/ip.git to complete... -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RyanNgWH/ip.git... +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RyanNgWH/ip.git to complete... +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kervyntan/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kervyntan/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kervyntan/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kervyntan/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kervyntan/ip.git (master) completed! -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AndrewOng2066/ip.git completed! -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepos INFO: [369/428] Analyzing https://github.com/AndrewOng2066/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jonpwk/ip.git... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jonpwk/ip.git to complete... -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yeoshuheng/ip.git... +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yeoshuheng/ip.git to complete... +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AndrewOng2066/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AndrewOng2066/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kervyntan/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AndrewOng2066/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kervyntan/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kervyntan/ip.git (master) completed! +Jan 30, 2024 1:32:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AndrewOng2066/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AndrewOng2066/ip.git (master) completed! -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Greg-Tan/ip.git completed! +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [370/428] Analyzing https://github.com/Greg-Tan/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jonpwk/ip.git... +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jonpwk/ip.git to complete... +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Greg-Tan/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Greg-Tan/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Greg-Tan/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Greg-Tan/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Greg-Tan/ip.git (master) completed! +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/g-tejas/ip.git completed! -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [370/428] Analyzing https://github.com/g-tejas/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [371/428] Analyzing https://github.com/g-tejas/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xinen26/ip.git... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xinen26/ip.git to complete... -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/g-tejas/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/g-tejas/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/RyanNgWH/ip.git completed! -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [371/428] Analyzing https://github.com/RyanNgWH/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [372/428] Analyzing https://github.com/RyanNgWH/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gerteck/ip.git... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gerteck/ip.git to complete... -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/g-tejas/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RyanNgWH/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RyanNgWH/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/g-tejas/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/g-tejas/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/g-tejas/ip.git (master) completed! +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yeoshuheng/ip.git completed! -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [372/428] Analyzing https://github.com/yeoshuheng/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [373/428] Analyzing https://github.com/yeoshuheng/ip.git (master)... +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/drustanyjt/ip.git... -Jan 30, 2024 6:33:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/g-tejas/ip.git (master)... -Jan 30, 2024 6:33:09 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/drustanyjt/ip.git to complete... -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/g-tejas/ip.git (master) completed! -Jan 30, 2024 6:33:09 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yeoshuheng/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yeoshuheng/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jonpwk/ip.git completed! -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [373/428] Analyzing https://github.com/jonpwk/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [374/428] Analyzing https://github.com/jonpwk/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/angsongyee/ip.git... -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/angsongyee/ip.git to complete... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jonpwk/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jonpwk/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yeoshuheng/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yeoshuheng/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yeoshuheng/ip.git (master) completed! -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/RyanNgWH/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jonpwk/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RyanNgWH/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yeoshuheng/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yeoshuheng/ip.git (master) completed! +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jonpwk/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jonpwk/ip.git (master) completed! -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RyanNgWH/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/RyanNgWH/ip.git (master) completed! -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/xinen26/ip.git completed! -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [374/428] Analyzing https://github.com/xinen26/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [375/428] Analyzing https://github.com/xinen26/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alfaloo/ip.git... -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alfaloo/ip.git to complete... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xinen26/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xinen26/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xinen26/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xinen26/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xinen26/ip.git (master) completed! +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/gerteck/ip.git completed! -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ivan24004/ip.git... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [375/428] Analyzing https://github.com/gerteck/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [376/428] Analyzing https://github.com/gerteck/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ivan24004/ip.git to complete... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/gerteck/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/gerteck/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xinen26/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xinen26/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xinen26/ip.git (master) completed! -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/drustanyjt/ip.git completed! -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cheahTJ/ip.git... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [376/428] Analyzing https://github.com/drustanyjt/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [377/428] Analyzing https://github.com/drustanyjt/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cheahTJ/ip.git to complete... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gerteck/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/drustanyjt/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/drustanyjt/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gerteck/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/gerteck/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/gerteck/ip.git (master) completed! -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/drustanyjt/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/drustanyjt/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/drustanyjt/ip.git (master) completed! -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/angsongyee/ip.git completed! -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [377/428] Analyzing https://github.com/angsongyee/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [378/428] Analyzing https://github.com/angsongyee/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bertrandong/ip.git... -Jan 30, 2024 6:33:10 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bertrandong/ip.git to complete... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/angsongyee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/angsongyee/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/angsongyee/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/angsongyee/ip.git (master)... -Jan 30, 2024 6:33:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/angsongyee/ip.git (master) completed! -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/alfaloo/ip.git completed! -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [378/428] Analyzing https://github.com/alfaloo/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [379/428] Analyzing https://github.com/alfaloo/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/headcube1/ip.git... -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/headcube1/ip.git to complete... -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alfaloo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alfaloo/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/angsongyee/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/angsongyee/ip.git (master)... +Jan 30, 2024 1:32:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/angsongyee/ip.git (master) completed! +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ivan24004/ip.git completed! -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [379/428] Analyzing https://github.com/ivan24004/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [380/428] Analyzing https://github.com/ivan24004/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/pjanthony2001/ip.git... -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/pjanthony2001/ip.git to complete... -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ivan24004/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ivan24004/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cheahTJ/ip.git completed! -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruijietay/ip.git... -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [380/428] Analyzing https://github.com/cheahTJ/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ruijietay/ip.git to complete... -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cheahTJ/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cheahTJ/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alfaloo/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alfaloo/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alfaloo/ip.git (master) completed! -Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cheahTJ/ip.git completed! +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ivan24004/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [381/428] Analyzing https://github.com/cheahTJ/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruijietay/ip.git... +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ruijietay/ip.git to complete... +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ivan24004/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ivan24004/ip.git (master) completed! -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bertrandong/ip.git completed! -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [381/428] Analyzing https://github.com/bertrandong/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sindhurajain/ip.git... -Jan 30, 2024 6:33:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sindhurajain/ip.git to complete... -Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cheahTJ/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cheahTJ/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cheahTJ/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cheahTJ/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cheahTJ/ip.git (master) completed! -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bertrandong/ip.git completed! +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [382/428] Analyzing https://github.com/bertrandong/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sindhurajain/ip.git... +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sindhurajain/ip.git to complete... +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bertrandong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bertrandong/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bertrandong/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bertrandong/ip.git (master)... -Jan 30, 2024 6:33:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bertrandong/ip.git (master) completed! -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/headcube1/ip.git completed! -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [382/428] Analyzing https://github.com/headcube1/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [383/428] Analyzing https://github.com/headcube1/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ragnapop/ip.git... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ragnapop/ip.git to complete... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/headcube1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/headcube1/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/headcube1/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/headcube1/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/headcube1/ip.git (master) completed! +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bertrandong/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bertrandong/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bertrandong/ip.git (master) completed! +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/pjanthony2001/ip.git completed! -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [383/428] Analyzing https://github.com/pjanthony2001/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [384/428] Analyzing https://github.com/pjanthony2001/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nobodyishappy/ip.git... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nobodyishappy/ip.git to complete... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/pjanthony2001/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/pjanthony2001/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/headcube1/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/headcube1/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/headcube1/ip.git (master) completed! -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ruijietay/ip.git completed! -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [384/428] Analyzing https://github.com/ruijietay/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [385/428] Analyzing https://github.com/ruijietay/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Pughal77/ip.git... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Pughal77/ip.git to complete... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ruijietay/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ruijietay/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pjanthony2001/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ruijietay/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pjanthony2001/ip.git (master)... +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pjanthony2001/ip.git (master) completed! +Jan 30, 2024 1:32:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ruijietay/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ruijietay/ip.git (master) completed! -Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pjanthony2001/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sindhurajain/ip.git completed! -Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pjanthony2001/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [385/428] Analyzing https://github.com/sindhurajain/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [386/428] Analyzing https://github.com/sindhurajain/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/PateShin/ip.git... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pjanthony2001/ip.git (master) completed! -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/PateShin/ip.git to complete... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sindhurajain/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sindhurajain/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sindhurajain/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sindhurajain/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sindhurajain/ip.git (master) completed! -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Ragnapop/ip.git completed! -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [386/428] Analyzing https://github.com/Ragnapop/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [387/428] Analyzing https://github.com/Ragnapop/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jayllo-c/ip.git... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jayllo-c/ip.git to complete... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ragnapop/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ragnapop/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sindhurajain/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sindhurajain/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sindhurajain/ip.git (master) completed! +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ragnapop/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ragnapop/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ragnapop/ip.git (master) completed! +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nobodyishappy/ip.git completed! -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [387/428] Analyzing https://github.com/nobodyishappy/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [388/428] Analyzing https://github.com/nobodyishappy/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gosongying/ip.git... -Jan 30, 2024 6:33:12 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gosongying/ip.git to complete... -Jan 30, 2024 6:33:12 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nobodyishappy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nobodyishappy/ip.git (master)... -Jan 30, 2024 6:33:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ragnapop/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ragnapop/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ragnapop/ip.git (master) completed! -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nobodyishappy/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Pughal77/ip.git completed! -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nobodyishappy/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nobodyishappy/ip.git (master) completed! -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Pughal77/ip.git completed! +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [389/428] Analyzing https://github.com/Pughal77/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/biinnnggggg/ip.git... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [388/428] Analyzing https://github.com/Pughal77/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/biinnnggggg/ip.git to complete... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Pughal77/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Pughal77/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Pughal77/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Pughal77/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Pughal77/ip.git (master) completed! -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/PateShin/ip.git completed! -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [389/428] Analyzing https://github.com/PateShin/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [390/428] Analyzing https://github.com/PateShin/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ShanylOng/ip.git... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ShanylOng/ip.git to complete... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jayllo-c/ip.git completed! +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/PateShin/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/PateShin/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [391/428] Analyzing https://github.com/jayllo-c/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KinTatHo/ip.git... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KinTatHo/ip.git to complete... +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jayllo-c/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jayllo-c/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/PateShin/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/PateShin/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/PateShin/ip.git (master) completed! -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jayllo-c/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jayllo-c/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jayllo-c/ip.git (master) completed! +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gosongying/ip.git completed! +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [392/428] Analyzing https://github.com/gosongying/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Rishit02/ip.git... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Rishit02/ip.git to complete... +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gosongying/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gosongying/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "ShanylOng/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/ShanylOng/ip.git' 'repos/ShanylOng_ip/ip_bare' on path . : Cloning into bare repository 'repos/ShanylOng_ip/ip_bare'... @@ -7290,481 +7318,451 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KinTatHo/ip.git... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KinTatHo/ip.git to complete... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jayllo-c/ip.git completed! -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [390/428] Analyzing https://github.com/jayllo-c/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Rishit02/ip.git... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Rishit02/ip.git to complete... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jayllo-c/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jayllo-c/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gosongying/ip.git completed! -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [391/428] Analyzing https://github.com/gosongying/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/rahhulleee/ip.git... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/rahhulleee/ip.git to complete... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gosongying/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gosongying/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jayllo-c/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jayllo-c/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jayllo-c/ip.git (master) completed! -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gosongying/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gosongying/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gosongying/ip.git (master) completed! +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/biinnnggggg/ip.git completed! -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [392/428] Analyzing https://github.com/biinnnggggg/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [393/428] Analyzing https://github.com/biinnnggggg/ip.git (master)... +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chaaaaun/ip.git... -Jan 30, 2024 6:33:13 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chaaaaun/ip.git to complete... -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gosongying/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:22 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/biinnnggggg/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/biinnnggggg/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gosongying/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gosongying/ip.git (master) completed! -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/biinnnggggg/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/biinnnggggg/ip.git (master)... -Jan 30, 2024 6:33:13 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/biinnnggggg/ip.git (master) completed! -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/KinTatHo/ip.git completed! -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [393/428] Analyzing https://github.com/KinTatHo/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [394/428] Analyzing https://github.com/KinTatHo/ip.git (master)... +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JerryO3/ip.git... -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JerryO3/ip.git to complete... -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KinTatHo/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KinTatHo/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KinTatHo/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KinTatHo/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KinTatHo/ip.git (master) completed! -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Rishit02/ip.git completed! -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rahhulleee/ip.git completed! -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [394/428] Analyzing https://github.com/Rishit02/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tzaph/ip.git... -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [395/428] Analyzing https://github.com/Rishit02/ip.git (master)... +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tzaph/ip.git to complete... -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [395/428] Analyzing https://github.com/rahhulleee/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RingoftheKing/ip.git... -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RingoftheKing/ip.git to complete... -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Rishit02/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Rishit02/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rahhulleee/ip.git completed! +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RingoftheKing/ip.git... +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [396/428] Analyzing https://github.com/rahhulleee/ip.git (master)... +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RingoftheKing/ip.git to complete... +Jan 30, 2024 1:32:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KinTatHo/ip.git (master)... +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rahhulleee/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rahhulleee/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KinTatHo/ip.git (master)... +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KinTatHo/ip.git (master) completed! +Jan 30, 2024 1:32:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Rishit02/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rahhulleee/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chaaaaun/ip.git completed! -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [396/428] Analyzing https://github.com/chaaaaun/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ashleyclx/ip.git... -Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Rishit02/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Rishit02/ip.git (master) completed! -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ashleyclx/ip.git to complete... -Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rahhulleee/ip.git (master)... +Jan 30, 2024 1:32:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/rahhulleee/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/rahhulleee/ip.git (master) completed! -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chaaaaun/ip.git completed! +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [397/428] Analyzing https://github.com/chaaaaun/ip.git (master)... +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ashleyclx/ip.git... +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ashleyclx/ip.git to complete... +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chaaaaun/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chaaaaun/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chaaaaun/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chaaaaun/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chaaaaun/ip.git (master) completed! -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JerryO3/ip.git completed! -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [397/428] Analyzing https://github.com/JerryO3/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/laney0808/ip.git... -Jan 30, 2024 6:33:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/laney0808/ip.git to complete... -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JerryO3/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JerryO3/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JerryO3/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JerryO3/ip.git (master)... -Jan 30, 2024 6:33:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JerryO3/ip.git (master) completed! -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tzaph/ip.git completed! -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RingoftheKing/ip.git completed! -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepos INFO: [398/428] Analyzing https://github.com/tzaph/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/laney0808/ip.git... +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/laney0808/ip.git to complete... +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JerryO3/ip.git completed! +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tzaph/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tzaph/ip.git (master)... +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [399/428] Analyzing https://github.com/JerryO3/ip.git (master)... +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NatLeong/ip.git... -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NatLeong/ip.git to complete... -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [399/428] Analyzing https://github.com/RingoftheKing/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RingoftheKing/ip.git completed! +Jan 30, 2024 1:32:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [400/428] Analyzing https://github.com/RingoftheKing/ip.git (master)... +Jan 30, 2024 1:32:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jajared/ip.git... -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JerryO3/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JerryO3/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jajared/ip.git to complete... -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tzaph/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tzaph/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RingoftheKing/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RingoftheKing/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RingoftheKing/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tzaph/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RingoftheKing/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ashleyclx/ip.git completed! -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RingoftheKing/ip.git (master) completed! -Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [401/428] Analyzing https://github.com/ashleyclx/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kailashgautham/ip.git... +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tzaph/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tzaph/ip.git (master) completed! -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [400/428] Analyzing https://github.com/ashleyclx/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kailashgautham/ip.git... -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kailashgautham/ip.git to complete... -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RingoftheKing/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ashleyclx/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ashleyclx/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RingoftheKing/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RingoftheKing/ip.git (master) completed! +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JerryO3/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JerryO3/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JerryO3/ip.git (master) completed! +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ashleyclx/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ashleyclx/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ashleyclx/ip.git (master) completed! -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/laney0808/ip.git completed! -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [401/428] Analyzing https://github.com/laney0808/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jajared/ip.git completed! +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [402/428] Analyzing https://github.com/Jajared/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/J-wang-CSMA/ip.git... -Jan 30, 2024 6:33:15 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/J-wang-CSMA/ip.git to complete... -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/laney0808/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/laney0808/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/laney0808/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/laney0808/ip.git (master)... -Jan 30, 2024 6:33:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/laney0808/ip.git (master) completed! -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/NatLeong/ip.git completed! -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jajared/ip.git completed! -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [402/428] Analyzing https://github.com/NatLeong/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [403/428] Analyzing https://github.com/NatLeong/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kinjalagarwal1810/ip.git... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kinjalagarwal1810/ip.git to complete... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [403/428] Analyzing https://github.com/Jajared/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/NewtonKoh/ip.git... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/NewtonKoh/ip.git to complete... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NatLeong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NatLeong/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jajared/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jajared/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NatLeong/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NatLeong/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NatLeong/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/NatLeong/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NatLeong/ip.git (master) completed! -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Jajared/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jajared/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jajared/ip.git (master) completed! -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kailashgautham/ip.git completed! -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepos INFO: [404/428] Analyzing https://github.com/kailashgautham/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/NewtonKoh/ip.git... +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/NewtonKoh/ip.git to complete... +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/laney0808/ip.git completed! +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [405/428] Analyzing https://github.com/laney0808/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/UdhayaShan1/ip.git... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/UdhayaShan1/ip.git to complete... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kailashgautham/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kailashgautham/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/laney0808/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/laney0808/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/laney0808/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/laney0808/ip.git (master)... +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/laney0808/ip.git (master) completed! +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kailashgautham/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kailashgautham/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kailashgautham/ip.git (master) completed! -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/J-wang-CSMA/ip.git completed! -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [405/428] Analyzing https://github.com/J-wang-CSMA/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [406/428] Analyzing https://github.com/J-wang-CSMA/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanqinyong/ip.git... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanqinyong/ip.git to complete... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kinjalagarwal1810/ip.git completed! +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/theman-oj10/ip.git... +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [407/428] Analyzing https://github.com/kinjalagarwal1810/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/theman-oj10/ip.git to complete... +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/J-wang-CSMA/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/J-wang-CSMA/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kinjalagarwal1810/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kinjalagarwal1810/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kinjalagarwal1810/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/J-wang-CSMA/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kinjalagarwal1810/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kinjalagarwal1810/ip.git (master) completed! +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NewtonKoh/ip.git completed! +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/J-wang-CSMA/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/J-wang-CSMA/ip.git (master) completed! -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NewtonKoh/ip.git completed! -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [406/428] Analyzing https://github.com/NewtonKoh/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/theman-oj10/ip.git... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/theman-oj10/ip.git to complete... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kinjalagarwal1810/ip.git completed! -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [408/428] Analyzing https://github.com/NewtonKoh/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/c-j-lh/ip.git... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [407/428] Analyzing https://github.com/kinjalagarwal1810/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/c-j-lh/ip.git to complete... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/NewtonKoh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/NewtonKoh/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kinjalagarwal1810/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kinjalagarwal1810/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kinjalagarwal1810/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/UdhayaShan1/ip.git completed! -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kinjalagarwal1810/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jovantanyk/ip.git... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [408/428] Analyzing https://github.com/UdhayaShan1/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kinjalagarwal1810/ip.git (master) completed! -Jan 30, 2024 6:33:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jovantanyk/ip.git to complete... -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NewtonKoh/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/UdhayaShan1/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/UdhayaShan1/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/NewtonKoh/ip.git (master)... -Jan 30, 2024 6:33:16 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NewtonKoh/ip.git (master) completed! -Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/UdhayaShan1/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/UdhayaShan1/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/UdhayaShan1/ip.git (master) completed! -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/UdhayaShan1/ip.git completed! +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [409/428] Analyzing https://github.com/UdhayaShan1/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jovantanyk/ip.git... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jovantanyk/ip.git to complete... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanqinyong/ip.git completed! -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [409/428] Analyzing https://github.com/tanqinyong/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [410/428] Analyzing https://github.com/tanqinyong/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kappaccinoh/ip.git... -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kappaccinoh/ip.git to complete... -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/UdhayaShan1/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/UdhayaShan1/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/theman-oj10/ip.git completed! +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanqinyong/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanqinyong/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [411/428] Analyzing https://github.com/theman-oj10/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/itstrueitstrueitsrealitsreal/ip.git... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/itstrueitstrueitsrealitsreal/ip.git to complete... +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/theman-oj10/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/theman-oj10/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanqinyong/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/theman-oj10/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanqinyong/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanqinyong/ip.git (master) completed! -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/theman-oj10/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/theman-oj10/ip.git (master) completed! +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/c-j-lh/ip.git completed! -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [410/428] Analyzing https://github.com/c-j-lh/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/itstrueitstrueitsrealitsreal/ip.git... -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/itstrueitstrueitsrealitsreal/ip.git to complete... -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/c-j-lh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/c-j-lh/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/theman-oj10/ip.git completed! -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner spawnCloneProcess +Jan 30, 2024 1:32:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [412/428] Analyzing https://github.com/c-j-lh/ip.git (master)... +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/agreatdayy/ip.git... -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [411/428] Analyzing https://github.com/theman-oj10/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/agreatdayy/ip.git to complete... -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jovantanyk/ip.git completed! -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [412/428] Analyzing https://github.com/jovantanyk/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SampsonYe1999/ip.git... -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/theman-oj10/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/theman-oj10/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SampsonYe1999/ip.git to complete... -Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/UdhayaShan1/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/c-j-lh/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/c-j-lh/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/UdhayaShan1/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/UdhayaShan1/ip.git (master) completed! +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/c-j-lh/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/c-j-lh/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/c-j-lh/ip.git (master) completed! -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jovantanyk/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jovantanyk/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jovantanyk/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jovantanyk/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jovantanyk/ip.git (master) completed! -Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/theman-oj10/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/theman-oj10/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/theman-oj10/ip.git (master) completed! -Jan 30, 2024 6:33:17 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Kappaccinoh/ip.git completed! -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator analyzeRepos +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepos INFO: [413/428] Analyzing https://github.com/Kappaccinoh/ip.git (master)... -Jan 30, 2024 6:33:17 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SampsonYe1999/ip.git... +Jan 30, 2024 1:32:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SampsonYe1999/ip.git to complete... +Jan 30, 2024 1:32:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jovantanyk/ip.git completed! +Jan 30, 2024 1:32:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/itstrueitstrueitsrealitsreal/ip.git completed! +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [414/428] Analyzing https://github.com/jovantanyk/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [415/428] Analyzing https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kappaccinoh/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kappaccinoh/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kappaccinoh/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kappaccinoh/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kappaccinoh/ip.git (master) completed! -Jan 30, 2024 6:33:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/itstrueitstrueitsrealitsreal/ip.git completed! -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [414/428] Analyzing https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jovantanyk/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jovantanyk/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/itstrueitstrueitsrealitsreal/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.report.RepoCloner waitForCloneProcess +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jovantanyk/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jovantanyk/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jovantanyk/ip.git (master) completed! +Jan 30, 2024 1:32:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/agreatdayy/ip.git completed! -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [415/428] Analyzing https://github.com/agreatdayy/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SampsonYe1999/ip.git completed! -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [416/428] Analyzing https://github.com/SampsonYe1999/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator updateRepoConfig +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kappaccinoh/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [416/428] Analyzing https://github.com/agreatdayy/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/agreatdayy/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Jan 30, 2024 1:32:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/agreatdayy/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SampsonYe1999/ip.git (master) does not contain a standalone config file. -Jan 30, 2024 6:33:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SampsonYe1999/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SampsonYe1999/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kappaccinoh/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kappaccinoh/ip.git (master) completed! +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/agreatdayy/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SampsonYe1999/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SampsonYe1999/ip.git (master) completed! -Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/agreatdayy/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/agreatdayy/ip.git (master) completed! -Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Jan 30, 2024 1:32:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator analyzeRepo +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/itstrueitstrueitsrealitsreal/ip.git (master) completed! -Jan 30, 2024 6:33:18 AM reposense.report.ReportGenerator generateReposReport +Jan 30, 2024 1:32:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SampsonYe1999/ip.git completed! +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [417/428] Analyzing https://github.com/SampsonYe1999/ip.git (master)... +Jan 30, 2024 1:32:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SampsonYe1999/ip.git (master) does not contain a standalone config file. +Jan 30, 2024 1:32:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SampsonYe1999/ip.git (master)... +Jan 30, 2024 1:32:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SampsonYe1999/ip.git (master)... +Jan 30, 2024 1:32:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SampsonYe1999/ip.git (master)... +Jan 30, 2024 1:32:27 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SampsonYe1999/ip.git (master) completed! +Jan 30, 2024 1:32:27 PM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/ip-dashboard/ip-dashboard/reposense-report -Jan 30, 2024 6:33:19 AM reposense.RepoSense main -INFO: Elapsed processing time: 1 minute(s) 23.91 second(s) +Jan 30, 2024 1:32:27 PM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 6.39 second(s) diff --git a/rickkoh_ip_master/authorship.json b/rickkoh_ip_master/authorship.json index e3e4e7b5..8deb429b 100644 --- a/rickkoh_ip_master/authorship.json +++ b/rickkoh_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":" * Class representing a Deadline task with a due date.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":" * Inherits from the Task class and adds a deadline date.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"rickkoh"},"content":" private String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new Deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" * Initializes the task with a title and a deadline date.","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" * @param by The deadline date for the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" public Deadline(String title, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":" super(title);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the Deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" * Format: \"[D][\\u2713 or \\u2718] Title (by: deadline date)\" for completed or","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" * pending tasks respectively.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the Deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"rickkoh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":31}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-23"},{"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":"rickkoh"},"content":" // Greet user","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":" String logo \u003d \"\\n /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$$ /$$ /$$\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":" + \"| $$$ /$$$ /$$__ $$| $$__ $$|__ $$__/| $$ /$$/\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" + \"| $$$$ /$$$$| $$ \\\\ $$| $$ \\\\ $$ | $$ \\\\ $$ /$$/ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":" + \"| $$ $$/$$ $$| $$ | $$| $$$$$$$/ | $$ \\\\ $$$$/ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" + \"| $$ $$$| $$| $$ | $$| $$__ $$ | $$ \\\\ $$/ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" + \"| $$\\\\ $ | $$| $$ | $$| $$ \\\\ $$ | $$ | $$ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" + \"| $$ \\\\/ | $$| $$$$$$/| $$ | $$ | $$ | $$ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" + \"|__/ |__/ \\\\______/ |__/ |__/ |__/ |__/ \\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"\\nHello I\u0027m\\n\" + logo);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"What can I do for you?\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" // Main loop for command processing","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":" // Read and process user input","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":" String[] tokens \u003d command.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"\\n\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\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\u003d\u003d\u003d\u003d\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"rickkoh"},"content":" // Handle different commands","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"rickkoh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"rickkoh"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"rickkoh"},"content":" // Exit program","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"rickkoh"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"rickkoh"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"rickkoh"},"content":" // List all tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"rickkoh"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"rickkoh"},"content":" System.out.println((i + 1) + \". \" + tasks.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"rickkoh"},"content":" } else if (tokens[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"rickkoh"},"content":" // Add a new todo task","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"rickkoh"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"rickkoh"},"content":" String title \u003d tokens[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"rickkoh"},"content":" Todo newTodo \u003d new Todo(title);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"rickkoh"},"content":" tasks.add(newTodo);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"rickkoh"},"content":" System.out.println(newTodo.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"rickkoh"},"content":" } else if (tokens[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"rickkoh"},"content":" // Add a new deadline task","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"rickkoh"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"rickkoh"},"content":" String[] deadlineTokens \u003d tokens[1].split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"rickkoh"},"content":" if (deadlineTokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The deadline details cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"rickkoh"},"content":" String title \u003d deadlineTokens[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"rickkoh"},"content":" String by \u003d deadlineTokens[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"rickkoh"},"content":" Deadline newDeadline \u003d new Deadline(title, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"rickkoh"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"rickkoh"},"content":" System.out.println(newDeadline.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"rickkoh"},"content":" } else if (tokens[0].equals(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"rickkoh"},"content":" // Add a new event task","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"rickkoh"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"rickkoh"},"content":" String[] eventTokens \u003d tokens[1].split(\" /at \");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"rickkoh"},"content":" if (eventTokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The event details cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"rickkoh"},"content":" String title \u003d eventTokens[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"rickkoh"},"content":" String at \u003d eventTokens[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"rickkoh"},"content":" Event newEvent \u003d new Event(title, at);","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"rickkoh"},"content":" tasks.add(newEvent);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"rickkoh"},"content":" System.out.println(newEvent.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"rickkoh"},"content":" } else if (tokens[0].equals(\"done\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"rickkoh"},"content":" // Mark a task as done","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"rickkoh"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"rickkoh"},"content":" if (!tokens[1].matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number must be an integer.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"rickkoh"},"content":" int i \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"rickkoh"},"content":" if (i \u003c 0 || i \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"rickkoh"},"content":" tasks.get(i).markDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"rickkoh"},"content":" System.out.println(tasks.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"rickkoh"},"content":" } else if (tokens[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"rickkoh"},"content":" // Mark a task as done","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"rickkoh"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"rickkoh"},"content":" if (!tokens[1].matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number must be an integer.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"rickkoh"},"content":" int i \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"rickkoh"},"content":" if (i \u003c 0 || i \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"rickkoh"},"content":" tasks.remove(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"rickkoh"},"content":" System.out.println(tasks.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"rickkoh"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"rickkoh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"rickkoh"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"\\n\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\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\u003d\u003d\u003d\u003d\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"rickkoh"},"content":" scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"rickkoh":122,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":" * Class representing an Event task with a location or time.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":" * Inherits from the Task class and adds event details.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"rickkoh"},"content":" private String at;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new Event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" * Initializes the task with a title and event details.","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" * @param at The location or time of the event.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" public Event(String title, String at) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":" super(title);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the Event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" * Format: \"[E][\\u2713 or \\u2718] Title (at: event details)\" for completed or","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" * pending tasks respectively.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the Event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"rickkoh"},"content":" return \"[E]\" + super.toString() + \" (at: \" + at + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":31}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":" * Class representing a task with an identifier, title, and completion status.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":" * Each task has a unique ID, a title, and a boolean flag to mark it as done or","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":" * not.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"rickkoh"},"content":"class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"rickkoh"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":" private final int id;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":" private String title;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new task.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" * Initializes the task with a unique ID and the specified title.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" * The task is initially marked as not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":" public Task(String title) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" this.id \u003d ++count;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":" this.title \u003d title;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":" * Retrieves the unique ID of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":" * @return The ID of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"rickkoh"},"content":" public int getId() {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"rickkoh"},"content":" return this.id;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"rickkoh"},"content":" * Marks the task as done by setting its completion status to true.","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"rickkoh"},"content":" public void markDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"rickkoh"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"rickkoh"},"content":" * Format: \"[\\u2713] Title\" for completed tasks, \"[\\u2718] Title\" for pending","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"rickkoh"},"content":" * tasks.","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"rickkoh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"rickkoh"},"content":" return (isDone ? \"[\\u2713] \" : \"[\\u2718] \") + title;","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":52}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":" * Class representing a Todo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":" * Inherits from the Task class and adds specific formatting to the toString","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":" * method.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"rickkoh"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new Todo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":" * Calls the constructor of the parent Task class.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the todo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" public Todo(String title) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" super(title);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the Todo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":" * Format: \"[T][\\u2713 or \\u2718] Title\" for completed or pending tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" * respectively.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the Todo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":"event project meeting /at Mon 2-4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":5}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":" * Class representing a Deadline task with a due date.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":" * Inherits from the Task class and adds a deadline date.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"rickkoh"},"content":" private String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new Deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" * Initializes the task with a title and a deadline date.","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" * @param by The deadline date for the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" public Deadline(String title, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":" super(title);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new Deadline task.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" * Initializes the task with a title, a deadline date and a completion status.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the deadline task.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" * @param by The deadline date for the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":" public Deadline(String title, String by, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"rickkoh"},"content":" super(title, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"rickkoh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the Deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"rickkoh"},"content":" * Format: \"[D][\\u2713 or \\u2718] Title (by: deadline date)\" for completed or","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"rickkoh"},"content":" * pending tasks respectively.","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the Deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"rickkoh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"rickkoh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the Deadline task for saving to disk.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"rickkoh"},"content":" * Format: \"D | 0 or 1 | Title | deadline date\" for pending or completed tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"rickkoh"},"content":" * respectively.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the Deadline task for saving","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"rickkoh"},"content":" * to disk.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"rickkoh"},"content":" public String serialize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"rickkoh"},"content":" return \"D | \" + super.serialize() + \" | \" + by;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"rickkoh"},"content":" * Deserializes a Deadline task from a string representation.","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"rickkoh"},"content":" * Format: \"D | 0 or 1 | Title | deadline date\" for pending or completed tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"rickkoh"},"content":" * respectively.","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"rickkoh"},"content":" * @param text The string representation of the Deadline task.","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"rickkoh"},"content":" * @return The Deadline task represented by the string.","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"rickkoh"},"content":" public static Deadline deserialize(String text) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"rickkoh"},"content":" String[] parts \u003d text.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"rickkoh"},"content":" return new Deadline(parts[2], parts[3], parts[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":70}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-23"},{"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":"rickkoh"},"content":" // Greet user","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":" String logo \u003d \"\\n /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$$ /$$ /$$\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":" + \"| $$$ /$$$ /$$__ $$| $$__ $$|__ $$__/| $$ /$$/\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" + \"| $$$$ /$$$$| $$ \\\\ $$| $$ \\\\ $$ | $$ \\\\ $$ /$$/ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":" + \"| $$ $$/$$ $$| $$ | $$| $$$$$$$/ | $$ \\\\ $$$$/ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" + \"| $$ $$$| $$| $$ | $$| $$__ $$ | $$ \\\\ $$/ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" + \"| $$\\\\ $ | $$| $$ | $$| $$ \\\\ $$ | $$ | $$ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" + \"| $$ \\\\/ | $$| $$$$$$/| $$ | $$ | $$ | $$ \\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" + \"|__/ |__/ \\\\______/ |__/ |__/ |__/ |__/ \\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"\\nHello I\u0027m\\n\" + logo);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"What can I do for you?\\n\");","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" // Main loop for command processing","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":" // Read and process user input","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":" String[] tokens \u003d command.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" tasks \u003d TaskLoader.load();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"\\n\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\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\u003d\u003d\u003d\u003d\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"rickkoh"},"content":" // Handle different commands","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"rickkoh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"rickkoh"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"rickkoh"},"content":" // Exit program","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"rickkoh"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"rickkoh"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"rickkoh"},"content":" // List all tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"rickkoh"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"rickkoh"},"content":" System.out.println((i + 1) + \". \" + tasks.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"rickkoh"},"content":" } else if (tokens[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"rickkoh"},"content":" // Add a new todo task","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"rickkoh"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"rickkoh"},"content":" String title \u003d tokens[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"rickkoh"},"content":" Todo newTodo \u003d new Todo(title);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"rickkoh"},"content":" tasks.add(newTodo);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"rickkoh"},"content":" System.out.println(newTodo.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"rickkoh"},"content":" } else if (tokens[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"rickkoh"},"content":" // Add a new deadline task","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"rickkoh"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"rickkoh"},"content":" String[] deadlineTokens \u003d tokens[1].split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"rickkoh"},"content":" if (deadlineTokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The deadline details cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"rickkoh"},"content":" String title \u003d deadlineTokens[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"rickkoh"},"content":" String by \u003d deadlineTokens[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"rickkoh"},"content":" Deadline newDeadline \u003d new Deadline(title, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"rickkoh"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"rickkoh"},"content":" System.out.println(newDeadline.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"rickkoh"},"content":" } else if (tokens[0].equals(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"rickkoh"},"content":" // Add a new event task","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"rickkoh"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"rickkoh"},"content":" String[] eventTokens \u003d tokens[1].split(\" /at \");","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"rickkoh"},"content":" if (eventTokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The event details cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"rickkoh"},"content":" String title \u003d eventTokens[0];","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"rickkoh"},"content":" String at \u003d eventTokens[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"rickkoh"},"content":" Event newEvent \u003d new Event(title, at);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"rickkoh"},"content":" tasks.add(newEvent);","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"rickkoh"},"content":" System.out.println(newEvent.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"rickkoh"},"content":" } else if (tokens[0].equals(\"done\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"rickkoh"},"content":" // Mark a task as done","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"rickkoh"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"rickkoh"},"content":" if (!tokens[1].matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number must be an integer.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"rickkoh"},"content":" int i \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"rickkoh"},"content":" if (i \u003c 0 || i \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"rickkoh"},"content":" tasks.get(i).markDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"rickkoh"},"content":" System.out.println(tasks.get(i).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"rickkoh"},"content":" } else if (tokens[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"rickkoh"},"content":" // Mark a task as done","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"rickkoh"},"content":" if (tokens.length \u003c 2) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"rickkoh"},"content":" if (!tokens[1].matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number must be an integer.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"rickkoh"},"content":" int i \u003d Integer.parseInt(tokens[1]) - 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"rickkoh"},"content":" if (i \u003c 0 || i \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! The task number is invalid.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"rickkoh"},"content":" Task removedTask \u003d tasks.remove(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"rickkoh"},"content":" System.out.println(removedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"rickkoh"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"rickkoh"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"rickkoh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"rickkoh"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"rickkoh"},"content":" System.out.println(\"\\n\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\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\u003d\u003d\u003d\u003d\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"rickkoh"},"content":" TaskLoader.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"rickkoh"},"content":" scanner.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"rickkoh":124,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":" * Class representing an Event task with a location or time.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":" * Inherits from the Task class and adds event details.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"rickkoh"},"content":" private String at;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new Event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" * Initializes the task with a title and event details.","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" * @param at The location or time of the event.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" public Event(String title, String at) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":" super(title);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new Event task.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" * Initializes the task with a title, event details and a completion status.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the event task.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" * @param at The location or time of the event.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":" public Event(String title, String at, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"rickkoh"},"content":" super(title, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"rickkoh"},"content":" this.at \u003d at;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the Event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"rickkoh"},"content":" * Format: \"[E][\\u2713 or \\u2718] Title (at: event details)\" for completed or","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"rickkoh"},"content":" * pending tasks respectively.","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the Event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"rickkoh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"rickkoh"},"content":" return \"[E]\" + super.toString() + \" (at: \" + at + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the Event task for saving to disk.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"rickkoh"},"content":" * Format: \"E | 0 or 1 | Title | event details\" for pending or completed tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"rickkoh"},"content":" * respectively.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the Event task for saving","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"rickkoh"},"content":" * to disk.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"rickkoh"},"content":" public String serialize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"rickkoh"},"content":" return \"E | \" + super.serialize() + \" | \" + at;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"rickkoh"},"content":" * Deserializes an Event task from a string representation.","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"rickkoh"},"content":" * Format: \"E | 0 or 1 | Title | event details\" for pending or completed tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"rickkoh"},"content":" * respectively.","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the Event task for saving","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"rickkoh"},"content":" * to disk.","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"rickkoh"},"content":" public static Event deserialize(String text) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"rickkoh"},"content":" String[] parts \u003d text.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"rickkoh"},"content":" return new Event(parts[2], parts[3], parts[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":70}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":" * Class representing a task with an identifier, title, and completion status.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":" * Each task has a unique ID, a title, and a boolean flag to mark it as done or","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":" * not.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"rickkoh"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"rickkoh"},"content":" private String title;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new task.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" * Initializes the task with a unique ID and the specified title.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" * The task is initially marked as not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" public Task(String title) {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":" this.title \u003d title;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new task.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":" * Initializes the task with a unique ID, the specified title and completion","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" * status.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"rickkoh"},"content":" public Task(String title, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"rickkoh"},"content":" this.title \u003d title;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"rickkoh"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"rickkoh"},"content":" * Marks the task as done by setting its completion status to true.","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"rickkoh"},"content":" public void markDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"rickkoh"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"rickkoh"},"content":" * Format: \"[\\u2713] Title\" for completed tasks, \"[\\u2718] Title\" for pending","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"rickkoh"},"content":" * tasks.","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"rickkoh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"rickkoh"},"content":" return (isDone ? \"[\\u2713] \" : \"[\\u2718] \") + title;","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"rickkoh"},"content":" public String serialize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"rickkoh"},"content":" return (this.isDone ? \"1\" : \"0\") + \" | \" + title;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":57}},{"path":"src/main/java/TaskLoader.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"rickkoh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":"public class TaskLoader {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" public static List\u003cTask\u003e load() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" FileReader reader \u003d new FileReader(\"tasks.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(reader);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" String line;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" char taskType \u003d line.charAt(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":" switch (taskType) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" tasks.add(Todo.deserialize(line));","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" tasks.add(Deadline.deserialize(line));","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":" tasks.add(Event.deserialize(line));","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"rickkoh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"rickkoh"},"content":" bufferedReader.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"rickkoh"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"rickkoh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"rickkoh"},"content":" return new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"rickkoh"},"content":" public static void save(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"rickkoh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"rickkoh"},"content":" FileWriter writer \u003d new FileWriter(\"tasks.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"rickkoh"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"rickkoh"},"content":" writer.write(task.serialize() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"rickkoh"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"rickkoh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"rickkoh":50}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":" * Class representing a Todo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":" * Inherits from the Task class and adds specific formatting to the toString","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":" * method.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"rickkoh"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new Todo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"rickkoh"},"content":" * Calls the constructor of the parent Task class.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the todo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"rickkoh"},"content":" public Todo(String title) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"rickkoh"},"content":" super(title);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"rickkoh"},"content":" * Constructor to create a new Todo task.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"rickkoh"},"content":" * Calls the constructor of the parent Task class.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"rickkoh"},"content":" * @param title The title of the todo task.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"rickkoh"},"content":" public Todo(String title, boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"rickkoh"},"content":" super(title, isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the Todo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"rickkoh"},"content":" * Format: \"[T][\\u2713 or \\u2718] Title\" for completed or pending tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"rickkoh"},"content":" * respectively.","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the Todo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"rickkoh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"rickkoh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"rickkoh"},"content":" * Provides a string representation of the Todo task for saving to disk.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"rickkoh"},"content":" * Format: \"T | 0 or 1 | Title\" for pending or completed tasks respectively.","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"rickkoh"},"content":" * @return The formatted string representation of the Todo task for saving to","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"rickkoh"},"content":" * disk.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"rickkoh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"rickkoh"},"content":" public String serialize() {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"rickkoh"},"content":" return \"T | \" + super.serialize();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"rickkoh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"rickkoh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"rickkoh"},"content":" * Deserializes a Todo task from a string representation.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"rickkoh"},"content":" * Format: \"T | 0 or 1 | Title\" for pending or completed tasks respectively.","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"rickkoh"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"rickkoh"},"content":" * @param text The string representation of the Todo task.","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"rickkoh"},"content":" * @return The Todo task represented by the string.","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"rickkoh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"rickkoh"},"content":" public static Todo deserialize(String text) {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"rickkoh"},"content":" String[] parts \u003d text.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"rickkoh"},"content":" return new Todo(parts[2], parts[1].equals(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"rickkoh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"rickkoh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":62}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rickkoh"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"rickkoh"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"rickkoh"},"content":"event project meeting /at Mon 2-4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"rickkoh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"rickkoh"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"rickkoh":5}}] diff --git a/rickkoh_ip_master/commits.json b/rickkoh_ip_master/commits.json index c7acd6f6..579732f0 100644 --- a/rickkoh_ip_master/commits.json +++ b/rickkoh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"rickkoh":[{"date":"2024-01-23","commitResults":[{"hash":"1c80eb00123ade2d111a94a77dd65a12c4fd1826","isMergeCommit":false,"messageTitle":"Updated Duke logo (to Morty) and implemented initial skeletal version.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"630a4b2abc48ab48ca2274887f114476255c5838","isMergeCommit":false,"messageTitle":"Add item to list and print list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":10}}}]},{"date":"2024-01-25","commitResults":[{"hash":"6965f59752f2d04ec71a559cca4f58312d13e317","isMergeCommit":false,"messageTitle":"Update Item class with status and ID, enhance list and done commands in Duke class","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":11}}},{"hash":"0c52ee5128d9f47d2744b0f74f48c41e79e7b267","isMergeCommit":false,"messageTitle":"Refactor code: Rename \u0027Item\u0027 class to \u0027Task\u0027 and adjust related variables and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"b9b4e15dbde84da554c5dbfdb85a6cb666680a83","isMergeCommit":false,"messageTitle":"Add support for creating and displaying Todo, Deadline, and Event tasks (implemented with inheritance).","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":1}}},{"hash":"cd8462cb45dadb1b88f8e628e97fdeb12f5faa51","isMergeCommit":false,"messageTitle":"Add javadoc and comments to document the code.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":0}}},{"hash":"b0cef9122148029e041b33b8b967ef057f6d4942","isMergeCommit":false,"messageTitle":"Refactor user input handling to use Scanner instead of System.console().","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"e8a63791b3b361f052efecb9ca9c12211ade399d","isMergeCommit":false,"messageTitle":"Update file permissions for text-ui-test/runtest.sh","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":0,"deletions":0}}},{"hash":"0dd017f9e42be3b59b1fa69246e169f59e0ee404","isMergeCommit":false,"messageTitle":"Refactor Todo, Deadline, and Event classes into each their own file.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":146}}},{"hash":"52eae7b3703cf8c9487e86300db0c96dca8b85b1","isMergeCommit":false,"messageTitle":"Add UI test for adding tasks and displaying task list","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"0de895a27cfc9ef42c2693ba3e9b4e19599ab4be","isMergeCommit":false,"messageTitle":"Add DukeException class for handling custom exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"d04fc9ad47f47a2859a0c1571a382ea3fd644168","isMergeCommit":false,"messageTitle":"Refactor command handling logic and error handling in Duke.java","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":48}}},{"hash":"e1f1ed4aed77c7c8284adcb679feaba7b50d264d","isMergeCommit":false,"messageTitle":"Add functionality to delete tasks from the task list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"rickkoh":{"java":269,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"rickkoh":52520.695},"authorDisplayNameMap":{"rickkoh":"KOH ..RICK"}} +{"authorDailyContributionsMap":{"rickkoh":[{"date":"2024-01-23","commitResults":[{"hash":"1c80eb00123ade2d111a94a77dd65a12c4fd1826","isMergeCommit":false,"messageTitle":"Updated Duke logo (to Morty) and implemented initial skeletal version.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"630a4b2abc48ab48ca2274887f114476255c5838","isMergeCommit":false,"messageTitle":"Add item to list and print list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":10}}}]},{"date":"2024-01-25","commitResults":[{"hash":"6965f59752f2d04ec71a559cca4f58312d13e317","isMergeCommit":false,"messageTitle":"Update Item class with status and ID, enhance list and done commands in Duke class","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":11}}},{"hash":"0c52ee5128d9f47d2744b0f74f48c41e79e7b267","isMergeCommit":false,"messageTitle":"Refactor code: Rename \u0027Item\u0027 class to \u0027Task\u0027 and adjust related variables and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"b9b4e15dbde84da554c5dbfdb85a6cb666680a83","isMergeCommit":false,"messageTitle":"Add support for creating and displaying Todo, Deadline, and Event tasks (implemented with inheritance).","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":1}}},{"hash":"cd8462cb45dadb1b88f8e628e97fdeb12f5faa51","isMergeCommit":false,"messageTitle":"Add javadoc and comments to document the code.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":0}}},{"hash":"b0cef9122148029e041b33b8b967ef057f6d4942","isMergeCommit":false,"messageTitle":"Refactor user input handling to use Scanner instead of System.console().","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"e8a63791b3b361f052efecb9ca9c12211ade399d","isMergeCommit":false,"messageTitle":"Update file permissions for text-ui-test/runtest.sh","messageBody":"","fileTypesAndContributionMap":{"sh":{"insertions":0,"deletions":0}}},{"hash":"0dd017f9e42be3b59b1fa69246e169f59e0ee404","isMergeCommit":false,"messageTitle":"Refactor Todo, Deadline, and Event classes into each their own file.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":146}}},{"hash":"52eae7b3703cf8c9487e86300db0c96dca8b85b1","isMergeCommit":false,"messageTitle":"Add UI test for adding tasks and displaying task list","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"0de895a27cfc9ef42c2693ba3e9b4e19599ab4be","isMergeCommit":false,"messageTitle":"Add DukeException class for handling custom exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"d04fc9ad47f47a2859a0c1571a382ea3fd644168","isMergeCommit":false,"messageTitle":"Refactor command handling logic and error handling in Duke.java","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":48}}},{"hash":"e1f1ed4aed77c7c8284adcb679feaba7b50d264d","isMergeCommit":false,"messageTitle":"Add functionality to delete tasks from the task list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"f4698ed9f90307689f20715bf4e47521295e4d84","isMergeCommit":false,"messageTitle":"Bug fix: Use correct index for delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"757c6bef2b7fe3d2a152421a7950666d45c38c37","isMergeCommit":false,"messageTitle":"Refactor Task class constructors and add serialize method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":8}}},{"hash":"e0630a8ff7f923968f46a1c59195ef3240da69ef","isMergeCommit":false,"messageTitle":"Add new constructor and method for serialization and deserialization","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":0}}},{"hash":"c6a5d0d717866a817ad8cf8c615ca7340411e575","isMergeCommit":false,"messageTitle":"Add TaskLoader class to load and save tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":0}}},{"hash":"e9de10600cf394b26490755b6f12225cecdcaf33","isMergeCommit":false,"messageTitle":"Refactor code to load and save tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"c5d9c5c8e4c022f0298f6c2cedd4b7a5e0c99ee7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"rickkoh":{"java":438,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"rickkoh":34111.414},"authorDisplayNameMap":{"rickkoh":"KOH ..RICK"}} diff --git a/sethteo_ip_master/authorship.json b/sethteo_ip_master/authorship.json index 6b9e2775..38a86c35 100644 --- a/sethteo_ip_master/authorship.json +++ b/sethteo_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"# SlayBot project template","lastModifiedDate":"2024-01-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":"sethteo"},"content":"3. After that, locate the `src/main/java/SlayBot.java` file, right-click it, and choose `Run SlayBot.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":"2024-01-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":{"sethteo":2,"-":22}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"T | Not Done | hello","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"T | Done | hi","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"E | Not Done | project meeting","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"sethteo":3}},{"path":"src/main/java/SlayBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"import entity.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"import exception.InvalidDeadlineException;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"import exception.InvalidEventException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":"import exception.InvalidTodoException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":"import exception.UnknownCommandException;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":"import java.util.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":"public class SlayBot {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":" public static final String DIVIDER \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":" public static final String WELCOME_TEXT \u003d \"Hello! I\u0027m SlayBot\\nWhat can I do for you?\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":" public static final String BYE_TEXT \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":" enum Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" BYE,","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":" LIST,","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" TODO,","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":" DEADLINE,","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" EVENT,","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" MARK,","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" UNMARK,","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":" DELETE,","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"sethteo"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"sethteo"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"sethteo"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"sethteo"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"sethteo"},"content":" boolean flag \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n\" + WELCOME_TEXT + \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"sethteo"},"content":" while (flag) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"sethteo"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"sethteo"},"content":" String[] splitWords \u003d input.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"sethteo"},"content":" Command command \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"sethteo"},"content":" while (command \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"sethteo"},"content":" command \u003d parseCommand(splitWords);","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"sethteo"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"sethteo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"sethteo"},"content":" System.out.println(\"Enter a valid command\");","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"sethteo"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"sethteo"},"content":" splitWords \u003d input.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"sethteo"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"sethteo"},"content":" case BYE:","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"sethteo"},"content":" flag \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n\" + BYE_TEXT + \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"sethteo"},"content":" case LIST:","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"sethteo"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"sethteo"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"sethteo"},"content":" System.out.println(i + 1 + \". \" + list.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"sethteo"},"content":" case TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"sethteo"},"content":" ToDo todo \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"sethteo"},"content":" todo \u003d parseTodo(splitWords);","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"sethteo"},"content":" } catch (InvalidTodoException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n\" + e.getMessage() + \"\\nPlease try again\" + \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"sethteo"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"sethteo"},"content":" list.add(todo);","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"sethteo"},"content":" System.out.println(\"Todo Task Added: \" + todo.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"sethteo"},"content":" System.out.println(\"You have \" + list.size() + \" tasks\");","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"sethteo"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"sethteo"},"content":" Deadline deadline \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"sethteo"},"content":" deadline \u003d parseDeadline(splitWords);","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"sethteo"},"content":" } catch (InvalidDeadlineException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n\" + e.getMessage() + \"\\nPlease try again\" + \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"sethteo"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"sethteo"},"content":" list.add(deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"sethteo"},"content":" System.out.println(\"Deadline Task Added: \" + deadline.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"sethteo"},"content":" System.out.println(\"You have \" + list.size() + \" tasks\");","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"sethteo"},"content":" case EVENT:","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"sethteo"},"content":" Event event \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"sethteo"},"content":" event \u003d parseEvent(splitWords);","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"sethteo"},"content":" } catch (InvalidEventException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n\" + e.getMessage() + \"\\nPlease try again\" + \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"sethteo"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"sethteo"},"content":" list.add(event);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"sethteo"},"content":" System.out.println(\"Event Task Added: \" + event.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"sethteo"},"content":" System.out.println(\"You have \" + list.size() + \" tasks\");","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"sethteo"},"content":" case MARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"sethteo"},"content":" Task taskToMark \u003d list.get(Integer.parseInt(splitWords[1]) - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"sethteo"},"content":" taskToMark.setMarked(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\nNice! I\u0027ve marked this task as done:\\n\" + taskToMark.toString() +","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"sethteo"},"content":" \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"sethteo"},"content":" case UNMARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"sethteo"},"content":" Task taskToUnmark \u003d list.get(Integer.parseInt(splitWords[1]) - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"sethteo"},"content":" taskToUnmark.setMarked(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\nOK, I\u0027ve marked this task as not done yet:\\n\" + taskToUnmark.toString() +","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"sethteo"},"content":" \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"sethteo"},"content":" case DELETE:","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"sethteo"},"content":" int indexToDelete \u003d Integer.parseInt(splitWords[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"sethteo"},"content":" list.remove(indexToDelete - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n Successful deletion \\n You now have \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"sethteo"},"content":" list.size() + \" tasks\\n\" + DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"sethteo"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n Please input a valid index\\n\" + DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"sethteo"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"sethteo"},"content":" private static Deadline parseDeadline(String[] arr) throws InvalidDeadlineException {","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"sethteo"},"content":" String deadline_title \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"sethteo"},"content":" String dateTime \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"sethteo"},"content":" for (int i \u003d 1; i \u003c arr.length; i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"sethteo"},"content":" if (arr[i].equals(\"/by\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"sethteo"},"content":" dateTime \u003d arr[i + 1];","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"sethteo"},"content":" i++;","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"sethteo"},"content":" deadline_title +\u003d arr[i] + \" \";","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"sethteo"},"content":" if (deadline_title.isEmpty() \u0026\u0026 dateTime.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"sethteo"},"content":" throw new InvalidDeadlineException(\"OOPS!!! The description and date of a Deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"sethteo"},"content":" } else if (deadline_title.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"sethteo"},"content":" throw new InvalidDeadlineException(\"OOPS!!! The description of a Deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"sethteo"},"content":" } else if (dateTime.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"sethteo"},"content":" throw new InvalidDeadlineException(\"OOPS!!! The date of a Deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"sethteo"},"content":" return new Deadline(deadline_title, dateTime);","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"sethteo"},"content":" private static ToDo parseTodo(String[] arr) throws InvalidTodoException {","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"sethteo"},"content":" String todo_title \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"sethteo"},"content":" if (arr.length - 1 \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"sethteo"},"content":" throw new InvalidTodoException(\"OOPS!!! The description of a Todo cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"sethteo"},"content":" for (int i \u003d 1; i \u003c arr.length; i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"sethteo"},"content":" todo_title +\u003d arr[i];","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"sethteo"},"content":" if (i !\u003d arr.length - 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"sethteo"},"content":" todo_title +\u003d \" \";","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"sethteo"},"content":" return new ToDo(todo_title);","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"sethteo"},"content":" private static Event parseEvent(String[] splitWords) throws InvalidEventException {","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"sethteo"},"content":" String combinedWord \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"sethteo"},"content":" for (int i \u003d 1; i \u003c splitWords.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"sethteo"},"content":" combinedWord +\u003d splitWords[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"sethteo"},"content":" int indexFrom \u003d combinedWord.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"sethteo"},"content":" int indexTo \u003d combinedWord.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":204,"author":{"gitId":"sethteo"},"content":" if (splitWords.length - 1 \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"sethteo"},"content":" throw new InvalidEventException(\"OOPS!!! The description of an Event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"sethteo"},"content":" } else if (indexFrom \u003c 0 || indexTo \u003c 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"sethteo"},"content":" throw new InvalidEventException(\"OOPS!!! The date of an Event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":209,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"sethteo"},"content":" String beforeFrom \u003d combinedWord.substring(0, indexFrom).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":211,"author":{"gitId":"sethteo"},"content":" String afterFrom \u003d combinedWord.substring(indexFrom + \"/from\".length(), indexTo).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":212,"author":{"gitId":"sethteo"},"content":" String afterTo \u003d combinedWord.substring(indexTo + \"/to\".length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"sethteo"},"content":" return new Event(beforeFrom, afterFrom, afterTo);","lastModifiedDate":"2024-01-24"},{"lineNumber":215,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":216,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"sethteo"},"content":" private static Command parseCommand(String[] arr) throws UnknownCommandException {","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"sethteo"},"content":" switch (arr[0]) {","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"sethteo"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"sethteo"},"content":" return Command.BYE;","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"sethteo"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"sethteo"},"content":" return Command.LIST;","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"sethteo"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"sethteo"},"content":" return Command.TODO;","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"sethteo"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"sethteo"},"content":" return Command.DEADLINE;","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"sethteo"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"sethteo"},"content":" return Command.EVENT;","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"sethteo"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"sethteo"},"content":" return Command.MARK;","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"sethteo"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"sethteo"},"content":" return Command.UNMARK;","lastModifiedDate":"2024-01-25"},{"lineNumber":239,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"sethteo"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"sethteo"},"content":" return Command.DELETE;","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"sethteo"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"sethteo"},"content":" throw new UnknownCommandException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":247}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"import entity.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"import entity.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":" private static String PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":" public Storage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" Path filePath \u003d Paths.get(PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" Files.createDirectories(filePath.getParent());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" Files.createFile(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"sethteo"},"content":" public void saveTasks(List\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"sethteo"},"content":" FileWriter fw \u003d new FileWriter(PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"sethteo"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"sethteo"},"content":" fw.write(t.save() + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"sethteo"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"sethteo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"sethteo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"sethteo":41}},{"path":"src/main/java/entity/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package entity;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" private String dateTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" public Deadline(String title, String dateTime) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" super(title);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":" public String save() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":" return \"D | Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":" return \"D | Not Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" return \"[D][X] \" + this.title + \"by \" + this.dateTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":" return \"[D][ ] \" + this.title + \"by \" + this.dateTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":26}},{"path":"src/main/java/entity/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package entity;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" private String startTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" private String endTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" public Event(String title, String startTime, String endTime) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":" super(title);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":" public String save() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":" return \"E | Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":" return \"E | Not Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":" return \"[E][X] \" + this.title + \" (from: \" + this.startTime + \" to: \" + this.endTime + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"sethteo"},"content":" return \"[E][ ] \" + this.title + \" (from: \" + this.startTime + \" to: \" + this.endTime + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":30}},{"path":"src/main/java/entity/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package entity;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" protected String title;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" protected boolean marked;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":" Task(String title) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":" this.title \u003d title;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":" this.marked \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":" public String getTitle() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":" return this.title;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" public boolean getMarked() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":" return this.marked;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" public void setMarked(boolean bool) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" this.marked \u003d bool;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":" public abstract String save();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"sethteo":26}},{"path":"src/main/java/entity/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package entity;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" public ToDo(String title) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" super(title);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":" public String save() {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":" return \"T | Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":" return \"T | Not Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":" return \"[T][X] \" + this.title;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" return \"[T][ ] \" + this.title;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":24}},{"path":"src/main/java/exception/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package exception;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class InvalidDeadlineException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" public InvalidDeadlineException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"sethteo":7}},{"path":"src/main/java/exception/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package exception;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class InvalidEventException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" public InvalidEventException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"sethteo":7}},{"path":"src/main/java/exception/InvalidTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package exception;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class InvalidTodoException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" public InvalidTodoException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"sethteo":7}},{"path":"src/main/java/exception/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package exception;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class UnknownCommandException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" public UnknownCommandException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":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":"sethteo"},"content":"java -classpath ..\\bin SlayBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"sethteo":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":"sethteo"},"content":"java -classpath ../bin SlayBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"sethteo":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"# SlayBot project template","lastModifiedDate":"2024-01-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":"sethteo"},"content":"3. After that, locate the `src/main/java/SlayBot.java` file, right-click it, and choose `Run SlayBot.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":"2024-01-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":{"sethteo":2,"-":22}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"E | Not Done | project meeting","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"sethteo":1}},{"path":"src/main/java/SlayBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"import entity.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"import exception.InvalidDeadlineException;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"import exception.InvalidEventException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":"import exception.InvalidTodoException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":"import exception.UnknownCommandException;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":"import java.util.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":"public class SlayBot {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":" public static final String DIVIDER \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":" public static final String WELCOME_TEXT \u003d \"Hello! I\u0027m SlayBot\\nWhat can I do for you?\";","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":" public static final String BYE_TEXT \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":" enum Command {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" BYE,","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":" LIST,","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" TODO,","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" DEADLINE,","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" EVENT,","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":" MARK,","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":" UNMARK,","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"sethteo"},"content":" DELETE,","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"sethteo"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"sethteo"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"sethteo"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"sethteo"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"sethteo"},"content":" boolean flag \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n\" + WELCOME_TEXT + \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"sethteo"},"content":" while (flag) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"sethteo"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"sethteo"},"content":" String[] splitWords \u003d input.split(\" \");","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"sethteo"},"content":" Command command \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"sethteo"},"content":" while (command \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"sethteo"},"content":" command \u003d parseCommand(splitWords);","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"sethteo"},"content":" } catch (UnknownCommandException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"sethteo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"sethteo"},"content":" System.out.println(\"Enter a valid command\");","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"sethteo"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"sethteo"},"content":" splitWords \u003d input.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"sethteo"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"sethteo"},"content":" case BYE:","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"sethteo"},"content":" flag \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n\" + BYE_TEXT + \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"sethteo"},"content":" case LIST:","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"sethteo"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"sethteo"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"sethteo"},"content":" System.out.println(i + 1 + \". \" + list.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"sethteo"},"content":" case TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"sethteo"},"content":" ToDo todo \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"sethteo"},"content":" todo \u003d parseTodo(splitWords);","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"sethteo"},"content":" } catch (InvalidTodoException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n\" + e.getMessage() + \"\\nPlease try again\" + \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"sethteo"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"sethteo"},"content":" list.add(todo);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"sethteo"},"content":" System.out.println(\"Todo Task Added: \" + todo.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"sethteo"},"content":" System.out.println(\"You have \" + list.size() + \" tasks\");","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"sethteo"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"sethteo"},"content":" Deadline deadline \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"sethteo"},"content":" deadline \u003d parseDeadline(splitWords);","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"sethteo"},"content":" } catch (InvalidDeadlineException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n\" + e.getMessage() + \"\\nPlease try again\" + \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"sethteo"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"sethteo"},"content":" list.add(deadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"sethteo"},"content":" System.out.println(\"Deadline Task Added: \" + deadline.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"sethteo"},"content":" System.out.println(\"You have \" + list.size() + \" tasks\");","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"sethteo"},"content":" case EVENT:","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"sethteo"},"content":" Event event \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"sethteo"},"content":" event \u003d parseEvent(splitWords);","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"sethteo"},"content":" } catch (InvalidEventException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n\" + e.getMessage() + \"\\nPlease try again\" + \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"sethteo"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"sethteo"},"content":" list.add(event);","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"sethteo"},"content":" System.out.println(\"Event Task Added: \" + event.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"sethteo"},"content":" System.out.println(\"You have \" + list.size() + \" tasks\");","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"sethteo"},"content":" case MARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"sethteo"},"content":" Task taskToMark \u003d list.get(Integer.parseInt(splitWords[1]) - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"sethteo"},"content":" taskToMark.setMarked(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\nNice! I\u0027ve marked this task as done:\\n\" + taskToMark.toString() +","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"sethteo"},"content":" \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"sethteo"},"content":" case UNMARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"sethteo"},"content":" Task taskToUnmark \u003d list.get(Integer.parseInt(splitWords[1]) - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"sethteo"},"content":" taskToUnmark.setMarked(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\nOK, I\u0027ve marked this task as not done yet:\\n\" + taskToUnmark.toString() +","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"sethteo"},"content":" \"\\n\" + DIVIDER);","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"sethteo"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"sethteo"},"content":" case DELETE:","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"sethteo"},"content":" int indexToDelete \u003d Integer.parseInt(splitWords[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"sethteo"},"content":" list.remove(indexToDelete - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n Successful deletion \\n You now have \" +","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"sethteo"},"content":" list.size() + \" tasks\\n\" + DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"sethteo"},"content":" storage.saveTasks(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"sethteo"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"sethteo"},"content":" System.out.println(DIVIDER + \"\\n Please input a valid index\\n\" + DIVIDER);","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"sethteo"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"sethteo"},"content":" private static Deadline parseDeadline(String[] arr) throws InvalidDeadlineException {","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"sethteo"},"content":" String deadline_title \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"sethteo"},"content":" String dateTime \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"sethteo"},"content":" String combinedWord \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"sethteo"},"content":" for (int i \u003d 1; i \u003c arr.length; i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"sethteo"},"content":" combinedWord +\u003d arr[i] + \" \";","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"sethteo"},"content":" int index \u003d combinedWord.indexOf(\"/by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"sethteo"},"content":" if (index !\u003d -1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"sethteo"},"content":" dateTime \u003d combinedWord.substring(index + 3).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"sethteo"},"content":" deadline_title \u003d combinedWord.substring(0, index);","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"sethteo"},"content":" if (deadline_title.isEmpty() \u0026\u0026 dateTime.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"sethteo"},"content":" throw new InvalidDeadlineException(\"OOPS!!! Thedescription and date of a Deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"sethteo"},"content":" } else if (deadline_title.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"sethteo"},"content":" throw new InvalidDeadlineException(\"OOPS!!! The description of a Deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"sethteo"},"content":" } else if (dateTime.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"sethteo"},"content":" throw new InvalidDeadlineException(\"OOPS!!! The date of a Deadline cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":179,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"sethteo"},"content":" LocalDateTime date \u003d dateTimeParser(dateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"sethteo"},"content":" return new Deadline(deadline_title, date);","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"sethteo"},"content":" private static ToDo parseTodo(String[] arr) throws InvalidTodoException {","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"sethteo"},"content":" String todo_title \u003d \"\";","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"sethteo"},"content":" if (arr.length - 1 \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"sethteo"},"content":" throw new InvalidTodoException(\"OOPS!!! The description of a Todo cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":191,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"sethteo"},"content":" for (int i \u003d 1; i \u003c arr.length; i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"sethteo"},"content":" todo_title +\u003d arr[i];","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"sethteo"},"content":" if (i !\u003d arr.length - 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"sethteo"},"content":" todo_title +\u003d \" \";","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"sethteo"},"content":" return new ToDo(todo_title);","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"sethteo"},"content":" private static Event parseEvent(String[] splitWords) throws InvalidEventException {","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"sethteo"},"content":" String combinedWord \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":205,"author":{"gitId":"sethteo"},"content":" for (int i \u003d 1; i \u003c splitWords.length; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":206,"author":{"gitId":"sethteo"},"content":" combinedWord +\u003d splitWords[i] + \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":207,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":208,"author":{"gitId":"sethteo"},"content":" int indexFrom \u003d combinedWord.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"sethteo"},"content":" int indexTo \u003d combinedWord.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":211,"author":{"gitId":"sethteo"},"content":" if (splitWords.length - 1 \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"sethteo"},"content":" throw new InvalidEventException(\"OOPS!!! The description of an Event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"sethteo"},"content":" } else if (indexFrom \u003c 0 || indexTo \u003c 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"sethteo"},"content":" throw new InvalidEventException(\"OOPS!!! The date of an Event cannot be empty.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"sethteo"},"content":" String beforeFrom \u003d combinedWord.substring(0, indexFrom).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":218,"author":{"gitId":"sethteo"},"content":" String afterFrom \u003d combinedWord.substring(indexFrom + \"/from\".length(), indexTo).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":219,"author":{"gitId":"sethteo"},"content":" String afterTo \u003d combinedWord.substring(indexTo + \"/to\".length()).trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":220,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":221,"author":{"gitId":"sethteo"},"content":" LocalDateTime startDate \u003d dateTimeParser(afterFrom);","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"sethteo"},"content":" LocalDateTime endDate \u003d dateTimeParser(afterTo);","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"sethteo"},"content":" return new Event(beforeFrom, startDate, endDate);","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":226,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"sethteo"},"content":" private static Command parseCommand(String[] arr) throws UnknownCommandException {","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"sethteo"},"content":" switch (arr[0]) {","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"sethteo"},"content":" case \"bye\":","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"sethteo"},"content":" return Command.BYE;","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"sethteo"},"content":" case \"list\":","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"sethteo"},"content":" return Command.LIST;","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"sethteo"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"sethteo"},"content":" return Command.TODO;","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"sethteo"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":239,"author":{"gitId":"sethteo"},"content":" return Command.DEADLINE;","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"sethteo"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"sethteo"},"content":" return Command.EVENT;","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"sethteo"},"content":" case \"mark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"sethteo"},"content":" return Command.MARK;","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"sethteo"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"sethteo"},"content":" return Command.UNMARK;","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":250,"author":{"gitId":"sethteo"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":251,"author":{"gitId":"sethteo"},"content":" return Command.DELETE;","lastModifiedDate":"2024-01-25"},{"lineNumber":252,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"sethteo"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"sethteo"},"content":" throw new UnknownCommandException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"sethteo"},"content":" private static LocalDateTime dateTimeParser(String dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"sethteo"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"sethteo"},"content":" return LocalDateTime.parse(dateTime, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":263}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"import entity.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"import entity.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":" private static String PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":" public Storage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" Path filePath \u003d Paths.get(PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" Files.createDirectories(filePath.getParent());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" Files.createFile(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"sethteo"},"content":" public void saveTasks(List\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"sethteo"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"sethteo"},"content":" FileWriter fw \u003d new FileWriter(PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"sethteo"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"sethteo"},"content":" fw.write(t.save() + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"sethteo"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"sethteo"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"sethteo"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"sethteo":41}},{"path":"src/main/java/entity/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package entity;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":" public Deadline(String title, LocalDateTime dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":" super(title);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":" public String save() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" return \"D | Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" return \"D | Not Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"sethteo"},"content":" return \"[D][X] \" + this.title + \"by \" + this.dateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"sethteo"},"content":" return \"[D][ ] \" + this.title + \"by \" + this.dateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":30}},{"path":"src/main/java/entity/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package entity;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":" public Event(String title, LocalDateTime startTime, LocalDateTime endTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":" super(title);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" public String save() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" return \"E | Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" return \"E | Not Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"sethteo"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"sethteo"},"content":" return \"[E][X] \" + this.title + \" (from: \" + this.startTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"sethteo"},"content":" + \" to: \" + this.endTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"sethteo"},"content":" return \"[E][ ] \" + this.title + \" (from: \" + this.startTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"sethteo"},"content":" + \" to: \" + this.endTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":35}},{"path":"src/main/java/entity/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package entity;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" protected String title;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" protected boolean marked;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":" Task(String title) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":" this.title \u003d title;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":" this.marked \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":" public String getTitle() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":" return this.title;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" public boolean getMarked() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":" return this.marked;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" public void setMarked(boolean bool) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" this.marked \u003d bool;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":" public abstract String save();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"sethteo":26}},{"path":"src/main/java/entity/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package entity;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" public ToDo(String title) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" super(title);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"sethteo"},"content":" public String save() {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"sethteo"},"content":" return \"T | Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"sethteo"},"content":" return \"T | Not Done | \" + this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"sethteo"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"sethteo"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"sethteo"},"content":" if (this.marked) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"sethteo"},"content":" return \"[T][X] \" + this.title;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"sethteo"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"sethteo"},"content":" return \"[T][ ] \" + this.title;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":24}},{"path":"src/main/java/exception/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package exception;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class InvalidDeadlineException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" public InvalidDeadlineException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"sethteo":7}},{"path":"src/main/java/exception/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package exception;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class InvalidEventException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" public InvalidEventException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"sethteo":7}},{"path":"src/main/java/exception/InvalidTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package exception;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class InvalidTodoException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" public InvalidTodoException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"sethteo":7}},{"path":"src/main/java/exception/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"package exception;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"public class UnknownCommandException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":" public UnknownCommandException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"sethteo"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"sethteo"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"sethteo"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"sethteo"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"sethteo"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"sethteo"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"sethteo"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"sethteo":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":"sethteo"},"content":"java -classpath ..\\bin SlayBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"sethteo":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":"sethteo"},"content":"java -classpath ../bin SlayBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"sethteo":1,"-":37}}] diff --git a/sethteo_ip_master/commits.json b/sethteo_ip_master/commits.json index 06ccf938..6e6cce17 100644 --- a/sethteo_ip_master/commits.json +++ b/sethteo_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"sethteo":[{"date":"2024-01-23","commitResults":[{"hash":"41175700f0cdc1b2d64e761e027879198aeab149","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"44b55ea67487068bb10b9f0cd84461fa8f2b3bca","isMergeCommit":false,"messageTitle":"Add Level 0 Tag","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"2ad9a0c473b4457926889b2dd2e156e729908c06","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"86ba3409aabc7208ae6129158840ac48ac7de3e0","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":4}}},{"hash":"75b55676a91fc151de53a787fe483ad1ab66a8cc","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":17}}}]},{"date":"2024-01-24","commitResults":[{"hash":"59cc3422b862c394359d9af8526b29bdbde231bd","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":172,"deletions":70},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"ef6eae3db86197fbc1e8b4f115686742c1e1e758","isMergeCommit":false,"messageTitle":"Added automated ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":23,"deletions":2},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"698886ec01498cf3a9911236a2a107a99afd9c9d","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":157,"deletions":39}}},{"hash":"78a69ab4c1c8c29fe9a0c142ba68959875ce6618","isMergeCommit":false,"messageTitle":"Added delete function","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}}]},{"date":"2024-01-29","commitResults":[{"hash":"63689d80ce82dafe425155d299104c24dca7941f","isMergeCommit":false,"messageTitle":"Added file saving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"5be40162b5eae49b5fce98c0de9ffb86780e5537","isMergeCommit":false,"messageTitle":"Added file saving feature","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":81,"deletions":3}}},{"hash":"83802f78ec0f898d6783825b33bc57b4ff5d1e3c","isMergeCommit":false,"messageTitle":"Add level 7 branch","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"sethteo":{"java":422,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":8}},"authorContributionVariance":{"sethteo":9450.051},"authorDisplayNameMap":{"sethteo":"TEO .. RUI"}} +{"authorDailyContributionsMap":{"sethteo":[{"date":"2024-01-23","commitResults":[{"hash":"41175700f0cdc1b2d64e761e027879198aeab149","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"44b55ea67487068bb10b9f0cd84461fa8f2b3bca","isMergeCommit":false,"messageTitle":"Add Level 0 Tag","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"2ad9a0c473b4457926889b2dd2e156e729908c06","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"86ba3409aabc7208ae6129158840ac48ac7de3e0","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":4}}},{"hash":"75b55676a91fc151de53a787fe483ad1ab66a8cc","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":17}}}]},{"date":"2024-01-24","commitResults":[{"hash":"59cc3422b862c394359d9af8526b29bdbde231bd","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":172,"deletions":70},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"ef6eae3db86197fbc1e8b4f115686742c1e1e758","isMergeCommit":false,"messageTitle":"Added automated ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":23,"deletions":2},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"698886ec01498cf3a9911236a2a107a99afd9c9d","isMergeCommit":false,"messageTitle":"Added exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":157,"deletions":39}}},{"hash":"78a69ab4c1c8c29fe9a0c142ba68959875ce6618","isMergeCommit":false,"messageTitle":"Added delete function","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}}]},{"date":"2024-01-29","commitResults":[{"hash":"63689d80ce82dafe425155d299104c24dca7941f","isMergeCommit":false,"messageTitle":"Added file saving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"5be40162b5eae49b5fce98c0de9ffb86780e5537","isMergeCommit":false,"messageTitle":"Added file saving feature","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":81,"deletions":3}}},{"hash":"83802f78ec0f898d6783825b33bc57b4ff5d1e3c","isMergeCommit":false,"messageTitle":"Add level 7 branch","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"b5eb1a2e7de53faae4e85e046c7b76a035e2c99f","isMergeCommit":false,"messageTitle":"Datetime functionality for Deadline","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":34,"deletions":17}}},{"hash":"f91b03d384f1df58997fcaad4812aa42c4f5b8a4","isMergeCommit":false,"messageTitle":"Datetime functionality for Event","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":14,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"sethteo":{"java":447,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":6}},"authorContributionVariance":{"sethteo":8672.411},"authorDisplayNameMap":{"sethteo":"TEO .. RUI"}} diff --git a/shawnnlimm_ip_master/authorship.json b/shawnnlimm_ip_master/authorship.json index 6432e6d5..4df035b8 100644 --- a/shawnnlimm_ip_master/authorship.json +++ b/shawnnlimm_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"T | | go home","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"T | | read book","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"D | | read | 2024-10-22T22:00","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"shawnnlimm":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" private static final String DEADLINE_MESSAGE \u003d \"[D]%s (by: %s)\";","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":" private static final String DEADLINE_FILE_TEMPLATE \u003d \"D | %s | %s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" private final LocalDateTime deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" private final DateTimeFormatter returnFormatter \u003d DateTimeFormatter.ofPattern(\"EEE HHmm dd/MM/yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" DateTimeFormatter acceptFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" this.deadline \u003d LocalDateTime.parse(deadline, acceptFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" public String taskFileTemplate() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" return String.format(DEADLINE_FILE_TEMPLATE, super.taskFileTemplate(), deadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" return String.format(DEADLINE_MESSAGE, super.toString(), deadline.format(returnFormatter));","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"shawnnlimm":27}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":" private static final String GOODBYE_MESSAGE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" private static final String UNKNOWN_COMMAND_MESSAGE \u003d \"The command \u0027%s\u0027 is unknown. Please try again!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" private static final TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" private static boolean isOpen \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" greet();","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" runWaffles();","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" private static void runWaffles() {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":" while (isOpen) {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" String userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" Parser p \u003d new Parser(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" Parser.Command command \u003d p.getCommand();","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":" String arguments \u003d p.getArgument();","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" case bye:","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" sayGoodbye();","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":" isOpen \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":" case list:","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":" taskList.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"shawnnlimm"},"content":" case todo:","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"shawnnlimm"},"content":" taskList.addToDoTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"shawnnlimm"},"content":" case mark:","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"shawnnlimm"},"content":" taskList.markTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"shawnnlimm"},"content":" case unmark:","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"shawnnlimm"},"content":" taskList.unmarkTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"shawnnlimm"},"content":" case deadline:","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"shawnnlimm"},"content":" taskList.addDeadlineTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"shawnnlimm"},"content":" case event:","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"shawnnlimm"},"content":" taskList.addEventTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"shawnnlimm"},"content":" case delete:","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"shawnnlimm"},"content":" taskList.deleteTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"shawnnlimm"},"content":" case invalid:","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeUnknownCommandException(String.format(UNKNOWN_COMMAND_MESSAGE, p.getUnknownCommand()));","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"shawnnlimm"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":55,"author":{"gitId":"shawnnlimm"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":58,"author":{"gitId":"shawnnlimm"},"content":" } ","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"shawnnlimm"},"content":" sc.close();","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"shawnnlimm"},"content":" public static void greet() {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(\"Hello! I\u0027m Waffles!%nWhat can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"shawnnlimm"},"content":" public static void sayGoodbye() {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(GOODBYE_MESSAGE);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"shawnnlimm":65,"-":6}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"shawnnlimm":6}},{"path":"src/main/java/DukeIOException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"public class DukeIOException extends DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":" public DukeIOException(String errorMessage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"shawnnlimm":7}},{"path":"src/main/java/DukeIllegalArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"public class DukeIllegalArgumentException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":" public DukeIllegalArgumentException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"shawnnlimm":6}},{"path":"src/main/java/DukeUnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"public class DukeUnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":" public DukeUnknownCommandException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"shawnnlimm":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" private static final String EVENT_MESSAGE \u003d \"[E]%s (from: %s to: %s)\";","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" private static final String EVENT_FILE_TEMPLATE \u003d \"E | %s | %s | %s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":" private final LocalDateTime startTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" private final LocalDateTime endTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" private final DateTimeFormatter returnFormatter \u003d DateTimeFormatter.ofPattern(\"EEE HHmm dd/MM/yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" DateTimeFormatter acceptFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, acceptFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, acceptFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" public String taskFileTemplate() {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":" return String.format(EVENT_FILE_TEMPLATE, super.taskFileTemplate(), startTime, endTime);","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" return String.format(EVENT_MESSAGE, super.toString(), startTime.format(returnFormatter), endTime.format(returnFormatter));","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"shawnnlimm":29}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"public class Parser {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":" public enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":" bye,","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" list,","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" todo,","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" mark,","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":" unmark,","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" deadline,","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" event,","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" delete,","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":" invalid","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" private final Command command;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" private final String argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":" private String unknownCommand \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" public Parser(String userInput) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" String[] splitInputs \u003d userInput.split(\"\\\\s+\");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":" Command c;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" c \u003d Command.valueOf(splitInputs[0].toLowerCase());","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" c \u003d Command.invalid;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":" this.unknownCommand \u003d splitInputs[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":" if (splitInputs.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":" this.argument \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"shawnnlimm"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"shawnnlimm"},"content":" this.argument \u003d userInput.substring(splitInputs[0].length() + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"shawnnlimm"},"content":" this.command \u003d c;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"shawnnlimm"},"content":" public Command getCommand() {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"shawnnlimm"},"content":" return this.command;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"shawnnlimm"},"content":" public String getArgument() {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"shawnnlimm"},"content":" return this.argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"shawnnlimm"},"content":" public String getUnknownCommand() {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"shawnnlimm"},"content":" return this.unknownCommand;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"shawnnlimm":50}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" private final String path;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" public Storage(String path) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" File f \u003d new File(path);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(path);","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" if (f.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" File parentPath \u003d f.getParentFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" parentPath.mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIOException(\"error creating file!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":" public String loadFileData() {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"shawnnlimm"},"content":" Path p \u003d Paths.get(path);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"shawnnlimm"},"content":" return Files.readString(p);","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"shawnnlimm"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIOException(\"error locating file\");","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"shawnnlimm"},"content":" public void saveToFile(String dataToSave) {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"shawnnlimm"},"content":" Path p \u003d Paths.get(path);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"shawnnlimm"},"content":" Files.writeString(p, dataToSave);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"shawnnlimm"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIOException(\"error saving to file\");","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"shawnnlimm":49}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":" private static final String TASK_MESSAGE \u003d \"[%s] %s\";","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":" private static final String TASK_FILE_TEMPLATE \u003d \"%s | %s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" return isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" public String taskFileTemplate() {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" return String.format(TASK_FILE_TEMPLATE, getStatusIcon(), description);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":" return String.format(TASK_MESSAGE, getStatusIcon(), this.description);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"shawnnlimm":33}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" private static final String MARK_DONE_MESSAGE \u003d \"Nice! I\u0027ve marked this task as done:%n%s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" private static final String MARK_UNDONE_MESSAGE \u003d \"OK, I\u0027ve marked this task as not done yet:%n%s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" private static final String LIST_TASK_MESSAGE \u003d \"Here are the tasks in your list:%s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":" private static final String ADD_TASK_MESSAGE \u003d \"Got it. I\u0027ve added this task:%n%s%nNow you have %d tasks in the list.\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" private static final String MISSING_ARGUMENT_MESSAGE \u003d \"The command you entered has missing arguments. Please try again!\";","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" private static final String REMOVE_TASK_MESSAGE \u003d \"Noted. I\u0027ve removed this task:%n%s%nNow you have %d tasks in the list.\";","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" private final Storage taskStorage;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" public TaskList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":" String root \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" String path \u003d Path.of(root, \"ip/data/tasks.txt\").toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" this.taskStorage \u003d new Storage(path);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" updateList();","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" public void addToDoTask(String toDoDescription) {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" if (toDoDescription.isBlank()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIllegalArgumentException(MISSING_ARGUMENT_MESSAGE);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":" Task toDo \u003d new ToDo(toDoDescription);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(toDo);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(ADD_TASK_MESSAGE, toDo, taskList.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"shawnnlimm"},"content":" public void addDeadlineTask(String deadlineDescription) {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"shawnnlimm"},"content":" if (deadlineDescription.isBlank()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIllegalArgumentException(MISSING_ARGUMENT_MESSAGE);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"shawnnlimm"},"content":" String[] deadlineArgs \u003d deadlineDescription.split(\" /by \");","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"shawnnlimm"},"content":" Task deadline \u003d new Deadline(deadlineArgs[0], deadlineArgs[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(ADD_TASK_MESSAGE, deadline, taskList.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"shawnnlimm"},"content":" public void addEventTask(String eventDescription) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"shawnnlimm"},"content":" if (eventDescription.isBlank()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIllegalArgumentException(MISSING_ARGUMENT_MESSAGE);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"shawnnlimm"},"content":" String[] eventArgs \u003d eventDescription.split(\" /from \");","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"shawnnlimm"},"content":" String[] eventTime \u003d eventArgs[1].split(\" /to \");","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"shawnnlimm"},"content":" String startTime \u003d eventTime[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"shawnnlimm"},"content":" String endTime \u003d eventTime[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"shawnnlimm"},"content":" Task event \u003d new Event(eventArgs[0], startTime, endTime);","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(ADD_TASK_MESSAGE, event, taskList.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"shawnnlimm"},"content":" public void markTask(String taskIndex) {","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"shawnnlimm"},"content":" Task t \u003d taskList.get(Integer.parseInt(taskIndex) - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"shawnnlimm"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(MARK_DONE_MESSAGE, t);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"shawnnlimm"},"content":" public void unmarkTask(String taskIndex) {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"shawnnlimm"},"content":" Task t \u003d taskList.get(Integer.parseInt(taskIndex) - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"shawnnlimm"},"content":" t.markAsUndone();","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(MARK_UNDONE_MESSAGE, t);","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"shawnnlimm"},"content":" public void deleteTask(String taskIndex) {","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"shawnnlimm"},"content":" if (taskIndex.isBlank()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIllegalArgumentException(MISSING_ARGUMENT_MESSAGE);","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"shawnnlimm"},"content":" Task taskToRemove \u003d taskList.get(Integer.parseInt(taskIndex) - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"shawnnlimm"},"content":" taskList.remove(Integer.parseInt(taskIndex) - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(REMOVE_TASK_MESSAGE, taskToRemove, taskList.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"shawnnlimm"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"shawnnlimm"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"shawnnlimm"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"shawnnlimm"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"shawnnlimm"},"content":" Task task \u003d taskList.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"shawnnlimm"},"content":" sb.append(String.format(\"%n%d.%s\", i + 1, task));","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(LIST_TASK_MESSAGE, sb);","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"shawnnlimm"},"content":" return output;","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"shawnnlimm"},"content":" private void updateList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"shawnnlimm"},"content":" String fileData \u003d taskStorage.loadFileData();","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"shawnnlimm"},"content":" String[] tasks \u003d fileData.split(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"shawnnlimm"},"content":" for (String t : tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"shawnnlimm"},"content":" String[] taskTokens \u003d t.split(\"\\\\|\");","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"shawnnlimm"},"content":" for (int j \u003d 0; j \u003c taskTokens.length; j++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"shawnnlimm"},"content":" taskTokens[j] \u003d taskTokens[j].trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"shawnnlimm"},"content":" String command \u003d taskTokens[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"shawnnlimm"},"content":" if (!command.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"shawnnlimm"},"content":" String status \u003d taskTokens[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"shawnnlimm"},"content":" String description \u003d taskTokens[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"shawnnlimm"},"content":" if (command.equals(\"T\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"shawnnlimm"},"content":" syncListWithStorage(\"T\", status, description, \"\", \"\", \"\");","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"shawnnlimm"},"content":" } else if (command.equals(\"D\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"shawnnlimm"},"content":" syncListWithStorage(\"D\", status, description, taskTokens[3], \"\", \"\");","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"shawnnlimm"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"shawnnlimm"},"content":" syncListWithStorage(\"E\", status, description, \"\", taskTokens[3], taskTokens[4]);","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"shawnnlimm"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"shawnnlimm"},"content":" private void syncListWithStorage(String taskType, String status, String description, String by, String from, String to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"shawnnlimm"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(new ToDo(description));","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"shawnnlimm"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(new Deadline(description, by));","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"shawnnlimm"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(new Event(description, from, to));","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"shawnnlimm"},"content":" if (status.equals(\"X\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"shawnnlimm"},"content":" markTask(String.valueOf(taskList.size()));","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"shawnnlimm"},"content":" private void updateStorage() {","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"shawnnlimm"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"shawnnlimm"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"shawnnlimm"},"content":" sb.append(t.taskFileTemplate()).append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"shawnnlimm"},"content":" taskStorage.saveToFile(sb.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"shawnnlimm"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":152,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":156,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"shawnnlimm":156}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":" private static final String TODO_MESSAGE \u003d \"[T]%s\";","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":" private static final String TODO_FILE_TEMPLATE \u003d \"T | %s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" public String taskFileTemplate() {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" return String.format(TODO_FILE_TEMPLATE, super.taskFileTemplate());","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" return String.format(TODO_MESSAGE, super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"shawnnlimm":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"todo go to the gym","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":"deadline return book /by Next Monday","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":"event friend\u0027s party /from Mon 5pm /to Mon 10pm","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":"blah","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":"todo finish homework","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":"delete 5","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"shawnnlimm":21}}] +[{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"D | | read | 2024-10-10T22:00","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"E | | gym | 2024-10-10T12:00 | 2024-10-10T15:00","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"shawnnlimm":2}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"import duke.exceptions.DukeUnknownCommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"import duke.tasks.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" private static final String GOODBYE_MESSAGE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" private static final String UNKNOWN_COMMAND_MESSAGE \u003d \"The command \u0027%s\u0027 is unknown. Please try again!\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" private static final TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":" private static boolean isOpen \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" greet();","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" runWaffles();","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" private static void runWaffles() {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":" while (isOpen) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" String userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" Parser p \u003d new Parser(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" Parser.Command command \u003d p.getCommand();","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" String arguments \u003d p.getArgument();","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":" case bye:","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":" sayGoodbye();","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"shawnnlimm"},"content":" isOpen \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"shawnnlimm"},"content":" case list:","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"shawnnlimm"},"content":" taskList.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"shawnnlimm"},"content":" case todo:","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"shawnnlimm"},"content":" taskList.addToDoTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"shawnnlimm"},"content":" case mark:","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"shawnnlimm"},"content":" taskList.markTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"shawnnlimm"},"content":" case unmark:","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"shawnnlimm"},"content":" taskList.unmarkTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"shawnnlimm"},"content":" case deadline:","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"shawnnlimm"},"content":" taskList.addDeadlineTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"shawnnlimm"},"content":" case event:","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"shawnnlimm"},"content":" taskList.addEventTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"shawnnlimm"},"content":" case delete:","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"shawnnlimm"},"content":" taskList.deleteTask(arguments);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"shawnnlimm"},"content":" case invalid:","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeUnknownCommandException(String.format(UNKNOWN_COMMAND_MESSAGE, p.getUnknownCommand()));","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"shawnnlimm"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"shawnnlimm"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":60,"author":{"gitId":"shawnnlimm"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":63,"author":{"gitId":"shawnnlimm"},"content":" } ","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"shawnnlimm"},"content":" sc.close();","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"shawnnlimm"},"content":" public static void greet() {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(\"Hello! I\u0027m Waffles!%nWhat can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"shawnnlimm"},"content":" public static void sayGoodbye() {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(GOODBYE_MESSAGE);","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"shawnnlimm":70,"-":6}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"shawnnlimm":8}},{"path":"src/main/java/duke/exceptions/DukeIOException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"public class DukeIOException extends DukeException {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" public DukeIOException(String errorMessage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"shawnnlimm":9}},{"path":"src/main/java/duke/exceptions/DukeIllegalArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"public class DukeIllegalArgumentException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" public DukeIllegalArgumentException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"shawnnlimm":8}},{"path":"src/main/java/duke/exceptions/DukeUnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"public class DukeUnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" public DukeUnknownCommandException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"shawnnlimm":8}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"public class Parser {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" public enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" bye,","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" list,","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":" todo,","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" mark,","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" unmark,","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" deadline,","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":" event,","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" delete,","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" invalid","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":" private final Command command;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" private final String argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" private String unknownCommand \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":" public Parser(String userInput) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":" String[] splitInputs \u003d userInput.split(\"\\\\s+\");","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" Command c;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" c \u003d Command.valueOf(splitInputs[0].toLowerCase());","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":" c \u003d Command.invalid;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":" this.unknownCommand \u003d splitInputs[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"shawnnlimm"},"content":" if (splitInputs.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"shawnnlimm"},"content":" this.argument \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"shawnnlimm"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"shawnnlimm"},"content":" this.argument \u003d userInput.substring(splitInputs[0].length() + 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"shawnnlimm"},"content":" this.command \u003d c;","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"shawnnlimm"},"content":" public Command getCommand() {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"shawnnlimm"},"content":" return this.command;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"shawnnlimm"},"content":" public String getArgument() {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"shawnnlimm"},"content":" return this.argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"shawnnlimm"},"content":" public String getUnknownCommand() {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"shawnnlimm"},"content":" return this.unknownCommand;","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"shawnnlimm":52}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"import duke.exceptions.DukeIOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" private final String path;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" public Storage(String path) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":" this.path \u003d path;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" File f \u003d new File(path);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" if (f.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":" return;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" File parentPath \u003d f.getParentFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" parentPath.mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIOException(\"error creating file!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"shawnnlimm"},"content":" public String loadFileData() {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"shawnnlimm"},"content":" Path p \u003d Paths.get(path);","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"shawnnlimm"},"content":" return Files.readString(p);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"shawnnlimm"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIOException(\"error locating file\");","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"shawnnlimm"},"content":" public void saveToFile(String dataToSave) {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"shawnnlimm"},"content":" Path p \u003d Paths.get(path);","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"shawnnlimm"},"content":" Files.writeString(p, dataToSave);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"shawnnlimm"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIOException(\"error saving to file\");","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"shawnnlimm":51}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":" private static final String DEADLINE_MESSAGE \u003d \"[D]%s (by: %s)\";","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" private static final String DEADLINE_FILE_TEMPLATE \u003d \"D | %s | %s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" private final LocalDateTime deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" private final DateTimeFormatter returnFormatter \u003d DateTimeFormatter.ofPattern(\"EEE HHmm dd/MM/yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" DateTimeFormatter acceptFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" this.deadline \u003d LocalDateTime.parse(deadline, acceptFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" public String taskFileTemplate() {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" return String.format(DEADLINE_FILE_TEMPLATE, super.taskFileTemplate(), deadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" return String.format(DEADLINE_MESSAGE, super.toString(), deadline.format(returnFormatter));","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"shawnnlimm":28}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":" private static final String EVENT_MESSAGE \u003d \"[E]%s (from: %s to: %s)\";","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" private static final String EVENT_FILE_TEMPLATE \u003d \"E | %s | %s | %s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" private final LocalDateTime startTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" private final LocalDateTime endTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":" private final DateTimeFormatter returnFormatter \u003d DateTimeFormatter.ofPattern(\"EEE HHmm dd/MM/yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":" DateTimeFormatter acceptFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy/MM/dd HHmm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, acceptFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, acceptFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":" public String taskFileTemplate() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" return String.format(EVENT_FILE_TEMPLATE, super.taskFileTemplate(), startTime, endTime);","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":" return String.format(EVENT_MESSAGE, super.toString(), startTime.format(returnFormatter), endTime.format(returnFormatter));","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"shawnnlimm":31}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" private static final String TASK_MESSAGE \u003d \"[%s] %s\";","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" private static final String TASK_FILE_TEMPLATE \u003d \"%s | %s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" return isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" public String taskFileTemplate() {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":" return String.format(TASK_FILE_TEMPLATE, getStatusIcon(), description);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"shawnnlimm"},"content":" return String.format(TASK_MESSAGE, getStatusIcon(), this.description);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"shawnnlimm":35}},{"path":"src/main/java/duke/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"import duke.exceptions.DukeIllegalArgumentException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" private static final String MARK_DONE_MESSAGE \u003d \"Nice! I\u0027ve marked this task as done:%n%s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":" private static final String MARK_UNDONE_MESSAGE \u003d \"OK, I\u0027ve marked this task as not done yet:%n%s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" private static final String LIST_TASK_MESSAGE \u003d \"Here are the tasks in your list:%s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":" private static final String ADD_TASK_MESSAGE \u003d \"Got it. I\u0027ve added this task:%n%s%nNow you have %d tasks in the list.\";","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" private static final String MISSING_ARGUMENT_MESSAGE \u003d \"The command you entered has missing arguments. Please try again!\";","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" private static final String REMOVE_TASK_MESSAGE \u003d \"Noted. I\u0027ve removed this task:%n%s%nNow you have %d tasks in the list.\";","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":" private final Storage taskStorage;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":" public TaskList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"shawnnlimm"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"shawnnlimm"},"content":" String root \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"shawnnlimm"},"content":" String path \u003d Path.of(root, \"ip/data/tasks.txt\").toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"shawnnlimm"},"content":" this.taskStorage \u003d new Storage(path);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"shawnnlimm"},"content":" updateList();","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"shawnnlimm"},"content":" public void addToDoTask(String toDoDescription) {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"shawnnlimm"},"content":" if (toDoDescription.isBlank()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIllegalArgumentException(MISSING_ARGUMENT_MESSAGE);","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"shawnnlimm"},"content":" Task toDo \u003d new ToDo(toDoDescription);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(toDo);","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(ADD_TASK_MESSAGE, toDo, taskList.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"shawnnlimm"},"content":" public void addDeadlineTask(String deadlineDescription) {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"shawnnlimm"},"content":" if (deadlineDescription.isBlank()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIllegalArgumentException(MISSING_ARGUMENT_MESSAGE);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"shawnnlimm"},"content":" String[] deadlineArgs \u003d deadlineDescription.split(\" /by \");","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"shawnnlimm"},"content":" Task deadline \u003d new Deadline(deadlineArgs[0], deadlineArgs[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(ADD_TASK_MESSAGE, deadline, taskList.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"shawnnlimm"},"content":" public void addEventTask(String eventDescription) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"shawnnlimm"},"content":" if (eventDescription.isBlank()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIllegalArgumentException(MISSING_ARGUMENT_MESSAGE);","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"shawnnlimm"},"content":" String[] eventArgs \u003d eventDescription.split(\" /from \");","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"shawnnlimm"},"content":" String[] eventTime \u003d eventArgs[1].split(\" /to \");","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"shawnnlimm"},"content":" String startTime \u003d eventTime[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"shawnnlimm"},"content":" String endTime \u003d eventTime[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"shawnnlimm"},"content":" Task event \u003d new Event(eventArgs[0], startTime, endTime);","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(ADD_TASK_MESSAGE, event, taskList.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"shawnnlimm"},"content":" public void markTask(String taskIndex) {","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"shawnnlimm"},"content":" Task t \u003d taskList.get(Integer.parseInt(taskIndex) - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"shawnnlimm"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(MARK_DONE_MESSAGE, t);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"shawnnlimm"},"content":" public void unmarkTask(String taskIndex) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"shawnnlimm"},"content":" Task t \u003d taskList.get(Integer.parseInt(taskIndex) - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"shawnnlimm"},"content":" t.markAsUndone();","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(MARK_UNDONE_MESSAGE, t);","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"shawnnlimm"},"content":" public void deleteTask(String taskIndex) {","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"shawnnlimm"},"content":" if (taskIndex.isBlank()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"shawnnlimm"},"content":" throw new DukeIllegalArgumentException(MISSING_ARGUMENT_MESSAGE);","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"shawnnlimm"},"content":" Task taskToRemove \u003d taskList.get(Integer.parseInt(taskIndex) - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"shawnnlimm"},"content":" taskList.remove(Integer.parseInt(taskIndex) - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"shawnnlimm"},"content":" updateStorage();","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(REMOVE_TASK_MESSAGE, taskToRemove, taskList.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"shawnnlimm"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"shawnnlimm"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"shawnnlimm"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"shawnnlimm"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"shawnnlimm"},"content":" Task task \u003d taskList.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"shawnnlimm"},"content":" sb.append(String.format(\"%n%d.%s\", i + 1, task));","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"shawnnlimm"},"content":" String output \u003d String.format(LIST_TASK_MESSAGE, sb);","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"shawnnlimm"},"content":" return output;","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"shawnnlimm"},"content":" private void updateList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"shawnnlimm"},"content":" String fileData \u003d taskStorage.loadFileData();","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"shawnnlimm"},"content":" String[] tasks \u003d fileData.split(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"shawnnlimm"},"content":" for (String t : tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"shawnnlimm"},"content":" String[] taskTokens \u003d t.split(\"\\\\|\");","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"shawnnlimm"},"content":" for (int j \u003d 0; j \u003c taskTokens.length; j++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"shawnnlimm"},"content":" taskTokens[j] \u003d taskTokens[j].trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"shawnnlimm"},"content":" String command \u003d taskTokens[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"shawnnlimm"},"content":" if (!command.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"shawnnlimm"},"content":" String status \u003d taskTokens[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"shawnnlimm"},"content":" String description \u003d taskTokens[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"shawnnlimm"},"content":" if (command.equals(\"T\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"shawnnlimm"},"content":" syncListWithStorage(\"T\", status, description, \"\", \"\", \"\");","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"shawnnlimm"},"content":" } else if (command.equals(\"D\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"shawnnlimm"},"content":" syncListWithStorage(\"D\", status, description, taskTokens[3], \"\", \"\");","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"shawnnlimm"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"shawnnlimm"},"content":" syncListWithStorage(\"E\", status, description, \"\", taskTokens[3], taskTokens[4]);","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"shawnnlimm"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"shawnnlimm"},"content":" private void syncListWithStorage(String taskType, String status, String description, String by, String from, String to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"shawnnlimm"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(new ToDo(description));","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"shawnnlimm"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"shawnnlimm"},"content":" String byFormatted;","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"shawnnlimm"},"content":" String[] dateTimeParts \u003d by.replace(\"-\", \"/\").split(\"T\");","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"shawnnlimm"},"content":" String[] HHmm \u003d dateTimeParts[1].split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"shawnnlimm"},"content":" byFormatted \u003d dateTimeParts[0] + \" \" + HHmm[0] + HHmm[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(new Deadline(description, byFormatted));","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"shawnnlimm"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"shawnnlimm"},"content":" String fromFormatted;","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"shawnnlimm"},"content":" String toFormatted;","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"shawnnlimm"},"content":" String[] fromParts \u003d from.replace(\"-\", \"/\").split(\"T\");","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"shawnnlimm"},"content":" String[] fromHHmm \u003d fromParts[1].split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"shawnnlimm"},"content":" fromFormatted \u003d fromParts[0] + \" \" + fromHHmm[0] + fromHHmm[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"shawnnlimm"},"content":" String[] toParts \u003d to.replace(\"-\", \"/\").split(\"T\");","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"shawnnlimm"},"content":" String[] toHHmm \u003d toParts[1].split(\":\");","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"shawnnlimm"},"content":" toFormatted \u003d toParts[0] + \" \" + toHHmm[0] + toHHmm[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"shawnnlimm"},"content":" taskList.add(new Event(description, fromFormatted, toFormatted));","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":158,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"shawnnlimm"},"content":" if (status.equals(\"X\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":160,"author":{"gitId":"shawnnlimm"},"content":" markTask(String.valueOf(taskList.size()));","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":162,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"shawnnlimm"},"content":" private void updateStorage() {","lastModifiedDate":"2024-01-27"},{"lineNumber":165,"author":{"gitId":"shawnnlimm"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"shawnnlimm"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-01-27"},{"lineNumber":167,"author":{"gitId":"shawnnlimm"},"content":" sb.append(t.taskFileTemplate()).append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":169,"author":{"gitId":"shawnnlimm"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"shawnnlimm"},"content":" taskStorage.saveToFile(sb.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":171,"author":{"gitId":"shawnnlimm"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":172,"author":{"gitId":"shawnnlimm"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":173,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":174,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"shawnnlimm":176}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":" private static final String TODO_MESSAGE \u003d \"[T]%s\";","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":" private static final String TODO_FILE_TEMPLATE \u003d \"T | %s\";","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":" public String taskFileTemplate() {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":" return String.format(TODO_FILE_TEMPLATE, super.taskFileTemplate());","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":" return String.format(TODO_MESSAGE, super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"shawnnlimm":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shawnnlimm"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"shawnnlimm"},"content":"todo go to the gym","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"shawnnlimm"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"shawnnlimm"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"shawnnlimm"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"shawnnlimm"},"content":"deadline return book /by Next Monday","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"shawnnlimm"},"content":"event friend\u0027s party /from Mon 5pm /to Mon 10pm","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"shawnnlimm"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"shawnnlimm"},"content":"blah","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"shawnnlimm"},"content":"todo finish homework","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"shawnnlimm"},"content":"delete 5","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"shawnnlimm"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"shawnnlimm"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"shawnnlimm":21}}] diff --git a/shawnnlimm_ip_master/commits.json b/shawnnlimm_ip_master/commits.json index 691fc3f4..78a8040a 100644 --- a/shawnnlimm_ip_master/commits.json +++ b/shawnnlimm_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"shawnnlimm":[{"date":"2024-01-22","commitResults":[{"hash":"e73834d72b8dc301a6b48843ceeb51b0aa714c94","isMergeCommit":false,"messageTitle":"feat: Add greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"6a11adf6f62c9e06f5ec8c0d306c311b754677e2","isMergeCommit":false,"messageTitle":"feat: Add echo command","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":7}}},{"hash":"b778b7c940a4239e2a6ed28ca3acab319bab51e1","isMergeCommit":false,"messageTitle":"feat: Add list feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"70e740bb146cd01ce79304da661e29031f29dc02","isMergeCommit":false,"messageTitle":"feat: Add mark as done/undone feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":16}}},{"hash":"03511e93d6aaf9b9632870a427c2862e42992315","isMergeCommit":false,"messageTitle":"feat: Add ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":24}}}]},{"date":"2024-01-24","commitResults":[{"hash":"6c56be21a5d87f7ba981af51dbc8815ba174bdb4","isMergeCommit":false,"messageTitle":"test: Add Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"java":{"insertions":32,"deletions":31}}},{"hash":"a7b41fc31a16cb6f4e4675210f65e7db67f43711","isMergeCommit":false,"messageTitle":"feat: Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":119,"deletions":24}}},{"hash":"2c831bceaa2bb2ccc9b12e5cb2a9c26e4ff6943d","isMergeCommit":false,"messageTitle":"feat: Add Delete Task feature","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":15,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"cb7afedc43aa8dd46d9809b892ba1a6355ae80fa","isMergeCommit":false,"messageTitle":"feat: Add Storage feature","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":267,"deletions":114}}},{"hash":"6ebd38ab5dbde890627b4bec362b19d9fe42fd2c","isMergeCommit":false,"messageTitle":"Revert \"feat: Add Storage feature\"","messageBody":"This reverts commit cb7afedc43aa8dd46d9809b892ba1a6355ae80fa.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":114,"deletions":267}}},{"hash":"705a5e72c1b217a20e6774269d0a26d057dbf57f","isMergeCommit":false,"messageTitle":"feat: Add Storage feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":267,"deletions":114}}},{"hash":"777b1df3003ee43f3baa4e53f8d73dd3be7de4d3","isMergeCommit":false,"messageTitle":"feat: Add Storage feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"b1fa781bb6cb6f41b29c449458f13a136b04e7fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"f30e5874a46fdf32a22f73041b3b16d331feb52d","isMergeCommit":false,"messageTitle":"feat: Add Date and Time feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":36,"deletions":23}}},{"hash":"86ead6a21ed05680e11c08ef8651566df0f3df1a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"shawnnlimm":{"java":452,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":24}},"authorContributionVariance":{"shawnnlimm":114030.64},"authorDisplayNameMap":{"shawnnlimm":"CS2103T-F11-1 SHAW..IJIE"}} +{"authorDailyContributionsMap":{"shawnnlimm":[{"date":"2024-01-22","commitResults":[{"hash":"e73834d72b8dc301a6b48843ceeb51b0aa714c94","isMergeCommit":false,"messageTitle":"feat: Add greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"6a11adf6f62c9e06f5ec8c0d306c311b754677e2","isMergeCommit":false,"messageTitle":"feat: Add echo command","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":7}}},{"hash":"b778b7c940a4239e2a6ed28ca3acab319bab51e1","isMergeCommit":false,"messageTitle":"feat: Add list feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}}]},{"date":"2024-01-23","commitResults":[{"hash":"70e740bb146cd01ce79304da661e29031f29dc02","isMergeCommit":false,"messageTitle":"feat: Add mark as done/undone feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":16}}},{"hash":"03511e93d6aaf9b9632870a427c2862e42992315","isMergeCommit":false,"messageTitle":"feat: Add ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":24}}}]},{"date":"2024-01-24","commitResults":[{"hash":"6c56be21a5d87f7ba981af51dbc8815ba174bdb4","isMergeCommit":false,"messageTitle":"test: Add Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"java":{"insertions":32,"deletions":31}}},{"hash":"a7b41fc31a16cb6f4e4675210f65e7db67f43711","isMergeCommit":false,"messageTitle":"feat: Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":119,"deletions":24}}},{"hash":"2c831bceaa2bb2ccc9b12e5cb2a9c26e4ff6943d","isMergeCommit":false,"messageTitle":"feat: Add Delete Task feature","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":15,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"cb7afedc43aa8dd46d9809b892ba1a6355ae80fa","isMergeCommit":false,"messageTitle":"feat: Add Storage feature","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":267,"deletions":114}}},{"hash":"6ebd38ab5dbde890627b4bec362b19d9fe42fd2c","isMergeCommit":false,"messageTitle":"Revert \"feat: Add Storage feature\"","messageBody":"This reverts commit cb7afedc43aa8dd46d9809b892ba1a6355ae80fa.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":114,"deletions":267}}},{"hash":"705a5e72c1b217a20e6774269d0a26d057dbf57f","isMergeCommit":false,"messageTitle":"feat: Add Storage feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":267,"deletions":114}}},{"hash":"777b1df3003ee43f3baa4e53f8d73dd3be7de4d3","isMergeCommit":false,"messageTitle":"feat: Add Storage feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"b1fa781bb6cb6f41b29c449458f13a136b04e7fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"f30e5874a46fdf32a22f73041b3b16d331feb52d","isMergeCommit":false,"messageTitle":"feat: Add Date and Time feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":36,"deletions":23}}},{"hash":"86ead6a21ed05680e11c08ef8651566df0f3df1a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"1cf01fd61ddcaee2f4a874fa6f478248b3ba9d4a","isMergeCommit":false,"messageTitle":"refactor: Add packages","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":49,"deletions":5}}}]}]},"authorFileTypeContributionMap":{"shawnnlimm":{"java":496,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":23}},"authorContributionVariance":{"shawnnlimm":98046.57},"authorDisplayNameMap":{"shawnnlimm":"CS2103T-F11-1 SHAW..IJIE"}} diff --git a/shayaansultan_ip_master/authorship.json b/shayaansultan_ip_master/authorship.json index 418d0fb8..2f39cf7a 100644 --- a/shayaansultan_ip_master/authorship.json +++ b/shayaansultan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" protected String by;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" public Duke() {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" private void greet() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Hello! I\u0027m Bot\\nWhat can I do for you? \\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" private void exit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" private void echo(String input) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":" System.out.println(input + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"shayaansultan"},"content":" Duke bot \u003d new Duke();","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"shayaansultan"},"content":" bot.greet();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"shayaansultan"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"shayaansultan"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"shayaansultan"},"content":" Handler handler \u003d new Handler(bot.taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"shayaansultan"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"shayaansultan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"shayaansultan"},"content":" handler.handle(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"shayaansultan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"shayaansultan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"shayaansultan"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"shayaansultan"},"content":" sc.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"shayaansultan"},"content":" bot.exit();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"shayaansultan":39,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"shayaansultan":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" protected String from;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":" protected String to;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":" this.from \u003d from.split(\"from \")[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" this.to \u003d to.split(\"to \")[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":16}},{"path":"src/main/java/Handler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class Handler {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":" public Handler(TaskList taskList) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" public void handle(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" handleList();","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" handleMark(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" handleUnmark(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":" handleDelete(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" handleAdd(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"shayaansultan"},"content":" private void handleList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"shayaansultan"},"content":" taskList.displayTasks();","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"shayaansultan"},"content":" private void handleMark(String input) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"shayaansultan"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"shayaansultan"},"content":" taskList.markTaskAsDone(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"shayaansultan"},"content":" private void handleUnmark(String input) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"shayaansultan"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"shayaansultan"},"content":" taskList.unmarkTaskAsDone(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"shayaansultan"},"content":" private void handleAdd(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"shayaansultan"},"content":" taskList.addTask(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"shayaansultan"},"content":" private void handleDelete(String input) {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"shayaansultan"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"shayaansultan"},"content":" taskList.deleteTask(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"shayaansultan":45}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" private String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\" + this.toString() + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\" + this.toString() + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"shayaansultan"},"content":" return \"[\" + (isDone ? \"X\" : \" \") + \"] \" + description;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":24}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":" public TaskList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" public void addTask(String task) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" if (task.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" if (task.split(\"todo \").length \u003d\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty. \\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" newTask \u003d new ToDo(task.split(\"todo \")[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":" } else if (task.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" String[] deadline \u003d task.split(\"deadline \")[1].split(\" /by \");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":" newTask \u003d new Deadline(deadline[0], deadline[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"shayaansultan"},"content":" } else if (task.startsWith(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"shayaansultan"},"content":" String[] event \u003d task.split(\"event \")[1].split(\" /\");","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"shayaansultan"},"content":" newTask \u003d new Event(event[0], event[1], event[2]);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"shayaansultan"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"shayaansultan"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-( \\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"shayaansultan"},"content":" tasks.add(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + newTask.toString() + \"\\nNow you have \"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"shayaansultan"},"content":" + tasks.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"shayaansultan"},"content":" public void displayTasks() {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"shayaansultan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"shayaansultan"},"content":" System.out.println(i + 1 + \". \" + tasks.get(i).toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"shayaansultan"},"content":" System.out.println();","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"shayaansultan"},"content":" public void markTaskAsDone(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"shayaansultan"},"content":" tasks.get(index - 1).markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"shayaansultan"},"content":" public void unmarkTaskAsDone(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"shayaansultan"},"content":" tasks.get(index - 1).unmarkDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"shayaansultan"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + tasks.get(index - 1).toString() + \"\\nNow you have \"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"shayaansultan"},"content":" + (tasks.size() - 1) + \" tasks in the list.\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"shayaansultan"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":54}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"todo borrow book","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":4}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" protected String by;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" return \"D | \" + super.toString() + \" | \" + by;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" public static Deadline fromString(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" String[] split \u003d input.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":" Deadline deadline \u003d new Deadline(split[2], split[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" if (split[1].equals(\"X\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" return deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":22}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" public Duke() {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" this.storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" this.taskList \u003d new TaskList(storage.load(), storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Error reading/ creating file\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":" private void greet() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Hello! I\u0027m Bot\\nWhat can I do for you? \\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"shayaansultan"},"content":" private void exit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"shayaansultan"},"content":" private void echo(String input) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"shayaansultan"},"content":" System.out.println(input + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":32,"author":{"gitId":"shayaansultan"},"content":" Duke bot \u003d new Duke();","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"shayaansultan"},"content":" bot.greet();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"shayaansultan"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"shayaansultan"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"shayaansultan"},"content":" Handler handler \u003d new Handler(bot.taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"shayaansultan"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"shayaansultan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"shayaansultan"},"content":" handler.handle(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"shayaansultan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"shayaansultan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"shayaansultan"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"shayaansultan"},"content":" sc.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"shayaansultan"},"content":" bot.exit();","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"shayaansultan":48,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"shayaansultan":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" protected String from;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":" protected String to;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":" this.from \u003d from.split(\"from \")[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" this.to \u003d to.split(\"to \")[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" return \"E | \" + super.toString() + \" | \" + from + \" | \" + to;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" public static Event fromString(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" String[] split \u003d input.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":" Event event \u003d new Event(split[2], split[3], split[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" if (split[1].equals(\"X\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":" event.markAsDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"shayaansultan"},"content":" return event;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":25}},{"path":"src/main/java/Handler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class Handler {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":" public Handler(TaskList taskList) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" public void handle(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" handleList();","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" handleMark(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" handleUnmark(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":" handleDelete(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" handleAdd(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"shayaansultan"},"content":" private void handleList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"shayaansultan"},"content":" taskList.displayTasks();","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"shayaansultan"},"content":" private void handleMark(String input) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"shayaansultan"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"shayaansultan"},"content":" taskList.markTaskAsDone(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"shayaansultan"},"content":" private void handleUnmark(String input) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"shayaansultan"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"shayaansultan"},"content":" taskList.unmarkTaskAsDone(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"shayaansultan"},"content":" private void handleAdd(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"shayaansultan"},"content":" taskList.addTask(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"shayaansultan"},"content":" private void handleDelete(String input) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"shayaansultan"},"content":" int index \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"shayaansultan"},"content":" taskList.deleteTask(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"shayaansultan":45}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":" private String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Reading from \" + filePath + \"...\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" createFolder();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":" createFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" throw new DukeException(\"Error creating file\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"shayaansultan"},"content":" private void createFolder() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"shayaansultan"},"content":" Path path \u003d Paths.get(filePath).getParent();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"shayaansultan"},"content":" if (!Files.exists(path)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"shayaansultan"},"content":" Files.createDirectories(path);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"shayaansultan"},"content":" private void createFile() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"shayaansultan"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"shayaansultan"},"content":" if (!Files.exists(path)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"shayaansultan"},"content":" Files.createFile(path);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"shayaansultan"},"content":" public List\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"shayaansultan"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"shayaansultan"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"shayaansultan"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"shayaansultan"},"content":" List\u003cString\u003e lines \u003d Files.readAllLines(path);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"shayaansultan"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"shayaansultan"},"content":" tasks.add(Task.fromString(line));","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"shayaansultan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"shayaansultan"},"content":" public void save(List\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"shayaansultan"},"content":" List\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"shayaansultan"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"shayaansultan"},"content":" lines.add(task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"shayaansultan"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"shayaansultan"},"content":" if (!Files.exists(path)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"shayaansultan"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"shayaansultan"},"content":" Files.write(path, lines);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"shayaansultan":59}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" private String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\" + this.toString() + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\" + this.toString() + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"shayaansultan"},"content":" return (isDone ? \"X\" : \" \") + \" | \" + description;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"shayaansultan"},"content":" public static Task fromString(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"shayaansultan"},"content":" Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"shayaansultan"},"content":" if (input.startsWith(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"shayaansultan"},"content":" task \u003d ToDo.fromString(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"shayaansultan"},"content":" } else if (input.startsWith(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"shayaansultan"},"content":" task \u003d Deadline.fromString(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"shayaansultan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"shayaansultan"},"content":" task \u003d Event.fromString(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"shayaansultan"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":36}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" public TaskList() {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" public TaskList(List\u003cTask\u003e tasks, Storage storage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" public void addTask(String task) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":" if (task.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"shayaansultan"},"content":" if (task.split(\"todo \").length \u003d\u003d 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"shayaansultan"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty. \\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"shayaansultan"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"shayaansultan"},"content":" newTask \u003d new ToDo(task.split(\"todo \")[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"shayaansultan"},"content":" } else if (task.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"shayaansultan"},"content":" String[] deadline \u003d task.split(\"deadline \")[1].split(\" /by \");","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"shayaansultan"},"content":" newTask \u003d new Deadline(deadline[0], deadline[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"shayaansultan"},"content":" } else if (task.startsWith(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"shayaansultan"},"content":" String[] event \u003d task.split(\"event \")[1].split(\" /\");","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"shayaansultan"},"content":" newTask \u003d new Event(event[0], event[1], event[2]);","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"shayaansultan"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"shayaansultan"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-( \\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"shayaansultan"},"content":" tasks.add(newTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + newTask.toString() + \"\\nNow you have \"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"shayaansultan"},"content":" + tasks.size() + \" tasks in the list.\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"shayaansultan"},"content":" updateStorage();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"shayaansultan"},"content":" public void displayTasks() {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"shayaansultan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"shayaansultan"},"content":" System.out.println(i + 1 + \". \" + tasks.get(i).toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"shayaansultan"},"content":" System.out.println();","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"shayaansultan"},"content":" public void markTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"shayaansultan"},"content":" tasks.get(index - 1).markAsDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"shayaansultan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"shayaansultan"},"content":" updateStorage();","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"shayaansultan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"shayaansultan"},"content":" throw new DukeException(\"Error updating storage\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"shayaansultan"},"content":" public void unmarkTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"shayaansultan"},"content":" tasks.get(index - 1).unmarkDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"shayaansultan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"shayaansultan"},"content":" updateStorage();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"shayaansultan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"shayaansultan"},"content":" throw new DukeException(\"Error updating storage\");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"shayaansultan"},"content":" public void deleteTask(int index) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + tasks.get(index - 1).toString() + \"\\nNow you have \"","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"shayaansultan"},"content":" + (tasks.size() - 1) + \" tasks in the list.\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"shayaansultan"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"shayaansultan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"shayaansultan"},"content":" updateStorage();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"shayaansultan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"shayaansultan"},"content":" throw new DukeException(\"Error updating storage\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"shayaansultan"},"content":" public void updateStorage() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"shayaansultan"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"shayaansultan"},"content":" storage.save(tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"shayaansultan"},"content":" System.out.println(\"Storage updated\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"shayaansultan"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"shayaansultan"},"content":" throw new DukeException(\"Error updating storage\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":87}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"shayaansultan"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"shayaansultan"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"shayaansultan"},"content":" return \"T | \" + super.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"shayaansultan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"shayaansultan"},"content":" public static ToDo fromString(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"shayaansultan"},"content":" String[] split \u003d input.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"shayaansultan"},"content":" ToDo todo \u003d new ToDo(split[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"shayaansultan"},"content":" if (split[1].equals(\"X\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"shayaansultan"},"content":" todo.markAsDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"shayaansultan"},"content":" return todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"shayaansultan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"shayaansultan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shayaansultan"},"content":"todo borrow book","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"shayaansultan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"shayaansultan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"shayaansultan"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"shayaansultan":4}}] diff --git a/shayaansultan_ip_master/commits.json b/shayaansultan_ip_master/commits.json index 30408170..6fe4f460 100644 --- a/shayaansultan_ip_master/commits.json +++ b/shayaansultan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"shayaansultan":[{"date":"2024-01-26","commitResults":[{"hash":"9418fc01021bf5098c55718e17513b0c47e39571","isMergeCommit":false,"messageTitle":"Level-0: Greet and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"f52bb26957f25e6768b7b0c8cf246a7f80c78c4c","isMergeCommit":false,"messageTitle":"Level-1: Echo and Exit","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"6e69ba51549b938693df33e64774dea4cad104f4","isMergeCommit":false,"messageTitle":"Level-2: Add and List with TaskList class","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":4}}},{"hash":"959deb39e7e7e19c2755269ab867d6cea1085d2b","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":4}}},{"hash":"9f08df65e7f4cb218b60be52da96f2c150803136","isMergeCommit":false,"messageTitle":"Level-4: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":2}}},{"hash":"9b72265887d64a348ac6f0c1953c97f2cbef5c11","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Implement text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"82be9f839e961aae9f3f654c529703e900bb8f58","isMergeCommit":false,"messageTitle":"Completed Level 5, Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":16}}},{"hash":"e8ad12af76f23a42dd4063baeae0e2e3aeec5387","isMergeCommit":false,"messageTitle":"Level-6 Completed, Added Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"824751ed131dbb0f91b40b50bba2fcd2354738c5","isMergeCommit":false,"messageTitle":"Improved error handling for Level 5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":11}}}]}]},"authorFileTypeContributionMap":{"shayaansultan":{"java":206,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":4}},"authorContributionVariance":{"shayaansultan":2958.2314},"authorDisplayNameMap":{"shayaansultan":"CS2103T-T17-2 SULT..YAAN"}} +{"authorDailyContributionsMap":{"shayaansultan":[{"date":"2024-01-26","commitResults":[{"hash":"9418fc01021bf5098c55718e17513b0c47e39571","isMergeCommit":false,"messageTitle":"Level-0: Greet and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"f52bb26957f25e6768b7b0c8cf246a7f80c78c4c","isMergeCommit":false,"messageTitle":"Level-1: Echo and Exit","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"6e69ba51549b938693df33e64774dea4cad104f4","isMergeCommit":false,"messageTitle":"Level-2: Add and List with TaskList class","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":4}}},{"hash":"959deb39e7e7e19c2755269ab867d6cea1085d2b","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":4}}},{"hash":"9f08df65e7f4cb218b60be52da96f2c150803136","isMergeCommit":false,"messageTitle":"Level-4: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":2}}},{"hash":"9b72265887d64a348ac6f0c1953c97f2cbef5c11","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Implement text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"82be9f839e961aae9f3f654c529703e900bb8f58","isMergeCommit":false,"messageTitle":"Completed Level 5, Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":16}}},{"hash":"e8ad12af76f23a42dd4063baeae0e2e3aeec5387","isMergeCommit":false,"messageTitle":"Level-6 Completed, Added Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"824751ed131dbb0f91b40b50bba2fcd2354738c5","isMergeCommit":false,"messageTitle":"Improved error handling for Level 5","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":11}}},{"hash":"bc1d6e10a1fa6d059913ad53efa45cb0e3e61a91","isMergeCommit":false,"messageTitle":"Created Storage Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"c93bb6e6b0782997ae9486d7fd6ece54259d1220","isMergeCommit":false,"messageTitle":"Reformat strings for Tasks for easier parsing for Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"b5b8cd9fa81e683f1b8146e423d795978e841e68","isMergeCommit":false,"messageTitle":"Add error handling for folder and/or file not existing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"9c801de95eec2eb18ee0ba0ee8abf3cc9183d761","isMergeCommit":false,"messageTitle":"Add fromString for Task Classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"7aa026c9977c1f1e085bb438ddb7aa1bf52fa669","isMergeCommit":false,"messageTitle":"Completed Level 7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":7}}},{"hash":"286450331df2672955ed3a3996c2e03de3b0a37f","isMergeCommit":true,"messageTitle":"Merge Level 7 changes","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"shayaansultan":{"java":346,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":4}},"authorContributionVariance":{"shayaansultan":3570.3054},"authorDisplayNameMap":{"shayaansultan":"CS2103T-T17-2 SULT..YAAN"}} diff --git a/summary.json b/summary.json index 57144318..4bb449cf 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"6481806501","reportGeneratedTime":"Tue Jan 30 14:31:56 2024 UTC+08:00","reportGenerationTime":" 1 minute(s) 23.30 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 iP Code Dashboard","repos":[{"location":{"location":"https://github.com/darryl-chan/ip.git","repoName":"ip","organization":"darryl-chan","domainName":"github"},"branch":"master","displayName":"darryl-chan/ip[master]","outputFolderName":"darryl-chan_ip_master"},{"location":{"location":"https://github.com/gowthaman-01/ip.git","repoName":"ip","organization":"gowthaman-01","domainName":"github"},"branch":"master","displayName":"gowthaman-01/ip[master]","outputFolderName":"gowthaman-01_ip_master"},{"location":{"location":"https://github.com/ChrisHo1341/ip.git","repoName":"ip","organization":"ChrisHo1341","domainName":"github"},"branch":"master","displayName":"ChrisHo1341/ip[master]","outputFolderName":"ChrisHo1341_ip_master"},{"location":{"location":"https://github.com/sebin0817/ip.git","repoName":"ip","organization":"sebin0817","domainName":"github"},"branch":"master","displayName":"sebin0817/ip[master]","outputFolderName":"sebin0817_ip_master"},{"location":{"location":"https://github.com/tanjiajiajun/ip.git","repoName":"ip","organization":"tanjiajiajun","domainName":"github"},"branch":"master","displayName":"tanjiajiajun/ip[master]","outputFolderName":"tanjiajiajun_ip_master"},{"location":{"location":"https://github.com/Arixeyeion/ip.git","repoName":"ip","organization":"Arixeyeion","domainName":"github"},"branch":"master","displayName":"Arixeyeion/ip[master]","outputFolderName":"Arixeyeion_ip_master"},{"location":{"location":"https://github.com/jeremiahlzz/ip.git","repoName":"ip","organization":"jeremiahlzz","domainName":"github"},"branch":"master","displayName":"jeremiahlzz/ip[master]","outputFolderName":"jeremiahlzz_ip_master"},{"location":{"location":"https://github.com/joenus/ip.git","repoName":"ip","organization":"joenus","domainName":"github"},"branch":"master","displayName":"joenus/ip[master]","outputFolderName":"joenus_ip_master"},{"location":{"location":"https://github.com/xinen26/ip.git","repoName":"ip","organization":"xinen26","domainName":"github"},"branch":"master","displayName":"xinen26/ip[master]","outputFolderName":"xinen26_ip_master"},{"location":{"location":"https://github.com/matthewken19/ip.git","repoName":"ip","organization":"matthewken19","domainName":"github"},"branch":"master","displayName":"matthewken19/ip[master]","outputFolderName":"matthewken19_ip_master"},{"location":{"location":"https://github.com/YuZizhen/ip.git","repoName":"ip","organization":"YuZizhen","domainName":"github"},"branch":"master","displayName":"YuZizhen/ip[master]","outputFolderName":"YuZizhen_ip_master"},{"location":{"location":"https://github.com/marclamp/ip.git","repoName":"ip","organization":"marclamp","domainName":"github"},"branch":"master","displayName":"marclamp/ip[master]","outputFolderName":"marclamp_ip_master"},{"location":{"location":"https://github.com/fy17ohhh/ip.git","repoName":"ip","organization":"fy17ohhh","domainName":"github"},"branch":"master","displayName":"fy17ohhh/ip[master]","outputFolderName":"fy17ohhh_ip_master"},{"location":{"location":"https://github.com/lihaoquan/ip.git","repoName":"ip","organization":"lihaoquan","domainName":"github"},"branch":"master","displayName":"lihaoquan/ip[master]","outputFolderName":"lihaoquan_ip_master"},{"location":{"location":"https://github.com/guohuang88/ip.git","repoName":"ip","organization":"guohuang88","domainName":"github"},"branch":"master","displayName":"guohuang88/ip[master]","outputFolderName":"guohuang88_ip_master"},{"location":{"location":"https://github.com/redcolorbicycle/ip.git","repoName":"ip","organization":"redcolorbicycle","domainName":"github"},"branch":"master","displayName":"redcolorbicycle/ip[master]","outputFolderName":"redcolorbicycle_ip_master"},{"location":{"location":"https://github.com/Jerome-j/ip.git","repoName":"ip","organization":"Jerome-j","domainName":"github"},"branch":"master","displayName":"Jerome-j/ip[master]","outputFolderName":"Jerome-j_ip_master"},{"location":{"location":"https://github.com/sethteo/ip.git","repoName":"ip","organization":"sethteo","domainName":"github"},"branch":"master","displayName":"sethteo/ip[master]","outputFolderName":"sethteo_ip_master"},{"location":{"location":"https://github.com/TopKec/ip.git","repoName":"ip","organization":"TopKec","domainName":"github"},"branch":"master","displayName":"TopKec/ip[master]","outputFolderName":"TopKec_ip_master"},{"location":{"location":"https://github.com/joelgoh1/ip.git","repoName":"ip","organization":"joelgoh1","domainName":"github"},"branch":"master","displayName":"joelgoh1/ip[master]","outputFolderName":"joelgoh1_ip_master"},{"location":{"location":"https://github.com/chewbum/ip.git","repoName":"ip","organization":"chewbum","domainName":"github"},"branch":"master","displayName":"chewbum/ip[master]","outputFolderName":"chewbum_ip_master"},{"location":{"location":"https://github.com/timothysashimi/ip.git","repoName":"ip","organization":"timothysashimi","domainName":"github"},"branch":"master","displayName":"timothysashimi/ip[master]","outputFolderName":"timothysashimi_ip_master"},{"location":{"location":"https://github.com/beefsausagee/ip.git","repoName":"ip","organization":"beefsausagee","domainName":"github"},"branch":"master","displayName":"beefsausagee/ip[master]","outputFolderName":"beefsausagee_ip_master"},{"location":{"location":"https://github.com/jaejayrome/ip.git","repoName":"ip","organization":"jaejayrome","domainName":"github"},"branch":"master","displayName":"jaejayrome/ip[master]","outputFolderName":"jaejayrome_ip_master"},{"location":{"location":"https://github.com/KhoonSun47/ip.git","repoName":"ip","organization":"KhoonSun47","domainName":"github"},"branch":"master","displayName":"KhoonSun47/ip[master]","outputFolderName":"KhoonSun47_ip_master"},{"location":{"location":"https://github.com/Dethada/ip.git","repoName":"ip","organization":"Dethada","domainName":"github"},"branch":"master","displayName":"Dethada/ip[master]","outputFolderName":"Dethada_ip_master"},{"location":{"location":"https://github.com/AL-ZT/ip.git","repoName":"ip","organization":"AL-ZT","domainName":"github"},"branch":"master","displayName":"AL-ZT/ip[master]","outputFolderName":"AL-ZT_ip_master"},{"location":{"location":"https://github.com/Javiery3889/ip.git","repoName":"ip","organization":"Javiery3889","domainName":"github"},"branch":"master","displayName":"Javiery3889/ip[master]","outputFolderName":"Javiery3889_ip_master"},{"location":{"location":"https://github.com/garywongkai/ip.git","repoName":"ip","organization":"garywongkai","domainName":"github"},"branch":"master","displayName":"garywongkai/ip[master]","outputFolderName":"garywongkai_ip_master"},{"location":{"location":"https://github.com/ys112/ip.git","repoName":"ip","organization":"ys112","domainName":"github"},"branch":"master","displayName":"ys112/ip[master]","outputFolderName":"ys112_ip_master"},{"location":{"location":"https://github.com/jmsandiegoo/ip.git","repoName":"ip","organization":"jmsandiegoo","domainName":"github"},"branch":"master","displayName":"jmsandiegoo/ip[master]","outputFolderName":"jmsandiegoo_ip_master"},{"location":{"location":"https://github.com/KohGuanZeh/ip.git","repoName":"ip","organization":"KohGuanZeh","domainName":"github"},"branch":"master","displayName":"KohGuanZeh/ip[master]","outputFolderName":"KohGuanZeh_ip_master"},{"location":{"location":"https://github.com/felixchanyy/ip.git","repoName":"ip","organization":"felixchanyy","domainName":"github"},"branch":"master","displayName":"felixchanyy/ip[master]","outputFolderName":"felixchanyy_ip_master"},{"location":{"location":"https://github.com/tanqinyong/ip.git","repoName":"ip","organization":"tanqinyong","domainName":"github"},"branch":"master","displayName":"tanqinyong/ip[master]","outputFolderName":"tanqinyong_ip_master"},{"location":{"location":"https://github.com/Hwww23/ip.git","repoName":"ip","organization":"Hwww23","domainName":"github"},"branch":"master","displayName":"Hwww23/ip[master]","outputFolderName":"Hwww23_ip_master"},{"location":{"location":"https://github.com/zengzihui/ip.git","repoName":"ip","organization":"zengzihui","domainName":"github"},"branch":"master","displayName":"zengzihui/ip[master]","outputFolderName":"zengzihui_ip_master"},{"location":{"location":"https://github.com/Pluiexo/ip.git","repoName":"ip","organization":"Pluiexo","domainName":"github"},"branch":"master","displayName":"Pluiexo/ip[master]","outputFolderName":"Pluiexo_ip_master"},{"location":{"location":"https://github.com/yap-zong-xin/ip.git","repoName":"ip","organization":"yap-zong-xin","domainName":"github"},"branch":"master","displayName":"yap-zong-xin/ip[master]","outputFolderName":"yap-zong-xin_ip_master"},{"location":{"location":"https://github.com/JonChong98/ip.git","repoName":"ip","organization":"JonChong98","domainName":"github"},"branch":"master","displayName":"JonChong98/ip[master]","outputFolderName":"JonChong98_ip_master"},{"location":{"location":"https://github.com/lokidoki102/ip.git","repoName":"ip","organization":"lokidoki102","domainName":"github"},"branch":"master","displayName":"lokidoki102/ip[master]","outputFolderName":"lokidoki102_ip_master"},{"location":{"location":"https://github.com/choowengyan/ip.git","repoName":"ip","organization":"choowengyan","domainName":"github"},"branch":"master","displayName":"choowengyan/ip[master]","outputFolderName":"choowengyan_ip_master"},{"location":{"location":"https://github.com/SherisseTJW/ip.git","repoName":"ip","organization":"SherisseTJW","domainName":"github"},"branch":"master","displayName":"SherisseTJW/ip[master]","outputFolderName":"SherisseTJW_ip_master"},{"location":{"location":"https://github.com/iynixil/ip.git","repoName":"ip","organization":"iynixil","domainName":"github"},"branch":"master","displayName":"iynixil/ip[master]","outputFolderName":"iynixil_ip_master"},{"location":{"location":"https://github.com/whitesnowx/ip.git","repoName":"ip","organization":"whitesnowx","domainName":"github"},"branch":"master","displayName":"whitesnowx/ip[master]","outputFolderName":"whitesnowx_ip_master"},{"location":{"location":"https://github.com/AwJoey/ip.git","repoName":"ip","organization":"AwJoey","domainName":"github"},"branch":"master","displayName":"AwJoey/ip[master]","outputFolderName":"AwJoey_ip_master"},{"location":{"location":"https://github.com/rickkoh/ip.git","repoName":"ip","organization":"rickkoh","domainName":"github"},"branch":"master","displayName":"rickkoh/ip[master]","outputFolderName":"rickkoh_ip_master"},{"location":{"location":"https://github.com/caitlyntang/ip.git","repoName":"ip","organization":"caitlyntang","domainName":"github"},"branch":"master","displayName":"caitlyntang/ip[master]","outputFolderName":"caitlyntang_ip_master"},{"location":{"location":"https://github.com/tsulim/ip.git","repoName":"ip","organization":"tsulim","domainName":"github"},"branch":"master","displayName":"tsulim/ip[master]","outputFolderName":"tsulim_ip_master"},{"location":{"location":"https://github.com/Darylgolden/ip.git","repoName":"ip","organization":"Darylgolden","domainName":"github"},"branch":"master","displayName":"Darylgolden/ip[master]","outputFolderName":"Darylgolden_ip_master"},{"location":{"location":"https://github.com/biinnnggggg/ip.git","repoName":"ip","organization":"biinnnggggg","domainName":"github"},"branch":"master","displayName":"biinnnggggg/ip[master]","outputFolderName":"biinnnggggg_ip_master"},{"location":{"location":"https://github.com/Ma-Yirui/ip.git","repoName":"ip","organization":"Ma-Yirui","domainName":"github"},"branch":"master","displayName":"Ma-Yirui/ip[master]","outputFolderName":"Ma-Yirui_ip_master"},{"location":{"location":"https://github.com/itstrueitstrueitsrealitsreal/ip.git","repoName":"ip","organization":"itstrueitstrueitsrealitsreal","domainName":"github"},"branch":"master","displayName":"itstrueitstrueitsrealitsreal/ip[master]","outputFolderName":"itstrueitstrueitsrealitsreal_ip_master"},{"location":{"location":"https://github.com/vnnamng/ip.git","repoName":"ip","organization":"vnnamng","domainName":"github"},"branch":"master","displayName":"vnnamng/ip[master]","outputFolderName":"vnnamng_ip_master"},{"location":{"location":"https://github.com/minwaiphyo/ip.git","repoName":"ip","organization":"minwaiphyo","domainName":"github"},"branch":"master","displayName":"minwaiphyo/ip[master]","outputFolderName":"minwaiphyo_ip_master"},{"location":{"location":"https://github.com/amanzainal/ip.git","repoName":"ip","organization":"amanzainal","domainName":"github"},"branch":"master","displayName":"amanzainal/ip[master]","outputFolderName":"amanzainal_ip_master"},{"location":{"location":"https://github.com/raysonchia/ip.git","repoName":"ip","organization":"raysonchia","domainName":"github"},"branch":"master","displayName":"raysonchia/ip[master]","outputFolderName":"raysonchia_ip_master"},{"location":{"location":"https://github.com/zoebelle-pang/ip.git","repoName":"ip","organization":"zoebelle-pang","domainName":"github"},"branch":"master","displayName":"zoebelle-pang/ip[master]","outputFolderName":"zoebelle-pang_ip_master"},{"location":{"location":"https://github.com/DominicFuMJ/ip.git","repoName":"ip","organization":"DominicFuMJ","domainName":"github"},"branch":"master","displayName":"DominicFuMJ/ip[master]","outputFolderName":"DominicFuMJ_ip_master"},{"location":{"location":"https://github.com/NeoHW/ip.git","repoName":"ip","organization":"NeoHW","domainName":"github"},"branch":"master","displayName":"NeoHW/ip[master]","outputFolderName":"NeoHW_ip_master"},{"location":{"location":"https://github.com/ZhiWei1010/ip.git","repoName":"ip","organization":"ZhiWei1010","domainName":"github"},"branch":"master","displayName":"ZhiWei1010/ip[master]","outputFolderName":"ZhiWei1010_ip_master"},{"location":{"location":"https://github.com/tankh99/ip.git","repoName":"ip","organization":"tankh99","domainName":"github"},"branch":"master","displayName":"tankh99/ip[master]","outputFolderName":"tankh99_ip_master"},{"location":{"location":"https://github.com/YuvBindal/ip.git","repoName":"ip","organization":"YuvBindal","domainName":"github"},"branch":"master","displayName":"YuvBindal/ip[master]","outputFolderName":"YuvBindal_ip_master"},{"location":{"location":"https://github.com/chiralcentre/ip.git","repoName":"ip","organization":"chiralcentre","domainName":"github"},"branch":"master","displayName":"chiralcentre/ip[master]","outputFolderName":"chiralcentre_ip_master"},{"location":{"location":"https://github.com/cocoanautz/ip.git","repoName":"ip","organization":"cocoanautz","domainName":"github"},"branch":"master","displayName":"cocoanautz/ip[master]","outputFolderName":"cocoanautz_ip_master"},{"location":{"location":"https://github.com/martinng01/ip.git","repoName":"ip","organization":"martinng01","domainName":"github"},"branch":"master","displayName":"martinng01/ip[master]","outputFolderName":"martinng01_ip_master"},{"location":{"location":"https://github.com/pjanthony2001/ip.git","repoName":"ip","organization":"pjanthony2001","domainName":"github"},"branch":"master","displayName":"pjanthony2001/ip[master]","outputFolderName":"pjanthony2001_ip_master"},{"location":{"location":"https://github.com/yuechen2001/ip.git","repoName":"ip","organization":"yuechen2001","domainName":"github"},"branch":"master","displayName":"yuechen2001/ip[master]","outputFolderName":"yuechen2001_ip_master"},{"location":{"location":"https://github.com/SampsonYe1999/ip.git","repoName":"ip","organization":"SampsonYe1999","domainName":"github"},"branch":"master","displayName":"SampsonYe1999/ip[master]","outputFolderName":"SampsonYe1999_ip_master"},{"location":{"location":"https://github.com/ejnan/ip.git","repoName":"ip","organization":"ejnan","domainName":"github"},"branch":"master","displayName":"ejnan/ip[master]","outputFolderName":"ejnan_ip_master"},{"location":{"location":"https://github.com/c-j-lh/ip.git","repoName":"ip","organization":"c-j-lh","domainName":"github"},"branch":"master","displayName":"c-j-lh/ip[master]","outputFolderName":"c-j-lh_ip_master"},{"location":{"location":"https://github.com/xiaorui-ui/ip.git","repoName":"ip","organization":"xiaorui-ui","domainName":"github"},"branch":"master","displayName":"xiaorui-ui/ip[master]","outputFolderName":"xiaorui-ui_ip_master"},{"location":{"location":"https://github.com/qinboan/ip.git","repoName":"ip","organization":"qinboan","domainName":"github"},"branch":"master","displayName":"qinboan/ip[master]","outputFolderName":"qinboan_ip_master"},{"location":{"location":"https://github.com/qinxutan/ip.git","repoName":"ip","organization":"qinxutan","domainName":"github"},"branch":"master","displayName":"qinxutan/ip[master]","outputFolderName":"qinxutan_ip_master"},{"location":{"location":"https://github.com/S-Aishvarya/ip.git","repoName":"ip","organization":"S-Aishvarya","domainName":"github"},"branch":"master","displayName":"S-Aishvarya/ip[master]","outputFolderName":"S-Aishvarya_ip_master"},{"location":{"location":"https://github.com/zhekaiii/ip.git","repoName":"ip","organization":"zhekaiii","domainName":"github"},"branch":"master","displayName":"zhekaiii/ip[master]","outputFolderName":"zhekaiii_ip_master"},{"location":{"location":"https://github.com/taeewonnn/ip.git","repoName":"ip","organization":"taeewonnn","domainName":"github"},"branch":"master","displayName":"taeewonnn/ip[master]","outputFolderName":"taeewonnn_ip_master"},{"location":{"location":"https://github.com/hjungwoo01/ip.git","repoName":"ip","organization":"hjungwoo01","domainName":"github"},"branch":"master","displayName":"hjungwoo01/ip[master]","outputFolderName":"hjungwoo01_ip_master"},{"location":{"location":"https://github.com/ForAeons/ip.git","repoName":"ip","organization":"ForAeons","domainName":"github"},"branch":"master","displayName":"ForAeons/ip[master]","outputFolderName":"ForAeons_ip_master"},{"location":{"location":"https://github.com/minghowC/ip.git","repoName":"ip","organization":"minghowC","domainName":"github"},"branch":"master","displayName":"minghowC/ip[master]","outputFolderName":"minghowC_ip_master"},{"location":{"location":"https://github.com/E0735389/ip.git","repoName":"ip","organization":"E0735389","domainName":"github"},"branch":"master","displayName":"E0735389/ip[master]","outputFolderName":"E0735389_ip_master"},{"location":{"location":"https://github.com/Ty-stan0417/ip.git","repoName":"ip","organization":"Ty-stan0417","domainName":"github"},"branch":"master","displayName":"Ty-stan0417/ip[master]","outputFolderName":"Ty-stan0417_ip_master"},{"location":{"location":"https://github.com/dabzpengu/ip.git","repoName":"ip","organization":"dabzpengu","domainName":"github"},"branch":"master","displayName":"dabzpengu/ip[master]","outputFolderName":"dabzpengu_ip_master"},{"location":{"location":"https://github.com/rizkidelta/ip.git","repoName":"ip","organization":"rizkidelta","domainName":"github"},"branch":"master","displayName":"rizkidelta/ip[master]","outputFolderName":"rizkidelta_ip_master"},{"location":{"location":"https://github.com/wilsonwid/ip.git","repoName":"ip","organization":"wilsonwid","domainName":"github"},"branch":"master","displayName":"wilsonwid/ip[master]","outputFolderName":"wilsonwid_ip_master"},{"location":{"location":"https://github.com/chiageng/ip.git","repoName":"ip","organization":"chiageng","domainName":"github"},"branch":"master","displayName":"chiageng/ip[master]","outputFolderName":"chiageng_ip_master"},{"location":{"location":"https://github.com/julia-cp/ip.git","repoName":"ip","organization":"julia-cp","domainName":"github"},"branch":"master","displayName":"julia-cp/ip[master]","outputFolderName":"julia-cp_ip_master"},{"location":{"location":"https://github.com/ZHANGTIANYAO1/ip.git","repoName":"ip","organization":"ZHANGTIANYAO1","domainName":"github"},"branch":"master","displayName":"ZHANGTIANYAO1/ip[master]","outputFolderName":"ZHANGTIANYAO1_ip_master"},{"location":{"location":"https://github.com/LifHoshi/ip.git","repoName":"ip","organization":"LifHoshi","domainName":"github"},"branch":"master","displayName":"LifHoshi/ip[master]","outputFolderName":"LifHoshi_ip_master"},{"location":{"location":"https://github.com/ananya21/ip.git","repoName":"ip","organization":"ananya21","domainName":"github"},"branch":"master","displayName":"ananya21/ip[master]","outputFolderName":"ananya21_ip_master"},{"location":{"location":"https://github.com/acekhoon/ip.git","repoName":"ip","organization":"acekhoon","domainName":"github"},"branch":"master","displayName":"acekhoon/ip[master]","outputFolderName":"acekhoon_ip_master"},{"location":{"location":"https://github.com/willowisp01/ip.git","repoName":"ip","organization":"willowisp01","domainName":"github"},"branch":"master","displayName":"willowisp01/ip[master]","outputFolderName":"willowisp01_ip_master"},{"location":{"location":"https://github.com/Jajared/ip.git","repoName":"ip","organization":"Jajared","domainName":"github"},"branch":"master","displayName":"Jajared/ip[master]","outputFolderName":"Jajared_ip_master"},{"location":{"location":"https://github.com/JerryO3/ip.git","repoName":"ip","organization":"JerryO3","domainName":"github"},"branch":"master","displayName":"JerryO3/ip[master]","outputFolderName":"JerryO3_ip_master"},{"location":{"location":"https://github.com/cyqjoseph/ip.git","repoName":"ip","organization":"cyqjoseph","domainName":"github"},"branch":"master","displayName":"cyqjoseph/ip[master]","outputFolderName":"cyqjoseph_ip_master"},{"location":{"location":"https://github.com/jieqiboh/ip.git","repoName":"ip","organization":"jieqiboh","domainName":"github"},"branch":"master","displayName":"jieqiboh/ip[master]","outputFolderName":"jieqiboh_ip_master"},{"location":{"location":"https://github.com/theman-oj10/ip.git","repoName":"ip","organization":"theman-oj10","domainName":"github"},"branch":"master","displayName":"theman-oj10/ip[master]","outputFolderName":"theman-oj10_ip_master"},{"location":{"location":"https://github.com/owenong1/ip.git","repoName":"ip","organization":"owenong1","domainName":"github"},"branch":"master","displayName":"owenong1/ip[master]","outputFolderName":"owenong1_ip_master"},{"location":{"location":"https://github.com/aureliony/ip.git","repoName":"ip","organization":"aureliony","domainName":"github"},"branch":"master","displayName":"aureliony/ip[master]","outputFolderName":"aureliony_ip_master"},{"location":{"location":"https://github.com/yisiox/ip.git","repoName":"ip","organization":"yisiox","domainName":"github"},"branch":"master","displayName":"yisiox/ip[master]","outputFolderName":"yisiox_ip_master"},{"location":{"location":"https://github.com/Darkarche3/ip.git","repoName":"ip","organization":"Darkarche3","domainName":"github"},"branch":"master","displayName":"Darkarche3/ip[master]","outputFolderName":"Darkarche3_ip_master"},{"location":{"location":"https://github.com/Jolonauh/ip.git","repoName":"ip","organization":"Jolonauh","domainName":"github"},"branch":"master","displayName":"Jolonauh/ip[master]","outputFolderName":"Jolonauh_ip_master"},{"location":{"location":"https://github.com/kervyntan/ip.git","repoName":"ip","organization":"kervyntan","domainName":"github"},"branch":"master","displayName":"kervyntan/ip[master]","outputFolderName":"kervyntan_ip_master"},{"location":{"location":"https://github.com/yashpola/ip.git","repoName":"ip","organization":"yashpola","domainName":"github"},"branch":"master","displayName":"yashpola/ip[master]","outputFolderName":"yashpola_ip_master"},{"location":{"location":"https://github.com/wongkj12/ip.git","repoName":"ip","organization":"wongkj12","domainName":"github"},"branch":"master","displayName":"wongkj12/ip[master]","outputFolderName":"wongkj12_ip_master"},{"location":{"location":"https://github.com/tituschewxj/ip.git","repoName":"ip","organization":"tituschewxj","domainName":"github"},"branch":"master","displayName":"tituschewxj/ip[master]","outputFolderName":"tituschewxj_ip_master"},{"location":{"location":"https://github.com/Zer0Legion/ip.git","repoName":"ip","organization":"Zer0Legion","domainName":"github"},"branch":"master","displayName":"Zer0Legion/ip[master]","outputFolderName":"Zer0Legion_ip_master"},{"location":{"location":"https://github.com/g-tejas/ip.git","repoName":"ip","organization":"g-tejas","domainName":"github"},"branch":"master","displayName":"g-tejas/ip[master]","outputFolderName":"g-tejas_ip_master"},{"location":{"location":"https://github.com/legionlegion/ip.git","repoName":"ip","organization":"legionlegion","domainName":"github"},"branch":"master","displayName":"legionlegion/ip[master]","outputFolderName":"legionlegion_ip_master"},{"location":{"location":"https://github.com/tanguoyang/ip.git","repoName":"ip","organization":"tanguoyang","domainName":"github"},"branch":"master","displayName":"tanguoyang/ip[master]","outputFolderName":"tanguoyang_ip_master"},{"location":{"location":"https://github.com/jovantanyk/ip.git","repoName":"ip","organization":"jovantanyk","domainName":"github"},"branch":"master","displayName":"jovantanyk/ip[master]","outputFolderName":"jovantanyk_ip_master"},{"location":{"location":"https://github.com/Xilef121/ip.git","repoName":"ip","organization":"Xilef121","domainName":"github"},"branch":"master","displayName":"Xilef121/ip[master]","outputFolderName":"Xilef121_ip_master"},{"location":{"location":"https://github.com/ziiqii/ip.git","repoName":"ip","organization":"ziiqii","domainName":"github"},"branch":"master","displayName":"ziiqii/ip[master]","outputFolderName":"ziiqii_ip_master"},{"location":{"location":"https://github.com/Bandov/ip.git","repoName":"ip","organization":"Bandov","domainName":"github"},"branch":"master","displayName":"Bandov/ip[master]","outputFolderName":"Bandov_ip_master"},{"location":{"location":"https://github.com/appleraincoat/ip.git","repoName":"ip","organization":"appleraincoat","domainName":"github"},"branch":"master","displayName":"appleraincoat/ip[master]","outputFolderName":"appleraincoat_ip_master"},{"location":{"location":"https://github.com/belligerentbeagle/ip.git","repoName":"ip","organization":"belligerentbeagle","domainName":"github"},"branch":"master","displayName":"belligerentbeagle/ip[master]","outputFolderName":"belligerentbeagle_ip_master"},{"location":{"location":"https://github.com/limrik/ip.git","repoName":"ip","organization":"limrik","domainName":"github"},"branch":"master","displayName":"limrik/ip[master]","outputFolderName":"limrik_ip_master"},{"location":{"location":"https://github.com/Tsenrae/ip.git","repoName":"ip","organization":"Tsenrae","domainName":"github"},"branch":"master","displayName":"Tsenrae/ip[master]","outputFolderName":"Tsenrae_ip_master"},{"location":{"location":"https://github.com/nichee/ip.git","repoName":"ip","organization":"nichee","domainName":"github"},"branch":"master","displayName":"nichee/ip[master]","outputFolderName":"nichee_ip_master"},{"location":{"location":"https://github.com/justincred/ip.git","repoName":"ip","organization":"justincred","domainName":"github"},"branch":"master","displayName":"justincred/ip[master]","outputFolderName":"justincred_ip_master"},{"location":{"location":"https://github.com/Tanzhiheng26/ip.git","repoName":"ip","organization":"Tanzhiheng26","domainName":"github"},"branch":"master","displayName":"Tanzhiheng26/ip[master]","outputFolderName":"Tanzhiheng26_ip_master"},{"location":{"location":"https://github.com/cliftonchee/ip.git","repoName":"ip","organization":"cliftonchee","domainName":"github"},"branch":"master","displayName":"cliftonchee/ip[master]","outputFolderName":"cliftonchee_ip_master"},{"location":{"location":"https://github.com/SimHanKiong/ip.git","repoName":"ip","organization":"SimHanKiong","domainName":"github"},"branch":"master","displayName":"SimHanKiong/ip[master]","outputFolderName":"SimHanKiong_ip_master"},{"location":{"location":"https://github.com/ChrysanthemumT/ip.git","repoName":"ip","organization":"ChrysanthemumT","domainName":"github"},"branch":"master","displayName":"ChrysanthemumT/ip[master]","outputFolderName":"ChrysanthemumT_ip_master"},{"location":{"location":"https://github.com/jyztintan/ip.git","repoName":"ip","organization":"jyztintan","domainName":"github"},"branch":"master","displayName":"jyztintan/ip[master]","outputFolderName":"jyztintan_ip_master"},{"location":{"location":"https://github.com/ondretann/ip.git","repoName":"ip","organization":"ondretann","domainName":"github"},"branch":"master","displayName":"ondretann/ip[master]","outputFolderName":"ondretann_ip_master"},{"location":{"location":"https://github.com/bryanyee33/ip.git","repoName":"ip","organization":"bryanyee33","domainName":"github"},"branch":"master","displayName":"bryanyee33/ip[master]","outputFolderName":"bryanyee33_ip_master"},{"location":{"location":"https://github.com/chonghaoen/ip.git","repoName":"ip","organization":"chonghaoen","domainName":"github"},"branch":"master","displayName":"chonghaoen/ip[master]","outputFolderName":"chonghaoen_ip_master"},{"location":{"location":"https://github.com/ronnnnnnnnn/ip.git","repoName":"ip","organization":"ronnnnnnnnn","domainName":"github"},"branch":"master","displayName":"ronnnnnnnnn/ip[master]","outputFolderName":"ronnnnnnnnn_ip_master"},{"location":{"location":"https://github.com/ChuaZenKhoon/ip.git","repoName":"ip","organization":"ChuaZenKhoon","domainName":"github"},"branch":"master","displayName":"ChuaZenKhoon/ip[master]","outputFolderName":"ChuaZenKhoon_ip_master"},{"location":{"location":"https://github.com/gerteck/ip.git","repoName":"ip","organization":"gerteck","domainName":"github"},"branch":"master","displayName":"gerteck/ip[master]","outputFolderName":"gerteck_ip_master"},{"location":{"location":"https://github.com/ReganChoy/ip.git","repoName":"ip","organization":"ReganChoy","domainName":"github"},"branch":"master","displayName":"ReganChoy/ip[master]","outputFolderName":"ReganChoy_ip_master"},{"location":{"location":"https://github.com/zhuuyicheng/ip.git","repoName":"ip","organization":"zhuuyicheng","domainName":"github"},"branch":"master","displayName":"zhuuyicheng/ip[master]","outputFolderName":"zhuuyicheng_ip_master"},{"location":{"location":"https://github.com/chaaaaun/ip.git","repoName":"ip","organization":"chaaaaun","domainName":"github"},"branch":"master","displayName":"chaaaaun/ip[master]","outputFolderName":"chaaaaun_ip_master"},{"location":{"location":"https://github.com/ChuaZiLong/ip.git","repoName":"ip","organization":"ChuaZiLong","domainName":"github"},"branch":"master","displayName":"ChuaZiLong/ip[master]","outputFolderName":"ChuaZiLong_ip_master"},{"location":{"location":"https://github.com/Benson15912/ip.git","repoName":"ip","organization":"Benson15912","domainName":"github"},"branch":"master","displayName":"Benson15912/ip[master]","outputFolderName":"Benson15912_ip_master"},{"location":{"location":"https://github.com/c-wenlong/ip.git","repoName":"ip","organization":"c-wenlong","domainName":"github"},"branch":"master","displayName":"c-wenlong/ip[master]","outputFolderName":"c-wenlong_ip_master"},{"location":{"location":"https://github.com/gavin331/ip.git","repoName":"ip","organization":"gavin331","domainName":"github"},"branch":"master","displayName":"gavin331/ip[master]","outputFolderName":"gavin331_ip_master"},{"location":{"location":"https://github.com/CJerrong/ip.git","repoName":"ip","organization":"CJerrong","domainName":"github"},"branch":"master","displayName":"CJerrong/ip[master]","outputFolderName":"CJerrong_ip_master"},{"location":{"location":"https://github.com/ibnu2651/ip.git","repoName":"ip","organization":"ibnu2651","domainName":"github"},"branch":"master","displayName":"ibnu2651/ip[master]","outputFolderName":"ibnu2651_ip_master"},{"location":{"location":"https://github.com/1rbg/ip.git","repoName":"ip","organization":"1rbg","domainName":"github"},"branch":"master","displayName":"1rbg/ip[master]","outputFolderName":"1rbg_ip_master"},{"location":{"location":"https://github.com/alvinnzz/ip.git","repoName":"ip","organization":"alvinnzz","domainName":"github"},"branch":"master","displayName":"alvinnzz/ip[master]","outputFolderName":"alvinnzz_ip_master"},{"location":{"location":"https://github.com/whelan-low/ip.git","repoName":"ip","organization":"whelan-low","domainName":"github"},"branch":"master","displayName":"whelan-low/ip[master]","outputFolderName":"whelan-low_ip_master"},{"location":{"location":"https://github.com/ReflectiveObsidian/ip.git","repoName":"ip","organization":"ReflectiveObsidian","domainName":"github"},"branch":"master","displayName":"ReflectiveObsidian/ip[master]","outputFolderName":"ReflectiveObsidian_ip_master"},{"location":{"location":"https://github.com/kwuunnn/ip.git","repoName":"ip","organization":"kwuunnn","domainName":"github"},"branch":"master","displayName":"kwuunnn/ip[master]","outputFolderName":"kwuunnn_ip_master"},{"location":{"location":"https://github.com/billyhoce/ip.git","repoName":"ip","organization":"billyhoce","domainName":"github"},"branch":"master","displayName":"billyhoce/ip[master]","outputFolderName":"billyhoce_ip_master"},{"location":{"location":"https://github.com/Ryo-Seah/ip.git","repoName":"ip","organization":"Ryo-Seah","domainName":"github"},"branch":"master","displayName":"Ryo-Seah/ip[master]","outputFolderName":"Ryo-Seah_ip_master"},{"location":{"location":"https://github.com/meowwtama/ip.git","repoName":"ip","organization":"meowwtama","domainName":"github"},"branch":"master","displayName":"meowwtama/ip[master]","outputFolderName":"meowwtama_ip_master"},{"location":{"location":"https://github.com/gingerbreaf/ip.git","repoName":"ip","organization":"gingerbreaf","domainName":"github"},"branch":"master","displayName":"gingerbreaf/ip[master]","outputFolderName":"gingerbreaf_ip_master"},{"location":{"location":"https://github.com/yeoshuheng/ip.git","repoName":"ip","organization":"yeoshuheng","domainName":"github"},"branch":"master","displayName":"yeoshuheng/ip[master]","outputFolderName":"yeoshuheng_ip_master"},{"location":{"location":"https://github.com/shaunlxw/ip.git","repoName":"ip","organization":"shaunlxw","domainName":"github"},"branch":"master","displayName":"shaunlxw/ip[master]","outputFolderName":"shaunlxw_ip_master"},{"location":{"location":"https://github.com/DingBao-sys/ip.git","repoName":"ip","organization":"DingBao-sys","domainName":"github"},"branch":"master","displayName":"DingBao-sys/ip[master]","outputFolderName":"DingBao-sys_ip_master"},{"location":{"location":"https://github.com/ashleyclx/ip.git","repoName":"ip","organization":"ashleyclx","domainName":"github"},"branch":"master","displayName":"ashleyclx/ip[master]","outputFolderName":"ashleyclx_ip_master"},{"location":{"location":"https://github.com/TheodoreKooo/ip.git","repoName":"ip","organization":"TheodoreKooo","domainName":"github"},"branch":"master","displayName":"TheodoreKooo/ip[master]","outputFolderName":"TheodoreKooo_ip_master"},{"location":{"location":"https://github.com/casaarlai/ip.git","repoName":"ip","organization":"casaarlai","domainName":"github"},"branch":"master","displayName":"casaarlai/ip[master]","outputFolderName":"casaarlai_ip_master"},{"location":{"location":"https://github.com/sun-ruiheng/ip.git","repoName":"ip","organization":"sun-ruiheng","domainName":"github"},"branch":"master","displayName":"sun-ruiheng/ip[master]","outputFolderName":"sun-ruiheng_ip_master"},{"location":{"location":"https://github.com/Fidget-Spinner/ip.git","repoName":"ip","organization":"Fidget-Spinner","domainName":"github"},"branch":"master","displayName":"Fidget-Spinner/ip[master]","outputFolderName":"Fidget-Spinner_ip_master"},{"location":{"location":"https://github.com/Cedricaca/ip.git","repoName":"ip","organization":"Cedricaca","domainName":"github"},"branch":"master","displayName":"Cedricaca/ip[master]","outputFolderName":"Cedricaca_ip_master"},{"location":{"location":"https://github.com/YowSiaoKang/ip.git","repoName":"ip","organization":"YowSiaoKang","domainName":"github"},"branch":"master","displayName":"YowSiaoKang/ip[master]","outputFolderName":"YowSiaoKang_ip_master"},{"location":{"location":"https://github.com/J-wang-CSMA/ip.git","repoName":"ip","organization":"J-wang-CSMA","domainName":"github"},"branch":"master","displayName":"J-wang-CSMA/ip[master]","outputFolderName":"J-wang-CSMA_ip_master"},{"location":{"location":"https://github.com/Ragnapop/ip.git","repoName":"ip","organization":"Ragnapop","domainName":"github"},"branch":"master","displayName":"Ragnapop/ip[master]","outputFolderName":"Ragnapop_ip_master"},{"location":{"location":"https://github.com/UdhayaShan1/ip.git","repoName":"ip","organization":"UdhayaShan1","domainName":"github"},"branch":"master","displayName":"UdhayaShan1/ip[master]","outputFolderName":"UdhayaShan1_ip_master"},{"location":{"location":"https://github.com/tayziyi/ip.git","repoName":"ip","organization":"tayziyi","domainName":"github"},"branch":"master","displayName":"tayziyi/ip[master]","outputFolderName":"tayziyi_ip_master"},{"location":{"location":"https://github.com/blaukc/ip.git","repoName":"ip","organization":"blaukc","domainName":"github"},"branch":"master","displayName":"blaukc/ip[master]","outputFolderName":"blaukc_ip_master"},{"location":{"location":"https://github.com/kokerinks/ip.git","repoName":"ip","organization":"kokerinks","domainName":"github"},"branch":"master","displayName":"kokerinks/ip[master]","outputFolderName":"kokerinks_ip_master"},{"location":{"location":"https://github.com/mahadhir247/ip.git","repoName":"ip","organization":"mahadhir247","domainName":"github"},"branch":"master","displayName":"mahadhir247/ip[master]","outputFolderName":"mahadhir247_ip_master"},{"location":{"location":"https://github.com/delishad21/ip.git","repoName":"ip","organization":"delishad21","domainName":"github"},"branch":"master","displayName":"delishad21/ip[master]","outputFolderName":"delishad21_ip_master"},{"location":{"location":"https://github.com/gavingoh99/ip.git","repoName":"ip","organization":"gavingoh99","domainName":"github"},"branch":"master","displayName":"gavingoh99/ip[master]","outputFolderName":"gavingoh99_ip_master"},{"location":{"location":"https://github.com/kjw142857/ip.git","repoName":"ip","organization":"kjw142857","domainName":"github"},"branch":"master","displayName":"kjw142857/ip[master]","outputFolderName":"kjw142857_ip_master"},{"location":{"location":"https://github.com/dayn-1/ip.git","repoName":"ip","organization":"dayn-1","domainName":"github"},"branch":"master","displayName":"dayn-1/ip[master]","outputFolderName":"dayn-1_ip_master"},{"location":{"location":"https://github.com/macareonie/ip.git","repoName":"ip","organization":"macareonie","domainName":"github"},"branch":"master","displayName":"macareonie/ip[master]","outputFolderName":"macareonie_ip_master"},{"location":{"location":"https://github.com/Rikko1204/ip.git","repoName":"ip","organization":"Rikko1204","domainName":"github"},"branch":"master","displayName":"Rikko1204/ip[master]","outputFolderName":"Rikko1204_ip_master"},{"location":{"location":"https://github.com/teojunda/ip.git","repoName":"ip","organization":"teojunda","domainName":"github"},"branch":"master","displayName":"teojunda/ip[master]","outputFolderName":"teojunda_ip_master"},{"location":{"location":"https://github.com/thewongdylan/ip.git","repoName":"ip","organization":"thewongdylan","domainName":"github"},"branch":"master","displayName":"thewongdylan/ip[master]","outputFolderName":"thewongdylan_ip_master"},{"location":{"location":"https://github.com/bertrandong/ip.git","repoName":"ip","organization":"bertrandong","domainName":"github"},"branch":"master","displayName":"bertrandong/ip[master]","outputFolderName":"bertrandong_ip_master"},{"location":{"location":"https://github.com/rertyy/ip.git","repoName":"ip","organization":"rertyy","domainName":"github"},"branch":"master","displayName":"rertyy/ip[master]","outputFolderName":"rertyy_ip_master"},{"location":{"location":"https://github.com/soons1/ip.git","repoName":"ip","organization":"soons1","domainName":"github"},"branch":"master","displayName":"soons1/ip[master]","outputFolderName":"soons1_ip_master"},{"location":{"location":"https://github.com/solomonng2001/ip.git","repoName":"ip","organization":"solomonng2001","domainName":"github"},"branch":"master","displayName":"solomonng2001/ip[master]","outputFolderName":"solomonng2001_ip_master"},{"location":{"location":"https://github.com/guanquann/ip.git","repoName":"ip","organization":"guanquann","domainName":"github"},"branch":"master","displayName":"guanquann/ip[master]","outputFolderName":"guanquann_ip_master"},{"location":{"location":"https://github.com/YuSoonZ/ip.git","repoName":"ip","organization":"YuSoonZ","domainName":"github"},"branch":"master","displayName":"YuSoonZ/ip[master]","outputFolderName":"YuSoonZ_ip_master"},{"location":{"location":"https://github.com/JuliaPoo/ip.git","repoName":"ip","organization":"JuliaPoo","domainName":"github"},"branch":"master","displayName":"JuliaPoo/ip[master]","outputFolderName":"JuliaPoo_ip_master"},{"location":{"location":"https://github.com/dillontkh/ip.git","repoName":"ip","organization":"dillontkh","domainName":"github"},"branch":"master","displayName":"dillontkh/ip[master]","outputFolderName":"dillontkh_ip_master"},{"location":{"location":"https://github.com/camille-readbean/ip.git","repoName":"ip","organization":"camille-readbean","domainName":"github"},"branch":"master","displayName":"camille-readbean/ip[master]","outputFolderName":"camille-readbean_ip_master"},{"location":{"location":"https://github.com/ruijietay/ip.git","repoName":"ip","organization":"ruijietay","domainName":"github"},"branch":"master","displayName":"ruijietay/ip[master]","outputFolderName":"ruijietay_ip_master"},{"location":{"location":"https://github.com/HM33-Stu/ip.git","repoName":"ip","organization":"HM33-Stu","domainName":"github"},"branch":"master","displayName":"HM33-Stu/ip[master]","outputFolderName":"HM33-Stu_ip_master"},{"location":{"location":"https://github.com/nobodyishappy/ip.git","repoName":"ip","organization":"nobodyishappy","domainName":"github"},"branch":"master","displayName":"nobodyishappy/ip[master]","outputFolderName":"nobodyishappy_ip_master"},{"location":{"location":"https://github.com/yadunut/ip.git","repoName":"ip","organization":"yadunut","domainName":"github"},"branch":"master","displayName":"yadunut/ip[master]","outputFolderName":"yadunut_ip_master"},{"location":{"location":"https://github.com/breezetall/ip.git","repoName":"ip","organization":"breezetall","domainName":"github"},"branch":"master","displayName":"breezetall/ip[master]","outputFolderName":"breezetall_ip_master"},{"location":{"location":"https://github.com/jjchee77/ip.git","repoName":"ip","organization":"jjchee77","domainName":"github"},"branch":"master","displayName":"jjchee77/ip[master]","outputFolderName":"jjchee77_ip_master"},{"location":{"location":"https://github.com/BryanL2303/ip.git","repoName":"ip","organization":"BryanL2303","domainName":"github"},"branch":"master","displayName":"BryanL2303/ip[master]","outputFolderName":"BryanL2303_ip_master"},{"location":{"location":"https://github.com/RyanNgWH/ip.git","repoName":"ip","organization":"RyanNgWH","domainName":"github"},"branch":"master","displayName":"RyanNgWH/ip[master]","outputFolderName":"RyanNgWH_ip_master"},{"location":{"location":"https://github.com/Jaspertzx/ip.git","repoName":"ip","organization":"Jaspertzx","domainName":"github"},"branch":"master","displayName":"Jaspertzx/ip[master]","outputFolderName":"Jaspertzx_ip_master"},{"location":{"location":"https://github.com/smolegz/ip.git","repoName":"ip","organization":"smolegz","domainName":"github"},"branch":"master","displayName":"smolegz/ip[master]","outputFolderName":"smolegz_ip_master"},{"location":{"location":"https://github.com/azumieflare/ip.git","repoName":"ip","organization":"azumieflare","domainName":"github"},"branch":"master","displayName":"azumieflare/ip[master]","outputFolderName":"azumieflare_ip_master"},{"location":{"location":"https://github.com/javierng2knus/ip.git","repoName":"ip","organization":"javierng2knus","domainName":"github"},"branch":"master","displayName":"javierng2knus/ip[master]","outputFolderName":"javierng2knus_ip_master"},{"location":{"location":"https://github.com/SimKianSeng/ip.git","repoName":"ip","organization":"SimKianSeng","domainName":"github"},"branch":"master","displayName":"SimKianSeng/ip[master]","outputFolderName":"SimKianSeng_ip_master"},{"location":{"location":"https://github.com/jasperng-nus/ip.git","repoName":"ip","organization":"jasperng-nus","domainName":"github"},"branch":"master","displayName":"jasperng-nus/ip[master]","outputFolderName":"jasperng-nus_ip_master"},{"location":{"location":"https://github.com/HongRay/ip.git","repoName":"ip","organization":"HongRay","domainName":"github"},"branch":"master","displayName":"HongRay/ip[master]","outputFolderName":"HongRay_ip_master"},{"location":{"location":"https://github.com/kailashgautham/ip.git","repoName":"ip","organization":"kailashgautham","domainName":"github"},"branch":"master","displayName":"kailashgautham/ip[master]","outputFolderName":"kailashgautham_ip_master"},{"location":{"location":"https://github.com/donwong2308/ip.git","repoName":"ip","organization":"donwong2308","domainName":"github"},"branch":"master","displayName":"donwong2308/ip[master]","outputFolderName":"donwong2308_ip_master"},{"location":{"location":"https://github.com/jayllo-c/ip.git","repoName":"ip","organization":"jayllo-c","domainName":"github"},"branch":"master","displayName":"jayllo-c/ip[master]","outputFolderName":"jayllo-c_ip_master"},{"location":{"location":"https://github.com/cheahTJ/ip.git","repoName":"ip","organization":"cheahTJ","domainName":"github"},"branch":"master","displayName":"cheahTJ/ip[master]","outputFolderName":"cheahTJ_ip_master"},{"location":{"location":"https://github.com/triciiaaa/ip.git","repoName":"ip","organization":"triciiaaa","domainName":"github"},"branch":"master","displayName":"triciiaaa/ip[master]","outputFolderName":"triciiaaa_ip_master"},{"location":{"location":"https://github.com/larainezo/ip.git","repoName":"ip","organization":"larainezo","domainName":"github"},"branch":"master","displayName":"larainezo/ip[master]","outputFolderName":"larainezo_ip_master"},{"location":{"location":"https://github.com/kailinteoo/ip.git","repoName":"ip","organization":"kailinteoo","domainName":"github"},"branch":"master","displayName":"kailinteoo/ip[master]","outputFolderName":"kailinteoo_ip_master"},{"location":{"location":"https://github.com/brennalaurentan/ip.git","repoName":"ip","organization":"brennalaurentan","domainName":"github"},"branch":"master","displayName":"brennalaurentan/ip[master]","outputFolderName":"brennalaurentan_ip_master"},{"location":{"location":"https://github.com/GiselleTan/ip.git","repoName":"ip","organization":"GiselleTan","domainName":"github"},"branch":"master","displayName":"GiselleTan/ip[master]","outputFolderName":"GiselleTan_ip_master"},{"location":{"location":"https://github.com/taufiq/ip.git","repoName":"ip","organization":"taufiq","domainName":"github"},"branch":"master","displayName":"taufiq/ip[master]","outputFolderName":"taufiq_ip_master"},{"location":{"location":"https://github.com/xuelinglow/ip.git","repoName":"ip","organization":"xuelinglow","domainName":"github"},"branch":"master","displayName":"xuelinglow/ip[master]","outputFolderName":"xuelinglow_ip_master"},{"location":{"location":"https://github.com/shunjieee/ip.git","repoName":"ip","organization":"shunjieee","domainName":"github"},"branch":"master","displayName":"shunjieee/ip[master]","outputFolderName":"shunjieee_ip_master"},{"location":{"location":"https://github.com/SherwynNg/ip.git","repoName":"ip","organization":"SherwynNg","domainName":"github"},"branch":"master","displayName":"SherwynNg/ip[master]","outputFolderName":"SherwynNg_ip_master"},{"location":{"location":"https://github.com/AndrewOng2066/ip.git","repoName":"ip","organization":"AndrewOng2066","domainName":"github"},"branch":"master","displayName":"AndrewOng2066/ip[master]","outputFolderName":"AndrewOng2066_ip_master"},{"location":{"location":"https://github.com/MarcusGitty/ip.git","repoName":"ip","organization":"MarcusGitty","domainName":"github"},"branch":"master","displayName":"MarcusGitty/ip[master]","outputFolderName":"MarcusGitty_ip_master"},{"location":{"location":"https://github.com/Anant1902/ip.git","repoName":"ip","organization":"Anant1902","domainName":"github"},"branch":"master","displayName":"Anant1902/ip[master]","outputFolderName":"Anant1902_ip_master"},{"location":{"location":"https://github.com/headcube1/ip.git","repoName":"ip","organization":"headcube1","domainName":"github"},"branch":"master","displayName":"headcube1/ip[master]","outputFolderName":"headcube1_ip_master"},{"location":{"location":"https://github.com/jimseah-0116/ip.git","repoName":"ip","organization":"jimseah-0116","domainName":"github"},"branch":"master","displayName":"jimseah-0116/ip[master]","outputFolderName":"jimseah-0116_ip_master"},{"location":{"location":"https://github.com/ararchch/ip.git","repoName":"ip","organization":"ararchch","domainName":"github"},"branch":"master","displayName":"ararchch/ip[master]","outputFolderName":"ararchch_ip_master"},{"location":{"location":"https://github.com/chiaryan/ip.git","repoName":"ip","organization":"chiaryan","domainName":"github"},"branch":"master","displayName":"chiaryan/ip[master]","outputFolderName":"chiaryan_ip_master"},{"location":{"location":"https://github.com/chengjunyuan/ip.git","repoName":"ip","organization":"chengjunyuan","domainName":"github"},"branch":"master","displayName":"chengjunyuan/ip[master]","outputFolderName":"chengjunyuan_ip_master"},{"location":{"location":"https://github.com/LimZiJia/ip.git","repoName":"ip","organization":"LimZiJia","domainName":"github"},"branch":"master","displayName":"LimZiJia/ip[master]","outputFolderName":"LimZiJia_ip_master"},{"location":{"location":"https://github.com/darkvoid32/ip.git","repoName":"ip","organization":"darkvoid32","domainName":"github"},"branch":"master","displayName":"darkvoid32/ip[master]","outputFolderName":"darkvoid32_ip_master"},{"location":{"location":"https://github.com/maze508/ip.git","repoName":"ip","organization":"maze508","domainName":"github"},"branch":"master","displayName":"maze508/ip[master]","outputFolderName":"maze508_ip_master"},{"location":{"location":"https://github.com/RingoftheKing/ip.git","repoName":"ip","organization":"RingoftheKing","domainName":"github"},"branch":"master","displayName":"RingoftheKing/ip[master]","outputFolderName":"RingoftheKing_ip_master"},{"location":{"location":"https://github.com/Rishit02/ip.git","repoName":"ip","organization":"Rishit02","domainName":"github"},"branch":"master","displayName":"Rishit02/ip[master]","outputFolderName":"Rishit02_ip_master"},{"location":{"location":"https://github.com/drustanyjt/ip.git","repoName":"ip","organization":"drustanyjt","domainName":"github"},"branch":"master","displayName":"drustanyjt/ip[master]","outputFolderName":"drustanyjt_ip_master"},{"location":{"location":"https://github.com/Dexter-Wong/ip.git","repoName":"ip","organization":"Dexter-Wong","domainName":"github"},"branch":"master","displayName":"Dexter-Wong/ip[master]","outputFolderName":"Dexter-Wong_ip_master"},{"location":{"location":"https://github.com/jxunze/ip.git","repoName":"ip","organization":"jxunze","domainName":"github"},"branch":"master","displayName":"jxunze/ip[master]","outputFolderName":"jxunze_ip_master"},{"location":{"location":"https://github.com/Vision-2000/ip.git","repoName":"ip","organization":"Vision-2000","domainName":"github"},"branch":"master","displayName":"Vision-2000/ip[master]","outputFolderName":"Vision-2000_ip_master"},{"location":{"location":"https://github.com/Derekljh/ip.git","repoName":"ip","organization":"Derekljh","domainName":"github"},"branch":"master","displayName":"Derekljh/ip[master]","outputFolderName":"Derekljh_ip_master"},{"location":{"location":"https://github.com/alphajae11/ip.git","repoName":"ip","organization":"alphajae11","domainName":"github"},"branch":"master","displayName":"alphajae11/ip[master]","outputFolderName":"alphajae11_ip_master"},{"location":{"location":"https://github.com/Kappaccinoh/ip.git","repoName":"ip","organization":"Kappaccinoh","domainName":"github"},"branch":"master","displayName":"Kappaccinoh/ip[master]","outputFolderName":"Kappaccinoh_ip_master"},{"location":{"location":"https://github.com/minreiseah/ip.git","repoName":"ip","organization":"minreiseah","domainName":"github"},"branch":"master","displayName":"minreiseah/ip[master]","outputFolderName":"minreiseah_ip_master"},{"location":{"location":"https://github.com/yuhinarita/ip.git","repoName":"ip","organization":"yuhinarita","domainName":"github"},"branch":"master","displayName":"yuhinarita/ip[master]","outputFolderName":"yuhinarita_ip_master"},{"location":{"location":"https://github.com/kab-dot/ip.git","repoName":"ip","organization":"kab-dot","domainName":"github"},"branch":"master","displayName":"kab-dot/ip[master]","outputFolderName":"kab-dot_ip_master"},{"location":{"location":"https://github.com/alfaloo/ip.git","repoName":"ip","organization":"alfaloo","domainName":"github"},"branch":"master","displayName":"alfaloo/ip[master]","outputFolderName":"alfaloo_ip_master"},{"location":{"location":"https://github.com/doyelee0313/ip.git","repoName":"ip","organization":"doyelee0313","domainName":"github"},"branch":"master","displayName":"doyelee0313/ip[master]","outputFolderName":"doyelee0313_ip_master"},{"location":{"location":"https://github.com/sdevih/ip.git","repoName":"ip","organization":"sdevih","domainName":"github"},"branch":"master","displayName":"sdevih/ip[master]","outputFolderName":"sdevih_ip_master"},{"location":{"location":"https://github.com/Emberlynn-Loo/ip.git","repoName":"ip","organization":"Emberlynn-Loo","domainName":"github"},"branch":"master","displayName":"Emberlynn-Loo/ip[master]","outputFolderName":"Emberlynn-Loo_ip_master"},{"location":{"location":"https://github.com/tejas-1405/ip.git","repoName":"ip","organization":"tejas-1405","domainName":"github"},"branch":"master","displayName":"tejas-1405/ip[master]","outputFolderName":"tejas-1405_ip_master"},{"location":{"location":"https://github.com/H4mes/ip.git","repoName":"ip","organization":"H4mes","domainName":"github"},"branch":"master","displayName":"H4mes/ip[master]","outputFolderName":"H4mes_ip_master"},{"location":{"location":"https://github.com/ChocoRagdoll/ip.git","repoName":"ip","organization":"ChocoRagdoll","domainName":"github"},"branch":"master","displayName":"ChocoRagdoll/ip[master]","outputFolderName":"ChocoRagdoll_ip_master"},{"location":{"location":"https://github.com/dwangwk/ip.git","repoName":"ip","organization":"dwangwk","domainName":"github"},"branch":"master","displayName":"dwangwk/ip[master]","outputFolderName":"dwangwk_ip_master"},{"location":{"location":"https://github.com/leeweiming3/ip.git","repoName":"ip","organization":"leeweiming3","domainName":"github"},"branch":"master","displayName":"leeweiming3/ip[master]","outputFolderName":"leeweiming3_ip_master"},{"location":{"location":"https://github.com/Wyrkx/ip.git","repoName":"ip","organization":"Wyrkx","domainName":"github"},"branch":"master","displayName":"Wyrkx/ip[master]","outputFolderName":"Wyrkx_ip_master"},{"location":{"location":"https://github.com/jeong-jaeho/ip.git","repoName":"ip","organization":"jeong-jaeho","domainName":"github"},"branch":"master","displayName":"jeong-jaeho/ip[master]","outputFolderName":"jeong-jaeho_ip_master"},{"location":{"location":"https://github.com/tohlh/ip.git","repoName":"ip","organization":"tohlh","domainName":"github"},"branch":"master","displayName":"tohlh/ip[master]","outputFolderName":"tohlh_ip_master"},{"location":{"location":"https://github.com/tzaph/ip.git","repoName":"ip","organization":"tzaph","domainName":"github"},"branch":"master","displayName":"tzaph/ip[master]","outputFolderName":"tzaph_ip_master"},{"location":{"location":"https://github.com/PateShin/ip.git","repoName":"ip","organization":"PateShin","domainName":"github"},"branch":"master","displayName":"PateShin/ip[master]","outputFolderName":"PateShin_ip_master"},{"location":{"location":"https://github.com/PallonCX/ip.git","repoName":"ip","organization":"PallonCX","domainName":"github"},"branch":"master","displayName":"PallonCX/ip[master]","outputFolderName":"PallonCX_ip_master"},{"location":{"location":"https://github.com/benson1029/ip.git","repoName":"ip","organization":"benson1029","domainName":"github"},"branch":"master","displayName":"benson1029/ip[master]","outputFolderName":"benson1029_ip_master"},{"location":{"location":"https://github.com/Kaya3842/ip.git","repoName":"ip","organization":"Kaya3842","domainName":"github"},"branch":"master","displayName":"Kaya3842/ip[master]","outputFolderName":"Kaya3842_ip_master"},{"location":{"location":"https://github.com/JustWeiHao/ip.git","repoName":"ip","organization":"JustWeiHao","domainName":"github"},"branch":"master","displayName":"JustWeiHao/ip[master]","outputFolderName":"JustWeiHao_ip_master"},{"location":{"location":"https://github.com/chin-herng/ip.git","repoName":"ip","organization":"chin-herng","domainName":"github"},"branch":"master","displayName":"chin-herng/ip[master]","outputFolderName":"chin-herng_ip_master"},{"location":{"location":"https://github.com/swtan346/ip.git","repoName":"ip","organization":"swtan346","domainName":"github"},"branch":"master","displayName":"swtan346/ip[master]","outputFolderName":"swtan346_ip_master"},{"location":{"location":"https://github.com/gosongying/ip.git","repoName":"ip","organization":"gosongying","domainName":"github"},"branch":"master","displayName":"gosongying/ip[master]","outputFolderName":"gosongying_ip_master"},{"location":{"location":"https://github.com/ivan24004/ip.git","repoName":"ip","organization":"ivan24004","domainName":"github"},"branch":"master","displayName":"ivan24004/ip[master]","outputFolderName":"ivan24004_ip_master"},{"location":{"location":"https://github.com/sarjinius/ip.git","repoName":"ip","organization":"sarjinius","domainName":"github"},"branch":"master","displayName":"sarjinius/ip[master]","outputFolderName":"sarjinius_ip_master"},{"location":{"location":"https://github.com/shavonneg/ip.git","repoName":"ip","organization":"shavonneg","domainName":"github"},"branch":"master","displayName":"shavonneg/ip[master]","outputFolderName":"shavonneg_ip_master"},{"location":{"location":"https://github.com/STELLA-LYE/ip.git","repoName":"ip","organization":"STELLA-LYE","domainName":"github"},"branch":"master","displayName":"STELLA-LYE/ip[master]","outputFolderName":"STELLA-LYE_ip_master"},{"location":{"location":"https://github.com/Lalelulilulela/ip.git","repoName":"ip","organization":"Lalelulilulela","domainName":"github"},"branch":"master","displayName":"Lalelulilulela/ip[master]","outputFolderName":"Lalelulilulela_ip_master"},{"location":{"location":"https://github.com/eunrcn/ip.git","repoName":"ip","organization":"eunrcn","domainName":"github"},"branch":"master","displayName":"eunrcn/ip[master]","outputFolderName":"eunrcn_ip_master"},{"location":{"location":"https://github.com/jocelyn-soh/ip.git","repoName":"ip","organization":"jocelyn-soh","domainName":"github"},"branch":"master","displayName":"jocelyn-soh/ip[master]","outputFolderName":"jocelyn-soh_ip_master"},{"location":{"location":"https://github.com/lynnetteeee/ip.git","repoName":"ip","organization":"lynnetteeee","domainName":"github"},"branch":"master","displayName":"lynnetteeee/ip[master]","outputFolderName":"lynnetteeee_ip_master"},{"location":{"location":"https://github.com/chenyixin0/ip.git","repoName":"ip","organization":"chenyixin0","domainName":"github"},"branch":"master","displayName":"chenyixin0/ip[master]","outputFolderName":"chenyixin0_ip_master"},{"location":{"location":"https://github.com/tanjieling0/ip.git","repoName":"ip","organization":"tanjieling0","domainName":"github"},"branch":"master","displayName":"tanjieling0/ip[master]","outputFolderName":"tanjieling0_ip_master"},{"location":{"location":"https://github.com/alex-setyawan/ip.git","repoName":"ip","organization":"alex-setyawan","domainName":"github"},"branch":"master","displayName":"alex-setyawan/ip[master]","outputFolderName":"alex-setyawan_ip_master"},{"location":{"location":"https://github.com/peienlim/ip.git","repoName":"ip","organization":"peienlim","domainName":"github"},"branch":"master","displayName":"peienlim/ip[master]","outputFolderName":"peienlim_ip_master"},{"location":{"location":"https://github.com/danielleloh/ip.git","repoName":"ip","organization":"danielleloh","domainName":"github"},"branch":"master","displayName":"danielleloh/ip[master]","outputFolderName":"danielleloh_ip_master"},{"location":{"location":"https://github.com/jannaleong/ip.git","repoName":"ip","organization":"jannaleong","domainName":"github"},"branch":"master","displayName":"jannaleong/ip[master]","outputFolderName":"jannaleong_ip_master"},{"location":{"location":"https://github.com/huekoh/ip.git","repoName":"ip","organization":"huekoh","domainName":"github"},"branch":"master","displayName":"huekoh/ip[master]","outputFolderName":"huekoh_ip_master"},{"location":{"location":"https://github.com/wapisai/ip.git","repoName":"ip","organization":"wapisai","domainName":"github"},"branch":"master","displayName":"wapisai/ip[master]","outputFolderName":"wapisai_ip_master"},{"location":{"location":"https://github.com/NatLeong/ip.git","repoName":"ip","organization":"NatLeong","domainName":"github"},"branch":"master","displayName":"NatLeong/ip[master]","outputFolderName":"NatLeong_ip_master"},{"location":{"location":"https://github.com/Pughal77/ip.git","repoName":"ip","organization":"Pughal77","domainName":"github"},"branch":"master","displayName":"Pughal77/ip[master]","outputFolderName":"Pughal77_ip_master"},{"location":{"location":"https://github.com/tahnya/ip.git","repoName":"ip","organization":"tahnya","domainName":"github"},"branch":"master","displayName":"tahnya/ip[master]","outputFolderName":"tahnya_ip_master"},{"location":{"location":"https://github.com/rahhulleee/ip.git","repoName":"ip","organization":"rahhulleee","domainName":"github"},"branch":"master","displayName":"rahhulleee/ip[master]","outputFolderName":"rahhulleee_ip_master"},{"location":{"location":"https://github.com/tamagochuuu/ip.git","repoName":"ip","organization":"tamagochuuu","domainName":"github"},"branch":"master","displayName":"tamagochuuu/ip[master]","outputFolderName":"tamagochuuu_ip_master"},{"location":{"location":"https://github.com/Chiarena/ip.git","repoName":"ip","organization":"Chiarena","domainName":"github"},"branch":"master","displayName":"Chiarena/ip[master]","outputFolderName":"Chiarena_ip_master"},{"location":{"location":"https://github.com/agreatdayy/ip.git","repoName":"ip","organization":"agreatdayy","domainName":"github"},"branch":"master","displayName":"agreatdayy/ip[master]","outputFolderName":"agreatdayy_ip_master"},{"location":{"location":"https://github.com/CaptainKeqing/ip.git","repoName":"ip","organization":"CaptainKeqing","domainName":"github"},"branch":"master","displayName":"CaptainKeqing/ip[master]","outputFolderName":"CaptainKeqing_ip_master"},{"location":{"location":"https://github.com/evedaktyl/ip.git","repoName":"ip","organization":"evedaktyl","domainName":"github"},"branch":"master","displayName":"evedaktyl/ip[master]","outputFolderName":"evedaktyl_ip_master"},{"location":{"location":"https://github.com/zhikaiong2001/ip.git","repoName":"ip","organization":"zhikaiong2001","domainName":"github"},"branch":"master","displayName":"zhikaiong2001/ip[master]","outputFolderName":"zhikaiong2001_ip_master"},{"location":{"location":"https://github.com/johnyoozhengxian/ip.git","repoName":"ip","organization":"johnyoozhengxian","domainName":"github"},"branch":"master","displayName":"johnyoozhengxian/ip[master]","outputFolderName":"johnyoozhengxian_ip_master"},{"location":{"location":"https://github.com/KinTatHo/ip.git","repoName":"ip","organization":"KinTatHo","domainName":"github"},"branch":"master","displayName":"KinTatHo/ip[master]","outputFolderName":"KinTatHo_ip_master"},{"location":{"location":"https://github.com/Joseph31416/ip.git","repoName":"ip","organization":"Joseph31416","domainName":"github"},"branch":"master","displayName":"Joseph31416/ip[master]","outputFolderName":"Joseph31416_ip_master"},{"location":{"location":"https://github.com/Murugan-Maniish/ip.git","repoName":"ip","organization":"Murugan-Maniish","domainName":"github"},"branch":"master","displayName":"Murugan-Maniish/ip[master]","outputFolderName":"Murugan-Maniish_ip_master"},{"location":{"location":"https://github.com/Joshy837/ip.git","repoName":"ip","organization":"Joshy837","domainName":"github"},"branch":"master","displayName":"Joshy837/ip[master]","outputFolderName":"Joshy837_ip_master"},{"location":{"location":"https://github.com/ChenXy128/ip.git","repoName":"ip","organization":"ChenXy128","domainName":"github"},"branch":"master","displayName":"ChenXy128/ip[master]","outputFolderName":"ChenXy128_ip_master"},{"location":{"location":"https://github.com/jamessinmaojun/ip.git","repoName":"ip","organization":"jamessinmaojun","domainName":"github"},"branch":"master","displayName":"jamessinmaojun/ip[master]","outputFolderName":"jamessinmaojun_ip_master"},{"location":{"location":"https://github.com/Joelwang22/ip.git","repoName":"ip","organization":"Joelwang22","domainName":"github"},"branch":"master","displayName":"Joelwang22/ip[master]","outputFolderName":"Joelwang22_ip_master"},{"location":{"location":"https://github.com/shawnnlimm/ip.git","repoName":"ip","organization":"shawnnlimm","domainName":"github"},"branch":"master","displayName":"shawnnlimm/ip[master]","outputFolderName":"shawnnlimm_ip_master"},{"location":{"location":"https://github.com/erv-teo/ip.git","repoName":"ip","organization":"erv-teo","domainName":"github"},"branch":"master","displayName":"erv-teo/ip[master]","outputFolderName":"erv-teo_ip_master"},{"location":{"location":"https://github.com/h4ow3i/ip.git","repoName":"ip","organization":"h4ow3i","domainName":"github"},"branch":"master","displayName":"h4ow3i/ip[master]","outputFolderName":"h4ow3i_ip_master"},{"location":{"location":"https://github.com/ziyang27/ip.git","repoName":"ip","organization":"ziyang27","domainName":"github"},"branch":"master","displayName":"ziyang27/ip[master]","outputFolderName":"ziyang27_ip_master"},{"location":{"location":"https://github.com/FangRuoqing/ip.git","repoName":"ip","organization":"FangRuoqing","domainName":"github"},"branch":"master","displayName":"FangRuoqing/ip[master]","outputFolderName":"FangRuoqing_ip_master"},{"location":{"location":"https://github.com/0nesheep/ip.git","repoName":"ip","organization":"0nesheep","domainName":"github"},"branch":"master","displayName":"0nesheep/ip[master]","outputFolderName":"0nesheep_ip_master"},{"location":{"location":"https://github.com/0-yibai/ip.git","repoName":"ip","organization":"0-yibai","domainName":"github"},"branch":"master","displayName":"0-yibai/ip[master]","outputFolderName":"0-yibai_ip_master"},{"location":{"location":"https://github.com/jerremyng/ip.git","repoName":"ip","organization":"jerremyng","domainName":"github"},"branch":"master","displayName":"jerremyng/ip[master]","outputFolderName":"jerremyng_ip_master"},{"location":{"location":"https://github.com/irwynliong/ip.git","repoName":"ip","organization":"irwynliong","domainName":"github"},"branch":"master","displayName":"irwynliong/ip[master]","outputFolderName":"irwynliong_ip_master"},{"location":{"location":"https://github.com/yorklim/ip.git","repoName":"ip","organization":"yorklim","domainName":"github"},"branch":"master","displayName":"yorklim/ip[master]","outputFolderName":"yorklim_ip_master"},{"location":{"location":"https://github.com/vannykin/ip.git","repoName":"ip","organization":"vannykin","domainName":"github"},"branch":"master","displayName":"vannykin/ip[master]","outputFolderName":"vannykin_ip_master"},{"location":{"location":"https://github.com/laney0808/ip.git","repoName":"ip","organization":"laney0808","domainName":"github"},"branch":"master","displayName":"laney0808/ip[master]","outputFolderName":"laney0808_ip_master"},{"location":{"location":"https://github.com/yapxuanxuan/ip.git","repoName":"ip","organization":"yapxuanxuan","domainName":"github"},"branch":"master","displayName":"yapxuanxuan/ip[master]","outputFolderName":"yapxuanxuan_ip_master"},{"location":{"location":"https://github.com/Greg-Tan/ip.git","repoName":"ip","organization":"Greg-Tan","domainName":"github"},"branch":"master","displayName":"Greg-Tan/ip[master]","outputFolderName":"Greg-Tan_ip_master"},{"location":{"location":"https://github.com/taniatsq/ip.git","repoName":"ip","organization":"taniatsq","domainName":"github"},"branch":"master","displayName":"taniatsq/ip[master]","outputFolderName":"taniatsq_ip_master"},{"location":{"location":"https://github.com/yongkotaro/ip.git","repoName":"ip","organization":"yongkotaro","domainName":"github"},"branch":"master","displayName":"yongkotaro/ip[master]","outputFolderName":"yongkotaro_ip_master"},{"location":{"location":"https://github.com/tanyunchao/ip.git","repoName":"ip","organization":"tanyunchao","domainName":"github"},"branch":"master","displayName":"tanyunchao/ip[master]","outputFolderName":"tanyunchao_ip_master"},{"location":{"location":"https://github.com/KiatLun/ip.git","repoName":"ip","organization":"KiatLun","domainName":"github"},"branch":"master","displayName":"KiatLun/ip[master]","outputFolderName":"KiatLun_ip_master"},{"location":{"location":"https://github.com/Xuyan0518/ip.git","repoName":"ip","organization":"Xuyan0518","domainName":"github"},"branch":"master","displayName":"Xuyan0518/ip[master]","outputFolderName":"Xuyan0518_ip_master"},{"location":{"location":"https://github.com/cleowenxuan/ip.git","repoName":"ip","organization":"cleowenxuan","domainName":"github"},"branch":"master","displayName":"cleowenxuan/ip[master]","outputFolderName":"cleowenxuan_ip_master"},{"location":{"location":"https://github.com/logical-1985516/ip.git","repoName":"ip","organization":"logical-1985516","domainName":"github"},"branch":"master","displayName":"logical-1985516/ip[master]","outputFolderName":"logical-1985516_ip_master"},{"location":{"location":"https://github.com/jessicawyz/ip.git","repoName":"ip","organization":"jessicawyz","domainName":"github"},"branch":"master","displayName":"jessicawyz/ip[master]","outputFolderName":"jessicawyz_ip_master"},{"location":{"location":"https://github.com/ashleyy2444/ip.git","repoName":"ip","organization":"ashleyy2444","domainName":"github"},"branch":"master","displayName":"ashleyy2444/ip[master]","outputFolderName":"ashleyy2444_ip_master"},{"location":{"location":"https://github.com/tengcharmaine/ip.git","repoName":"ip","organization":"tengcharmaine","domainName":"github"},"branch":"master","displayName":"tengcharmaine/ip[master]","outputFolderName":"tengcharmaine_ip_master"},{"location":{"location":"https://github.com/Jawad280/ip.git","repoName":"ip","organization":"Jawad280","domainName":"github"},"branch":"master","displayName":"Jawad280/ip[master]","outputFolderName":"Jawad280_ip_master"},{"location":{"location":"https://github.com/ThatGirlJam/ip.git","repoName":"ip","organization":"ThatGirlJam","domainName":"github"},"branch":"master","displayName":"ThatGirlJam/ip[master]","outputFolderName":"ThatGirlJam_ip_master"},{"location":{"location":"https://github.com/saiutkarsh33/ip.git","repoName":"ip","organization":"saiutkarsh33","domainName":"github"},"branch":"master","displayName":"saiutkarsh33/ip[master]","outputFolderName":"saiutkarsh33_ip_master"},{"location":{"location":"https://github.com/meenulekha/ip.git","repoName":"ip","organization":"meenulekha","domainName":"github"},"branch":"master","displayName":"meenulekha/ip[master]","outputFolderName":"meenulekha_ip_master"},{"location":{"location":"https://github.com/LargeCrowd/ip.git","repoName":"ip","organization":"LargeCrowd","domainName":"github"},"branch":"master","displayName":"LargeCrowd/ip[master]","outputFolderName":"LargeCrowd_ip_master"},{"location":{"location":"https://github.com/linnn-7/ip.git","repoName":"ip","organization":"linnn-7","domainName":"github"},"branch":"master","displayName":"linnn-7/ip[master]","outputFolderName":"linnn-7_ip_master"},{"location":{"location":"https://github.com/maiyasaliha/ip.git","repoName":"ip","organization":"maiyasaliha","domainName":"github"},"branch":"master","displayName":"maiyasaliha/ip[master]","outputFolderName":"maiyasaliha_ip_master"},{"location":{"location":"https://github.com/jonpwk/ip.git","repoName":"ip","organization":"jonpwk","domainName":"github"},"branch":"master","displayName":"jonpwk/ip[master]","outputFolderName":"jonpwk_ip_master"},{"location":{"location":"https://github.com/ChillinRage/ip.git","repoName":"ip","organization":"ChillinRage","domainName":"github"},"branch":"master","displayName":"ChillinRage/ip[master]","outputFolderName":"ChillinRage_ip_master"},{"location":{"location":"https://github.com/moguries/ip.git","repoName":"ip","organization":"moguries","domainName":"github"},"branch":"master","displayName":"moguries/ip[master]","outputFolderName":"moguries_ip_master"},{"location":{"location":"https://github.com/Alteqa/ip.git","repoName":"ip","organization":"Alteqa","domainName":"github"},"branch":"master","displayName":"Alteqa/ip[master]","outputFolderName":"Alteqa_ip_master"},{"location":{"location":"https://github.com/Zack-Tay/ip.git","repoName":"ip","organization":"Zack-Tay","domainName":"github"},"branch":"master","displayName":"Zack-Tay/ip[master]","outputFolderName":"Zack-Tay_ip_master"},{"location":{"location":"https://github.com/marcus-ny/ip.git","repoName":"ip","organization":"marcus-ny","domainName":"github"},"branch":"master","displayName":"marcus-ny/ip[master]","outputFolderName":"marcus-ny_ip_master"},{"location":{"location":"https://github.com/bennyLCK/ip.git","repoName":"ip","organization":"bennyLCK","domainName":"github"},"branch":"master","displayName":"bennyLCK/ip[master]","outputFolderName":"bennyLCK_ip_master"},{"location":{"location":"https://github.com/kinjalagarwal1810/ip.git","repoName":"ip","organization":"kinjalagarwal1810","domainName":"github"},"branch":"master","displayName":"kinjalagarwal1810/ip[master]","outputFolderName":"kinjalagarwal1810_ip_master"},{"location":{"location":"https://github.com/R-Laksh/ip.git","repoName":"ip","organization":"R-Laksh","domainName":"github"},"branch":"master","displayName":"R-Laksh/ip[master]","outputFolderName":"R-Laksh_ip_master"},{"location":{"location":"https://github.com/Colex2000/ip.git","repoName":"ip","organization":"Colex2000","domainName":"github"},"branch":"master","displayName":"Colex2000/ip[master]","outputFolderName":"Colex2000_ip_master"},{"location":{"location":"https://github.com/DhiraPT/ip.git","repoName":"ip","organization":"DhiraPT","domainName":"github"},"branch":"master","displayName":"DhiraPT/ip[master]","outputFolderName":"DhiraPT_ip_master"},{"location":{"location":"https://github.com/yyccbb/ip.git","repoName":"ip","organization":"yyccbb","domainName":"github"},"branch":"master","displayName":"yyccbb/ip[master]","outputFolderName":"yyccbb_ip_master"},{"location":{"location":"https://github.com/nigel27022001/ip.git","repoName":"ip","organization":"nigel27022001","domainName":"github"},"branch":"master","displayName":"nigel27022001/ip[master]","outputFolderName":"nigel27022001_ip_master"},{"location":{"location":"https://github.com/shamesjen/ip.git","repoName":"ip","organization":"shamesjen","domainName":"github"},"branch":"master","displayName":"shamesjen/ip[master]","outputFolderName":"shamesjen_ip_master"},{"location":{"location":"https://github.com/sindhurajain/ip.git","repoName":"ip","organization":"sindhurajain","domainName":"github"},"branch":"master","displayName":"sindhurajain/ip[master]","outputFolderName":"sindhurajain_ip_master"},{"location":{"location":"https://github.com/ryanlimdx/ip.git","repoName":"ip","organization":"ryanlimdx","domainName":"github"},"branch":"master","displayName":"ryanlimdx/ip[master]","outputFolderName":"ryanlimdx_ip_master"},{"location":{"location":"https://github.com/hiivan/ip.git","repoName":"ip","organization":"hiivan","domainName":"github"},"branch":"master","displayName":"hiivan/ip[master]","outputFolderName":"hiivan_ip_master"},{"location":{"location":"https://github.com/Apzure/ip.git","repoName":"ip","organization":"Apzure","domainName":"github"},"branch":"master","displayName":"Apzure/ip[master]","outputFolderName":"Apzure_ip_master"},{"location":{"location":"https://github.com/bgopi23/ip.git","repoName":"ip","organization":"bgopi23","domainName":"github"},"branch":"master","displayName":"bgopi23/ip[master]","outputFolderName":"bgopi23_ip_master"},{"location":{"location":"https://github.com/LWS49/ip.git","repoName":"ip","organization":"LWS49","domainName":"github"},"branch":"master","displayName":"LWS49/ip[master]","outputFolderName":"LWS49_ip_master"},{"location":{"location":"https://github.com/wang-xinrong/ip.git","repoName":"ip","organization":"wang-xinrong","domainName":"github"},"branch":"master","displayName":"wang-xinrong/ip[master]","outputFolderName":"wang-xinrong_ip_master"},{"location":{"location":"https://github.com/HusseinSafwan02/ip.git","repoName":"ip","organization":"HusseinSafwan02","domainName":"github"},"branch":"master","displayName":"HusseinSafwan02/ip[master]","outputFolderName":"HusseinSafwan02_ip_master"},{"location":{"location":"https://github.com/Ko-Khan/ip.git","repoName":"ip","organization":"Ko-Khan","domainName":"github"},"branch":"master","displayName":"Ko-Khan/ip[master]","outputFolderName":"Ko-Khan_ip_master"},{"location":{"location":"https://github.com/yleeyilin/ip.git","repoName":"ip","organization":"yleeyilin","domainName":"github"},"branch":"master","displayName":"yleeyilin/ip[master]","outputFolderName":"yleeyilin_ip_master"},{"location":{"location":"https://github.com/jiahui0309/ip.git","repoName":"ip","organization":"jiahui0309","domainName":"github"},"branch":"master","displayName":"jiahui0309/ip[master]","outputFolderName":"jiahui0309_ip_master"},{"location":{"location":"https://github.com/Jayne1010/ip.git","repoName":"ip","organization":"Jayne1010","domainName":"github"},"branch":"master","displayName":"Jayne1010/ip[master]","outputFolderName":"Jayne1010_ip_master"},{"location":{"location":"https://github.com/getsquared/ip.git","repoName":"ip","organization":"getsquared","domainName":"github"},"branch":"master","displayName":"getsquared/ip[master]","outputFolderName":"getsquared_ip_master"},{"location":{"location":"https://github.com/kaitinghh/ip.git","repoName":"ip","organization":"kaitinghh","domainName":"github"},"branch":"master","displayName":"kaitinghh/ip[master]","outputFolderName":"kaitinghh_ip_master"},{"location":{"location":"https://github.com/4llysa/ip.git","repoName":"ip","organization":"4llysa","domainName":"github"},"branch":"master","displayName":"4llysa/ip[master]","outputFolderName":"4llysa_ip_master"},{"location":{"location":"https://github.com/Lin-Shuang-Shuang/ip.git","repoName":"ip","organization":"Lin-Shuang-Shuang","domainName":"github"},"branch":"master","displayName":"Lin-Shuang-Shuang/ip[master]","outputFolderName":"Lin-Shuang-Shuang_ip_master"},{"location":{"location":"https://github.com/youdonnnn/ip.git","repoName":"ip","organization":"youdonnnn","domainName":"github"},"branch":"master","displayName":"youdonnnn/ip[master]","outputFolderName":"youdonnnn_ip_master"},{"location":{"location":"https://github.com/xuwen-ho/ip.git","repoName":"ip","organization":"xuwen-ho","domainName":"github"},"branch":"master","displayName":"xuwen-ho/ip[master]","outputFolderName":"xuwen-ho_ip_master"},{"location":{"location":"https://github.com/ongzhili/ip.git","repoName":"ip","organization":"ongzhili","domainName":"github"},"branch":"master","displayName":"ongzhili/ip[master]","outputFolderName":"ongzhili_ip_master"},{"location":{"location":"https://github.com/miffi/ip.git","repoName":"ip","organization":"miffi","domainName":"github"},"branch":"master","displayName":"miffi/ip[master]","outputFolderName":"miffi_ip_master"},{"location":{"location":"https://github.com/wallacexuhanxiao/ip.git","repoName":"ip","organization":"wallacexuhanxiao","domainName":"github"},"branch":"master","displayName":"wallacexuhanxiao/ip[master]","outputFolderName":"wallacexuhanxiao_ip_master"},{"location":{"location":"https://github.com/Teee728/ip.git","repoName":"ip","organization":"Teee728","domainName":"github"},"branch":"master","displayName":"Teee728/ip[master]","outputFolderName":"Teee728_ip_master"},{"location":{"location":"https://github.com/wolffe88/ip.git","repoName":"ip","organization":"wolffe88","domainName":"github"},"branch":"master","displayName":"wolffe88/ip[master]","outputFolderName":"wolffe88_ip_master"},{"location":{"location":"https://github.com/jskimdev/ip.git","repoName":"ip","organization":"jskimdev","domainName":"github"},"branch":"master","displayName":"jskimdev/ip[master]","outputFolderName":"jskimdev_ip_master"},{"location":{"location":"https://github.com/reetmitra/ip.git","repoName":"ip","organization":"reetmitra","domainName":"github"},"branch":"master","displayName":"reetmitra/ip[master]","outputFolderName":"reetmitra_ip_master"},{"location":{"location":"https://github.com/iamtr/ip.git","repoName":"ip","organization":"iamtr","domainName":"github"},"branch":"master","displayName":"iamtr/ip[master]","outputFolderName":"iamtr_ip_master"},{"location":{"location":"https://github.com/officialchengyud/ip.git","repoName":"ip","organization":"officialchengyud","domainName":"github"},"branch":"master","displayName":"officialchengyud/ip[master]","outputFolderName":"officialchengyud_ip_master"},{"location":{"location":"https://github.com/GERARDJM018/ip.git","repoName":"ip","organization":"GERARDJM018","domainName":"github"},"branch":"master","displayName":"GERARDJM018/ip[master]","outputFolderName":"GERARDJM018_ip_master"},{"location":{"location":"https://github.com/howen02/ip.git","repoName":"ip","organization":"howen02","domainName":"github"},"branch":"master","displayName":"howen02/ip[master]","outputFolderName":"howen02_ip_master"},{"location":{"location":"https://github.com/NusMinato/ip.git","repoName":"ip","organization":"NusMinato","domainName":"github"},"branch":"master","displayName":"NusMinato/ip[master]","outputFolderName":"NusMinato_ip_master"},{"location":{"location":"https://github.com/hjuntan/ip.git","repoName":"ip","organization":"hjuntan","domainName":"github"},"branch":"master","displayName":"hjuntan/ip[master]","outputFolderName":"hjuntan_ip_master"},{"location":{"location":"https://github.com/gauravuj/ip.git","repoName":"ip","organization":"gauravuj","domainName":"github"},"branch":"master","displayName":"gauravuj/ip[master]","outputFolderName":"gauravuj_ip_master"},{"location":{"location":"https://github.com/yespiggy/ip.git","repoName":"ip","organization":"yespiggy","domainName":"github"},"branch":"master","displayName":"yespiggy/ip[master]","outputFolderName":"yespiggy_ip_master"},{"location":{"location":"https://github.com/Windofbitter/ip.git","repoName":"ip","organization":"Windofbitter","domainName":"github"},"branch":"master","displayName":"Windofbitter/ip[master]","outputFolderName":"Windofbitter_ip_master"},{"location":{"location":"https://github.com/NewtonKoh/ip.git","repoName":"ip","organization":"NewtonKoh","domainName":"github"},"branch":"master","displayName":"NewtonKoh/ip[master]","outputFolderName":"NewtonKoh_ip_master"},{"location":{"location":"https://github.com/narwhalsilent/ip.git","repoName":"ip","organization":"narwhalsilent","domainName":"github"},"branch":"master","displayName":"narwhalsilent/ip[master]","outputFolderName":"narwhalsilent_ip_master"},{"location":{"location":"https://github.com/starsia/ip.git","repoName":"ip","organization":"starsia","domainName":"github"},"branch":"master","displayName":"starsia/ip[master]","outputFolderName":"starsia_ip_master"},{"location":{"location":"https://github.com/AidenLYT/ip.git","repoName":"ip","organization":"AidenLYT","domainName":"github"},"branch":"master","displayName":"AidenLYT/ip[master]","outputFolderName":"AidenLYT_ip_master"},{"location":{"location":"https://github.com/nyankoclaws/ip.git","repoName":"ip","organization":"nyankoclaws","domainName":"github"},"branch":"master","displayName":"nyankoclaws/ip[master]","outputFolderName":"nyankoclaws_ip_master"},{"location":{"location":"https://github.com/angsongyee/ip.git","repoName":"ip","organization":"angsongyee","domainName":"github"},"branch":"master","displayName":"angsongyee/ip[master]","outputFolderName":"angsongyee_ip_master"},{"location":{"location":"https://github.com/eliotlee68/ip.git","repoName":"ip","organization":"eliotlee68","domainName":"github"},"branch":"master","displayName":"eliotlee68/ip[master]","outputFolderName":"eliotlee68_ip_master"},{"location":{"location":"https://github.com/Yskie/ip.git","repoName":"ip","organization":"Yskie","domainName":"github"},"branch":"master","displayName":"Yskie/ip[master]","outputFolderName":"Yskie_ip_master"},{"location":{"location":"https://github.com/faaheem13/ip.git","repoName":"ip","organization":"faaheem13","domainName":"github"},"branch":"master","displayName":"faaheem13/ip[master]","outputFolderName":"faaheem13_ip_master"},{"location":{"location":"https://github.com/Shauryan123/ip.git","repoName":"ip","organization":"Shauryan123","domainName":"github"},"branch":"master","displayName":"Shauryan123/ip[master]","outputFolderName":"Shauryan123_ip_master"},{"location":{"location":"https://github.com/MaYuehan/ip.git","repoName":"ip","organization":"MaYuehan","domainName":"github"},"branch":"master","displayName":"MaYuehan/ip[master]","outputFolderName":"MaYuehan_ip_master"},{"location":{"location":"https://github.com/kaiyi27/ip.git","repoName":"ip","organization":"kaiyi27","domainName":"github"},"branch":"master","displayName":"kaiyi27/ip[master]","outputFolderName":"kaiyi27_ip_master"},{"location":{"location":"https://github.com/radeon2525/ip.git","repoName":"ip","organization":"radeon2525","domainName":"github"},"branch":"master","displayName":"radeon2525/ip[master]","outputFolderName":"radeon2525_ip_master"},{"location":{"location":"https://github.com/dedsecrattle/ip.git","repoName":"ip","organization":"dedsecrattle","domainName":"github"},"branch":"master","displayName":"dedsecrattle/ip[master]","outputFolderName":"dedsecrattle_ip_master"},{"location":{"location":"https://github.com/AdityaB4/ip.git","repoName":"ip","organization":"AdityaB4","domainName":"github"},"branch":"master","displayName":"AdityaB4/ip[master]","outputFolderName":"AdityaB4_ip_master"},{"location":{"location":"https://github.com/PyromancerBoom/ip.git","repoName":"ip","organization":"PyromancerBoom","domainName":"github"},"branch":"master","displayName":"PyromancerBoom/ip[master]","outputFolderName":"PyromancerBoom_ip_master"},{"location":{"location":"https://github.com/JiaXinEu/ip.git","repoName":"ip","organization":"JiaXinEu","domainName":"github"},"branch":"master","displayName":"JiaXinEu/ip[master]","outputFolderName":"JiaXinEu_ip_master"},{"location":{"location":"https://github.com/Ella-e/ip.git","repoName":"ip","organization":"Ella-e","domainName":"github"},"branch":"master","displayName":"Ella-e/ip[master]","outputFolderName":"Ella-e_ip_master"},{"location":{"location":"https://github.com/yiwern5/ip.git","repoName":"ip","organization":"yiwern5","domainName":"github"},"branch":"master","displayName":"yiwern5/ip[master]","outputFolderName":"yiwern5_ip_master"},{"location":{"location":"https://github.com/SamuelZero1/ip.git","repoName":"ip","organization":"SamuelZero1","domainName":"github"},"branch":"master","displayName":"SamuelZero1/ip[master]","outputFolderName":"SamuelZero1_ip_master"},{"location":{"location":"https://github.com/nuyer/ip.git","repoName":"ip","organization":"nuyer","domainName":"github"},"branch":"master","displayName":"nuyer/ip[master]","outputFolderName":"nuyer_ip_master"},{"location":{"location":"https://github.com/SeaHogs/ip.git","repoName":"ip","organization":"SeaHogs","domainName":"github"},"branch":"master","displayName":"SeaHogs/ip[master]","outputFolderName":"SeaHogs_ip_master"},{"location":{"location":"https://github.com/TarinPairor/ip.git","repoName":"ip","organization":"TarinPairor","domainName":"github"},"branch":"master","displayName":"TarinPairor/ip[master]","outputFolderName":"TarinPairor_ip_master"},{"location":{"location":"https://github.com/KSSWSept20/ip.git","repoName":"ip","organization":"KSSWSept20","domainName":"github"},"branch":"master","displayName":"KSSWSept20/ip[master]","outputFolderName":"KSSWSept20_ip_master"},{"location":{"location":"https://github.com/myang2020/ip.git","repoName":"ip","organization":"myang2020","domainName":"github"},"branch":"master","displayName":"myang2020/ip[master]","outputFolderName":"myang2020_ip_master"},{"location":{"location":"https://github.com/leepoeaik/ip.git","repoName":"ip","organization":"leepoeaik","domainName":"github"},"branch":"master","displayName":"leepoeaik/ip[master]","outputFolderName":"leepoeaik_ip_master"},{"location":{"location":"https://github.com/justinlengch/ip.git","repoName":"ip","organization":"justinlengch","domainName":"github"},"branch":"master","displayName":"justinlengch/ip[master]","outputFolderName":"justinlengch_ip_master"},{"location":{"location":"https://github.com/Li-Zizhen/ip.git","repoName":"ip","organization":"Li-Zizhen","domainName":"github"},"branch":"master","displayName":"Li-Zizhen/ip[master]","outputFolderName":"Li-Zizhen_ip_master"},{"location":{"location":"https://github.com/ashleygoh1/ip.git","repoName":"ip","organization":"ashleygoh1","domainName":"github"},"branch":"master","displayName":"ashleygoh1/ip[master]","outputFolderName":"ashleygoh1_ip_master"},{"location":{"location":"https://github.com/Wongqingyee/ip.git","repoName":"ip","organization":"Wongqingyee","domainName":"github"},"branch":"master","displayName":"Wongqingyee/ip[master]","outputFolderName":"Wongqingyee_ip_master"},{"location":{"location":"https://github.com/AjayArvind2207/ip.git","repoName":"ip","organization":"AjayArvind2207","domainName":"github"},"branch":"master","displayName":"AjayArvind2207/ip[master]","outputFolderName":"AjayArvind2207_ip_master"},{"location":{"location":"https://github.com/Austintjh19/ip.git","repoName":"ip","organization":"Austintjh19","domainName":"github"},"branch":"master","displayName":"Austintjh19/ip[master]","outputFolderName":"Austintjh19_ip_master"},{"location":{"location":"https://github.com/jinhanfromNUS/ip.git","repoName":"ip","organization":"jinhanfromNUS","domainName":"github"},"branch":"master","displayName":"jinhanfromNUS/ip[master]","outputFolderName":"jinhanfromNUS_ip_master"},{"location":{"location":"https://github.com/ziyi22/ip.git","repoName":"ip","organization":"ziyi22","domainName":"github"},"branch":"master","displayName":"ziyi22/ip[master]","outputFolderName":"ziyi22_ip_master"},{"location":{"location":"https://github.com/menatahari/ip.git","repoName":"ip","organization":"menatahari","domainName":"github"},"branch":"master","displayName":"menatahari/ip[master]","outputFolderName":"menatahari_ip_master"},{"location":{"location":"https://github.com/ThitipatC/ip.git","repoName":"ip","organization":"ThitipatC","domainName":"github"},"branch":"master","displayName":"ThitipatC/ip[master]","outputFolderName":"ThitipatC_ip_master"},{"location":{"location":"https://github.com/purivirakarin/ip.git","repoName":"ip","organization":"purivirakarin","domainName":"github"},"branch":"master","displayName":"purivirakarin/ip[master]","outputFolderName":"purivirakarin_ip_master"},{"location":{"location":"https://github.com/modembcc/ip.git","repoName":"ip","organization":"modembcc","domainName":"github"},"branch":"master","displayName":"modembcc/ip[master]","outputFolderName":"modembcc_ip_master"},{"location":{"location":"https://github.com/yashma-sonara/ip.git","repoName":"ip","organization":"yashma-sonara","domainName":"github"},"branch":"master","displayName":"yashma-sonara/ip[master]","outputFolderName":"yashma-sonara_ip_master"},{"location":{"location":"https://github.com/0liverkong/ip.git","repoName":"ip","organization":"0liverkong","domainName":"github"},"branch":"master","displayName":"0liverkong/ip[master]","outputFolderName":"0liverkong_ip_master"},{"location":{"location":"https://github.com/dhlee03/ip.git","repoName":"ip","organization":"dhlee03","domainName":"github"},"branch":"master","displayName":"dhlee03/ip[master]","outputFolderName":"dhlee03_ip_master"},{"location":{"location":"https://github.com/shayaansultan/ip.git","repoName":"ip","organization":"shayaansultan","domainName":"github"},"branch":"master","displayName":"shayaansultan/ip[master]","outputFolderName":"shayaansultan_ip_master"},{"location":{"location":"https://github.com/ljy0422/ip.git","repoName":"ip","organization":"ljy0422","domainName":"github"},"branch":"master","displayName":"ljy0422/ip[master]","outputFolderName":"ljy0422_ip_master"},{"location":{"location":"https://github.com/JukeBoxK/ip.git","repoName":"ip","organization":"JukeBoxK","domainName":"github"},"branch":"master","displayName":"JukeBoxK/ip[master]","outputFolderName":"JukeBoxK_ip_master"},{"location":{"location":"https://github.com/Howlong11/ip.git","repoName":"ip","organization":"Howlong11","domainName":"github"},"branch":"master","displayName":"Howlong11/ip[master]","outputFolderName":"Howlong11_ip_master"},{"location":{"location":"https://github.com/Hibeom0929/ip.git","repoName":"ip","organization":"Hibeom0929","domainName":"github"},"branch":"master","displayName":"Hibeom0929/ip[master]","outputFolderName":"Hibeom0929_ip_master"},{"location":{"location":"https://github.com/VatsalVitosh/ip.git","repoName":"ip","organization":"VatsalVitosh","domainName":"github"},"branch":"master","displayName":"VatsalVitosh/ip[master]","outputFolderName":"VatsalVitosh_ip_master"},{"location":{"location":"https://github.com/bachletuankhai/ip.git","repoName":"ip","organization":"bachletuankhai","domainName":"github"},"branch":"master","displayName":"bachletuankhai/ip[master]","outputFolderName":"bachletuankhai_ip_master"},{"location":{"location":"https://github.com/RunjiaChen/ip.git","repoName":"ip","organization":"RunjiaChen","domainName":"github"},"branch":"master","displayName":"RunjiaChen/ip[master]","outputFolderName":"RunjiaChen_ip_master"}],"errorSet":[{"repoName":"JerryWang0000/ip[master]","errorMessage":"Failed to clone from https://github.com/JerryWang0000/ip.git"},{"repoName":"ShanylOng/ip[master]","errorMessage":"Failed to clone from https://github.com/ShanylOng/ip.git"},{"repoName":"chuahjiajie/ip[master]","errorMessage":"Failed to clone from https://github.com/chuahjiajie/ip.git"},{"repoName":"Ryan-Reno/ip[master]","errorMessage":"Failed to clone from https://github.com/Ryan-Reno/ip.git"},{"repoName":"tcjazwei/ip[master]","errorMessage":"Failed to clone from https://github.com/tcjazwei/ip.git"},{"repoName":"Morninggloryyy/ip[master]","errorMessage":"Failed to clone from https://github.com/Morninggloryyy/ip.git"},{"repoName":"quelinxiao/ip[master]","errorMessage":"Failed to clone from https://github.com/quelinxiao/ip.git"},{"repoName":"ValenciaLim/ip[master]","errorMessage":"Failed to clone from https://github.com/ValenciaLim/ip.git"},{"repoName":"nusliuyifan/ip[master]","errorMessage":"Failed to clone from https://github.com/nusliuyifan/ip.git"},{"repoName":"peterXGD/ip[master]","errorMessage":"Failed to clone from https://github.com/peterXGD/ip.git"},{"repoName":"IamZhenHong/ip[master]","errorMessage":"Failed to clone from https://github.com/IamZhenHong/ip.git"},{"repoName":"zhenghuil/ip[master]","errorMessage":"Failed to clone from https://github.com/zhenghuil/ip.git"}],"sinceDate":"2024-01-19","untilDate":"2024-01-30","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":"6481806501","reportGeneratedTime":"Tue Jan 30 21:31:22 2024 UTC+08:00","reportGenerationTime":" 1 minute(s) 5.76 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 iP Code Dashboard","repos":[{"location":{"location":"https://github.com/darryl-chan/ip.git","repoName":"ip","organization":"darryl-chan","domainName":"github"},"branch":"master","displayName":"darryl-chan/ip[master]","outputFolderName":"darryl-chan_ip_master"},{"location":{"location":"https://github.com/gowthaman-01/ip.git","repoName":"ip","organization":"gowthaman-01","domainName":"github"},"branch":"master","displayName":"gowthaman-01/ip[master]","outputFolderName":"gowthaman-01_ip_master"},{"location":{"location":"https://github.com/ChrisHo1341/ip.git","repoName":"ip","organization":"ChrisHo1341","domainName":"github"},"branch":"master","displayName":"ChrisHo1341/ip[master]","outputFolderName":"ChrisHo1341_ip_master"},{"location":{"location":"https://github.com/sebin0817/ip.git","repoName":"ip","organization":"sebin0817","domainName":"github"},"branch":"master","displayName":"sebin0817/ip[master]","outputFolderName":"sebin0817_ip_master"},{"location":{"location":"https://github.com/tanjiajiajun/ip.git","repoName":"ip","organization":"tanjiajiajun","domainName":"github"},"branch":"master","displayName":"tanjiajiajun/ip[master]","outputFolderName":"tanjiajiajun_ip_master"},{"location":{"location":"https://github.com/Arixeyeion/ip.git","repoName":"ip","organization":"Arixeyeion","domainName":"github"},"branch":"master","displayName":"Arixeyeion/ip[master]","outputFolderName":"Arixeyeion_ip_master"},{"location":{"location":"https://github.com/jeremiahlzz/ip.git","repoName":"ip","organization":"jeremiahlzz","domainName":"github"},"branch":"master","displayName":"jeremiahlzz/ip[master]","outputFolderName":"jeremiahlzz_ip_master"},{"location":{"location":"https://github.com/joenus/ip.git","repoName":"ip","organization":"joenus","domainName":"github"},"branch":"master","displayName":"joenus/ip[master]","outputFolderName":"joenus_ip_master"},{"location":{"location":"https://github.com/xinen26/ip.git","repoName":"ip","organization":"xinen26","domainName":"github"},"branch":"master","displayName":"xinen26/ip[master]","outputFolderName":"xinen26_ip_master"},{"location":{"location":"https://github.com/matthewken19/ip.git","repoName":"ip","organization":"matthewken19","domainName":"github"},"branch":"master","displayName":"matthewken19/ip[master]","outputFolderName":"matthewken19_ip_master"},{"location":{"location":"https://github.com/YuZizhen/ip.git","repoName":"ip","organization":"YuZizhen","domainName":"github"},"branch":"master","displayName":"YuZizhen/ip[master]","outputFolderName":"YuZizhen_ip_master"},{"location":{"location":"https://github.com/marclamp/ip.git","repoName":"ip","organization":"marclamp","domainName":"github"},"branch":"master","displayName":"marclamp/ip[master]","outputFolderName":"marclamp_ip_master"},{"location":{"location":"https://github.com/fy17ohhh/ip.git","repoName":"ip","organization":"fy17ohhh","domainName":"github"},"branch":"master","displayName":"fy17ohhh/ip[master]","outputFolderName":"fy17ohhh_ip_master"},{"location":{"location":"https://github.com/lihaoquan/ip.git","repoName":"ip","organization":"lihaoquan","domainName":"github"},"branch":"master","displayName":"lihaoquan/ip[master]","outputFolderName":"lihaoquan_ip_master"},{"location":{"location":"https://github.com/guohuang88/ip.git","repoName":"ip","organization":"guohuang88","domainName":"github"},"branch":"master","displayName":"guohuang88/ip[master]","outputFolderName":"guohuang88_ip_master"},{"location":{"location":"https://github.com/redcolorbicycle/ip.git","repoName":"ip","organization":"redcolorbicycle","domainName":"github"},"branch":"master","displayName":"redcolorbicycle/ip[master]","outputFolderName":"redcolorbicycle_ip_master"},{"location":{"location":"https://github.com/Jerome-j/ip.git","repoName":"ip","organization":"Jerome-j","domainName":"github"},"branch":"master","displayName":"Jerome-j/ip[master]","outputFolderName":"Jerome-j_ip_master"},{"location":{"location":"https://github.com/sethteo/ip.git","repoName":"ip","organization":"sethteo","domainName":"github"},"branch":"master","displayName":"sethteo/ip[master]","outputFolderName":"sethteo_ip_master"},{"location":{"location":"https://github.com/TopKec/ip.git","repoName":"ip","organization":"TopKec","domainName":"github"},"branch":"master","displayName":"TopKec/ip[master]","outputFolderName":"TopKec_ip_master"},{"location":{"location":"https://github.com/joelgoh1/ip.git","repoName":"ip","organization":"joelgoh1","domainName":"github"},"branch":"master","displayName":"joelgoh1/ip[master]","outputFolderName":"joelgoh1_ip_master"},{"location":{"location":"https://github.com/chewbum/ip.git","repoName":"ip","organization":"chewbum","domainName":"github"},"branch":"master","displayName":"chewbum/ip[master]","outputFolderName":"chewbum_ip_master"},{"location":{"location":"https://github.com/timothysashimi/ip.git","repoName":"ip","organization":"timothysashimi","domainName":"github"},"branch":"master","displayName":"timothysashimi/ip[master]","outputFolderName":"timothysashimi_ip_master"},{"location":{"location":"https://github.com/beefsausagee/ip.git","repoName":"ip","organization":"beefsausagee","domainName":"github"},"branch":"master","displayName":"beefsausagee/ip[master]","outputFolderName":"beefsausagee_ip_master"},{"location":{"location":"https://github.com/jaejayrome/ip.git","repoName":"ip","organization":"jaejayrome","domainName":"github"},"branch":"master","displayName":"jaejayrome/ip[master]","outputFolderName":"jaejayrome_ip_master"},{"location":{"location":"https://github.com/KhoonSun47/ip.git","repoName":"ip","organization":"KhoonSun47","domainName":"github"},"branch":"master","displayName":"KhoonSun47/ip[master]","outputFolderName":"KhoonSun47_ip_master"},{"location":{"location":"https://github.com/Dethada/ip.git","repoName":"ip","organization":"Dethada","domainName":"github"},"branch":"master","displayName":"Dethada/ip[master]","outputFolderName":"Dethada_ip_master"},{"location":{"location":"https://github.com/AL-ZT/ip.git","repoName":"ip","organization":"AL-ZT","domainName":"github"},"branch":"master","displayName":"AL-ZT/ip[master]","outputFolderName":"AL-ZT_ip_master"},{"location":{"location":"https://github.com/Javiery3889/ip.git","repoName":"ip","organization":"Javiery3889","domainName":"github"},"branch":"master","displayName":"Javiery3889/ip[master]","outputFolderName":"Javiery3889_ip_master"},{"location":{"location":"https://github.com/garywongkai/ip.git","repoName":"ip","organization":"garywongkai","domainName":"github"},"branch":"master","displayName":"garywongkai/ip[master]","outputFolderName":"garywongkai_ip_master"},{"location":{"location":"https://github.com/ys112/ip.git","repoName":"ip","organization":"ys112","domainName":"github"},"branch":"master","displayName":"ys112/ip[master]","outputFolderName":"ys112_ip_master"},{"location":{"location":"https://github.com/jmsandiegoo/ip.git","repoName":"ip","organization":"jmsandiegoo","domainName":"github"},"branch":"master","displayName":"jmsandiegoo/ip[master]","outputFolderName":"jmsandiegoo_ip_master"},{"location":{"location":"https://github.com/KohGuanZeh/ip.git","repoName":"ip","organization":"KohGuanZeh","domainName":"github"},"branch":"master","displayName":"KohGuanZeh/ip[master]","outputFolderName":"KohGuanZeh_ip_master"},{"location":{"location":"https://github.com/felixchanyy/ip.git","repoName":"ip","organization":"felixchanyy","domainName":"github"},"branch":"master","displayName":"felixchanyy/ip[master]","outputFolderName":"felixchanyy_ip_master"},{"location":{"location":"https://github.com/tanqinyong/ip.git","repoName":"ip","organization":"tanqinyong","domainName":"github"},"branch":"master","displayName":"tanqinyong/ip[master]","outputFolderName":"tanqinyong_ip_master"},{"location":{"location":"https://github.com/Hwww23/ip.git","repoName":"ip","organization":"Hwww23","domainName":"github"},"branch":"master","displayName":"Hwww23/ip[master]","outputFolderName":"Hwww23_ip_master"},{"location":{"location":"https://github.com/zengzihui/ip.git","repoName":"ip","organization":"zengzihui","domainName":"github"},"branch":"master","displayName":"zengzihui/ip[master]","outputFolderName":"zengzihui_ip_master"},{"location":{"location":"https://github.com/Pluiexo/ip.git","repoName":"ip","organization":"Pluiexo","domainName":"github"},"branch":"master","displayName":"Pluiexo/ip[master]","outputFolderName":"Pluiexo_ip_master"},{"location":{"location":"https://github.com/yap-zong-xin/ip.git","repoName":"ip","organization":"yap-zong-xin","domainName":"github"},"branch":"master","displayName":"yap-zong-xin/ip[master]","outputFolderName":"yap-zong-xin_ip_master"},{"location":{"location":"https://github.com/JonChong98/ip.git","repoName":"ip","organization":"JonChong98","domainName":"github"},"branch":"master","displayName":"JonChong98/ip[master]","outputFolderName":"JonChong98_ip_master"},{"location":{"location":"https://github.com/lokidoki102/ip.git","repoName":"ip","organization":"lokidoki102","domainName":"github"},"branch":"master","displayName":"lokidoki102/ip[master]","outputFolderName":"lokidoki102_ip_master"},{"location":{"location":"https://github.com/choowengyan/ip.git","repoName":"ip","organization":"choowengyan","domainName":"github"},"branch":"master","displayName":"choowengyan/ip[master]","outputFolderName":"choowengyan_ip_master"},{"location":{"location":"https://github.com/SherisseTJW/ip.git","repoName":"ip","organization":"SherisseTJW","domainName":"github"},"branch":"master","displayName":"SherisseTJW/ip[master]","outputFolderName":"SherisseTJW_ip_master"},{"location":{"location":"https://github.com/iynixil/ip.git","repoName":"ip","organization":"iynixil","domainName":"github"},"branch":"master","displayName":"iynixil/ip[master]","outputFolderName":"iynixil_ip_master"},{"location":{"location":"https://github.com/whitesnowx/ip.git","repoName":"ip","organization":"whitesnowx","domainName":"github"},"branch":"master","displayName":"whitesnowx/ip[master]","outputFolderName":"whitesnowx_ip_master"},{"location":{"location":"https://github.com/AwJoey/ip.git","repoName":"ip","organization":"AwJoey","domainName":"github"},"branch":"master","displayName":"AwJoey/ip[master]","outputFolderName":"AwJoey_ip_master"},{"location":{"location":"https://github.com/rickkoh/ip.git","repoName":"ip","organization":"rickkoh","domainName":"github"},"branch":"master","displayName":"rickkoh/ip[master]","outputFolderName":"rickkoh_ip_master"},{"location":{"location":"https://github.com/caitlyntang/ip.git","repoName":"ip","organization":"caitlyntang","domainName":"github"},"branch":"master","displayName":"caitlyntang/ip[master]","outputFolderName":"caitlyntang_ip_master"},{"location":{"location":"https://github.com/tsulim/ip.git","repoName":"ip","organization":"tsulim","domainName":"github"},"branch":"master","displayName":"tsulim/ip[master]","outputFolderName":"tsulim_ip_master"},{"location":{"location":"https://github.com/Darylgolden/ip.git","repoName":"ip","organization":"Darylgolden","domainName":"github"},"branch":"master","displayName":"Darylgolden/ip[master]","outputFolderName":"Darylgolden_ip_master"},{"location":{"location":"https://github.com/biinnnggggg/ip.git","repoName":"ip","organization":"biinnnggggg","domainName":"github"},"branch":"master","displayName":"biinnnggggg/ip[master]","outputFolderName":"biinnnggggg_ip_master"},{"location":{"location":"https://github.com/Ma-Yirui/ip.git","repoName":"ip","organization":"Ma-Yirui","domainName":"github"},"branch":"master","displayName":"Ma-Yirui/ip[master]","outputFolderName":"Ma-Yirui_ip_master"},{"location":{"location":"https://github.com/itstrueitstrueitsrealitsreal/ip.git","repoName":"ip","organization":"itstrueitstrueitsrealitsreal","domainName":"github"},"branch":"master","displayName":"itstrueitstrueitsrealitsreal/ip[master]","outputFolderName":"itstrueitstrueitsrealitsreal_ip_master"},{"location":{"location":"https://github.com/vnnamng/ip.git","repoName":"ip","organization":"vnnamng","domainName":"github"},"branch":"master","displayName":"vnnamng/ip[master]","outputFolderName":"vnnamng_ip_master"},{"location":{"location":"https://github.com/minwaiphyo/ip.git","repoName":"ip","organization":"minwaiphyo","domainName":"github"},"branch":"master","displayName":"minwaiphyo/ip[master]","outputFolderName":"minwaiphyo_ip_master"},{"location":{"location":"https://github.com/amanzainal/ip.git","repoName":"ip","organization":"amanzainal","domainName":"github"},"branch":"master","displayName":"amanzainal/ip[master]","outputFolderName":"amanzainal_ip_master"},{"location":{"location":"https://github.com/raysonchia/ip.git","repoName":"ip","organization":"raysonchia","domainName":"github"},"branch":"master","displayName":"raysonchia/ip[master]","outputFolderName":"raysonchia_ip_master"},{"location":{"location":"https://github.com/zoebelle-pang/ip.git","repoName":"ip","organization":"zoebelle-pang","domainName":"github"},"branch":"master","displayName":"zoebelle-pang/ip[master]","outputFolderName":"zoebelle-pang_ip_master"},{"location":{"location":"https://github.com/DominicFuMJ/ip.git","repoName":"ip","organization":"DominicFuMJ","domainName":"github"},"branch":"master","displayName":"DominicFuMJ/ip[master]","outputFolderName":"DominicFuMJ_ip_master"},{"location":{"location":"https://github.com/NeoHW/ip.git","repoName":"ip","organization":"NeoHW","domainName":"github"},"branch":"master","displayName":"NeoHW/ip[master]","outputFolderName":"NeoHW_ip_master"},{"location":{"location":"https://github.com/ZhiWei1010/ip.git","repoName":"ip","organization":"ZhiWei1010","domainName":"github"},"branch":"master","displayName":"ZhiWei1010/ip[master]","outputFolderName":"ZhiWei1010_ip_master"},{"location":{"location":"https://github.com/tankh99/ip.git","repoName":"ip","organization":"tankh99","domainName":"github"},"branch":"master","displayName":"tankh99/ip[master]","outputFolderName":"tankh99_ip_master"},{"location":{"location":"https://github.com/YuvBindal/ip.git","repoName":"ip","organization":"YuvBindal","domainName":"github"},"branch":"master","displayName":"YuvBindal/ip[master]","outputFolderName":"YuvBindal_ip_master"},{"location":{"location":"https://github.com/chiralcentre/ip.git","repoName":"ip","organization":"chiralcentre","domainName":"github"},"branch":"master","displayName":"chiralcentre/ip[master]","outputFolderName":"chiralcentre_ip_master"},{"location":{"location":"https://github.com/cocoanautz/ip.git","repoName":"ip","organization":"cocoanautz","domainName":"github"},"branch":"master","displayName":"cocoanautz/ip[master]","outputFolderName":"cocoanautz_ip_master"},{"location":{"location":"https://github.com/martinng01/ip.git","repoName":"ip","organization":"martinng01","domainName":"github"},"branch":"master","displayName":"martinng01/ip[master]","outputFolderName":"martinng01_ip_master"},{"location":{"location":"https://github.com/pjanthony2001/ip.git","repoName":"ip","organization":"pjanthony2001","domainName":"github"},"branch":"master","displayName":"pjanthony2001/ip[master]","outputFolderName":"pjanthony2001_ip_master"},{"location":{"location":"https://github.com/yuechen2001/ip.git","repoName":"ip","organization":"yuechen2001","domainName":"github"},"branch":"master","displayName":"yuechen2001/ip[master]","outputFolderName":"yuechen2001_ip_master"},{"location":{"location":"https://github.com/SampsonYe1999/ip.git","repoName":"ip","organization":"SampsonYe1999","domainName":"github"},"branch":"master","displayName":"SampsonYe1999/ip[master]","outputFolderName":"SampsonYe1999_ip_master"},{"location":{"location":"https://github.com/ejnan/ip.git","repoName":"ip","organization":"ejnan","domainName":"github"},"branch":"master","displayName":"ejnan/ip[master]","outputFolderName":"ejnan_ip_master"},{"location":{"location":"https://github.com/c-j-lh/ip.git","repoName":"ip","organization":"c-j-lh","domainName":"github"},"branch":"master","displayName":"c-j-lh/ip[master]","outputFolderName":"c-j-lh_ip_master"},{"location":{"location":"https://github.com/xiaorui-ui/ip.git","repoName":"ip","organization":"xiaorui-ui","domainName":"github"},"branch":"master","displayName":"xiaorui-ui/ip[master]","outputFolderName":"xiaorui-ui_ip_master"},{"location":{"location":"https://github.com/qinboan/ip.git","repoName":"ip","organization":"qinboan","domainName":"github"},"branch":"master","displayName":"qinboan/ip[master]","outputFolderName":"qinboan_ip_master"},{"location":{"location":"https://github.com/qinxutan/ip.git","repoName":"ip","organization":"qinxutan","domainName":"github"},"branch":"master","displayName":"qinxutan/ip[master]","outputFolderName":"qinxutan_ip_master"},{"location":{"location":"https://github.com/S-Aishvarya/ip.git","repoName":"ip","organization":"S-Aishvarya","domainName":"github"},"branch":"master","displayName":"S-Aishvarya/ip[master]","outputFolderName":"S-Aishvarya_ip_master"},{"location":{"location":"https://github.com/zhekaiii/ip.git","repoName":"ip","organization":"zhekaiii","domainName":"github"},"branch":"master","displayName":"zhekaiii/ip[master]","outputFolderName":"zhekaiii_ip_master"},{"location":{"location":"https://github.com/taeewonnn/ip.git","repoName":"ip","organization":"taeewonnn","domainName":"github"},"branch":"master","displayName":"taeewonnn/ip[master]","outputFolderName":"taeewonnn_ip_master"},{"location":{"location":"https://github.com/hjungwoo01/ip.git","repoName":"ip","organization":"hjungwoo01","domainName":"github"},"branch":"master","displayName":"hjungwoo01/ip[master]","outputFolderName":"hjungwoo01_ip_master"},{"location":{"location":"https://github.com/ForAeons/ip.git","repoName":"ip","organization":"ForAeons","domainName":"github"},"branch":"master","displayName":"ForAeons/ip[master]","outputFolderName":"ForAeons_ip_master"},{"location":{"location":"https://github.com/minghowC/ip.git","repoName":"ip","organization":"minghowC","domainName":"github"},"branch":"master","displayName":"minghowC/ip[master]","outputFolderName":"minghowC_ip_master"},{"location":{"location":"https://github.com/E0735389/ip.git","repoName":"ip","organization":"E0735389","domainName":"github"},"branch":"master","displayName":"E0735389/ip[master]","outputFolderName":"E0735389_ip_master"},{"location":{"location":"https://github.com/Ty-stan0417/ip.git","repoName":"ip","organization":"Ty-stan0417","domainName":"github"},"branch":"master","displayName":"Ty-stan0417/ip[master]","outputFolderName":"Ty-stan0417_ip_master"},{"location":{"location":"https://github.com/dabzpengu/ip.git","repoName":"ip","organization":"dabzpengu","domainName":"github"},"branch":"master","displayName":"dabzpengu/ip[master]","outputFolderName":"dabzpengu_ip_master"},{"location":{"location":"https://github.com/rizkidelta/ip.git","repoName":"ip","organization":"rizkidelta","domainName":"github"},"branch":"master","displayName":"rizkidelta/ip[master]","outputFolderName":"rizkidelta_ip_master"},{"location":{"location":"https://github.com/wilsonwid/ip.git","repoName":"ip","organization":"wilsonwid","domainName":"github"},"branch":"master","displayName":"wilsonwid/ip[master]","outputFolderName":"wilsonwid_ip_master"},{"location":{"location":"https://github.com/chiageng/ip.git","repoName":"ip","organization":"chiageng","domainName":"github"},"branch":"master","displayName":"chiageng/ip[master]","outputFolderName":"chiageng_ip_master"},{"location":{"location":"https://github.com/julia-cp/ip.git","repoName":"ip","organization":"julia-cp","domainName":"github"},"branch":"master","displayName":"julia-cp/ip[master]","outputFolderName":"julia-cp_ip_master"},{"location":{"location":"https://github.com/ZHANGTIANYAO1/ip.git","repoName":"ip","organization":"ZHANGTIANYAO1","domainName":"github"},"branch":"master","displayName":"ZHANGTIANYAO1/ip[master]","outputFolderName":"ZHANGTIANYAO1_ip_master"},{"location":{"location":"https://github.com/LifHoshi/ip.git","repoName":"ip","organization":"LifHoshi","domainName":"github"},"branch":"master","displayName":"LifHoshi/ip[master]","outputFolderName":"LifHoshi_ip_master"},{"location":{"location":"https://github.com/ananya21/ip.git","repoName":"ip","organization":"ananya21","domainName":"github"},"branch":"master","displayName":"ananya21/ip[master]","outputFolderName":"ananya21_ip_master"},{"location":{"location":"https://github.com/acekhoon/ip.git","repoName":"ip","organization":"acekhoon","domainName":"github"},"branch":"master","displayName":"acekhoon/ip[master]","outputFolderName":"acekhoon_ip_master"},{"location":{"location":"https://github.com/willowisp01/ip.git","repoName":"ip","organization":"willowisp01","domainName":"github"},"branch":"master","displayName":"willowisp01/ip[master]","outputFolderName":"willowisp01_ip_master"},{"location":{"location":"https://github.com/Jajared/ip.git","repoName":"ip","organization":"Jajared","domainName":"github"},"branch":"master","displayName":"Jajared/ip[master]","outputFolderName":"Jajared_ip_master"},{"location":{"location":"https://github.com/JerryO3/ip.git","repoName":"ip","organization":"JerryO3","domainName":"github"},"branch":"master","displayName":"JerryO3/ip[master]","outputFolderName":"JerryO3_ip_master"},{"location":{"location":"https://github.com/cyqjoseph/ip.git","repoName":"ip","organization":"cyqjoseph","domainName":"github"},"branch":"master","displayName":"cyqjoseph/ip[master]","outputFolderName":"cyqjoseph_ip_master"},{"location":{"location":"https://github.com/jieqiboh/ip.git","repoName":"ip","organization":"jieqiboh","domainName":"github"},"branch":"master","displayName":"jieqiboh/ip[master]","outputFolderName":"jieqiboh_ip_master"},{"location":{"location":"https://github.com/theman-oj10/ip.git","repoName":"ip","organization":"theman-oj10","domainName":"github"},"branch":"master","displayName":"theman-oj10/ip[master]","outputFolderName":"theman-oj10_ip_master"},{"location":{"location":"https://github.com/owenong1/ip.git","repoName":"ip","organization":"owenong1","domainName":"github"},"branch":"master","displayName":"owenong1/ip[master]","outputFolderName":"owenong1_ip_master"},{"location":{"location":"https://github.com/aureliony/ip.git","repoName":"ip","organization":"aureliony","domainName":"github"},"branch":"master","displayName":"aureliony/ip[master]","outputFolderName":"aureliony_ip_master"},{"location":{"location":"https://github.com/yisiox/ip.git","repoName":"ip","organization":"yisiox","domainName":"github"},"branch":"master","displayName":"yisiox/ip[master]","outputFolderName":"yisiox_ip_master"},{"location":{"location":"https://github.com/Darkarche3/ip.git","repoName":"ip","organization":"Darkarche3","domainName":"github"},"branch":"master","displayName":"Darkarche3/ip[master]","outputFolderName":"Darkarche3_ip_master"},{"location":{"location":"https://github.com/Jolonauh/ip.git","repoName":"ip","organization":"Jolonauh","domainName":"github"},"branch":"master","displayName":"Jolonauh/ip[master]","outputFolderName":"Jolonauh_ip_master"},{"location":{"location":"https://github.com/kervyntan/ip.git","repoName":"ip","organization":"kervyntan","domainName":"github"},"branch":"master","displayName":"kervyntan/ip[master]","outputFolderName":"kervyntan_ip_master"},{"location":{"location":"https://github.com/yashpola/ip.git","repoName":"ip","organization":"yashpola","domainName":"github"},"branch":"master","displayName":"yashpola/ip[master]","outputFolderName":"yashpola_ip_master"},{"location":{"location":"https://github.com/wongkj12/ip.git","repoName":"ip","organization":"wongkj12","domainName":"github"},"branch":"master","displayName":"wongkj12/ip[master]","outputFolderName":"wongkj12_ip_master"},{"location":{"location":"https://github.com/tituschewxj/ip.git","repoName":"ip","organization":"tituschewxj","domainName":"github"},"branch":"master","displayName":"tituschewxj/ip[master]","outputFolderName":"tituschewxj_ip_master"},{"location":{"location":"https://github.com/Zer0Legion/ip.git","repoName":"ip","organization":"Zer0Legion","domainName":"github"},"branch":"master","displayName":"Zer0Legion/ip[master]","outputFolderName":"Zer0Legion_ip_master"},{"location":{"location":"https://github.com/g-tejas/ip.git","repoName":"ip","organization":"g-tejas","domainName":"github"},"branch":"master","displayName":"g-tejas/ip[master]","outputFolderName":"g-tejas_ip_master"},{"location":{"location":"https://github.com/legionlegion/ip.git","repoName":"ip","organization":"legionlegion","domainName":"github"},"branch":"master","displayName":"legionlegion/ip[master]","outputFolderName":"legionlegion_ip_master"},{"location":{"location":"https://github.com/tanguoyang/ip.git","repoName":"ip","organization":"tanguoyang","domainName":"github"},"branch":"master","displayName":"tanguoyang/ip[master]","outputFolderName":"tanguoyang_ip_master"},{"location":{"location":"https://github.com/jovantanyk/ip.git","repoName":"ip","organization":"jovantanyk","domainName":"github"},"branch":"master","displayName":"jovantanyk/ip[master]","outputFolderName":"jovantanyk_ip_master"},{"location":{"location":"https://github.com/Xilef121/ip.git","repoName":"ip","organization":"Xilef121","domainName":"github"},"branch":"master","displayName":"Xilef121/ip[master]","outputFolderName":"Xilef121_ip_master"},{"location":{"location":"https://github.com/ziiqii/ip.git","repoName":"ip","organization":"ziiqii","domainName":"github"},"branch":"master","displayName":"ziiqii/ip[master]","outputFolderName":"ziiqii_ip_master"},{"location":{"location":"https://github.com/Bandov/ip.git","repoName":"ip","organization":"Bandov","domainName":"github"},"branch":"master","displayName":"Bandov/ip[master]","outputFolderName":"Bandov_ip_master"},{"location":{"location":"https://github.com/appleraincoat/ip.git","repoName":"ip","organization":"appleraincoat","domainName":"github"},"branch":"master","displayName":"appleraincoat/ip[master]","outputFolderName":"appleraincoat_ip_master"},{"location":{"location":"https://github.com/belligerentbeagle/ip.git","repoName":"ip","organization":"belligerentbeagle","domainName":"github"},"branch":"master","displayName":"belligerentbeagle/ip[master]","outputFolderName":"belligerentbeagle_ip_master"},{"location":{"location":"https://github.com/limrik/ip.git","repoName":"ip","organization":"limrik","domainName":"github"},"branch":"master","displayName":"limrik/ip[master]","outputFolderName":"limrik_ip_master"},{"location":{"location":"https://github.com/Tsenrae/ip.git","repoName":"ip","organization":"Tsenrae","domainName":"github"},"branch":"master","displayName":"Tsenrae/ip[master]","outputFolderName":"Tsenrae_ip_master"},{"location":{"location":"https://github.com/nichee/ip.git","repoName":"ip","organization":"nichee","domainName":"github"},"branch":"master","displayName":"nichee/ip[master]","outputFolderName":"nichee_ip_master"},{"location":{"location":"https://github.com/justincred/ip.git","repoName":"ip","organization":"justincred","domainName":"github"},"branch":"master","displayName":"justincred/ip[master]","outputFolderName":"justincred_ip_master"},{"location":{"location":"https://github.com/Tanzhiheng26/ip.git","repoName":"ip","organization":"Tanzhiheng26","domainName":"github"},"branch":"master","displayName":"Tanzhiheng26/ip[master]","outputFolderName":"Tanzhiheng26_ip_master"},{"location":{"location":"https://github.com/cliftonchee/ip.git","repoName":"ip","organization":"cliftonchee","domainName":"github"},"branch":"master","displayName":"cliftonchee/ip[master]","outputFolderName":"cliftonchee_ip_master"},{"location":{"location":"https://github.com/SimHanKiong/ip.git","repoName":"ip","organization":"SimHanKiong","domainName":"github"},"branch":"master","displayName":"SimHanKiong/ip[master]","outputFolderName":"SimHanKiong_ip_master"},{"location":{"location":"https://github.com/ChrysanthemumT/ip.git","repoName":"ip","organization":"ChrysanthemumT","domainName":"github"},"branch":"master","displayName":"ChrysanthemumT/ip[master]","outputFolderName":"ChrysanthemumT_ip_master"},{"location":{"location":"https://github.com/jyztintan/ip.git","repoName":"ip","organization":"jyztintan","domainName":"github"},"branch":"master","displayName":"jyztintan/ip[master]","outputFolderName":"jyztintan_ip_master"},{"location":{"location":"https://github.com/ondretann/ip.git","repoName":"ip","organization":"ondretann","domainName":"github"},"branch":"master","displayName":"ondretann/ip[master]","outputFolderName":"ondretann_ip_master"},{"location":{"location":"https://github.com/bryanyee33/ip.git","repoName":"ip","organization":"bryanyee33","domainName":"github"},"branch":"master","displayName":"bryanyee33/ip[master]","outputFolderName":"bryanyee33_ip_master"},{"location":{"location":"https://github.com/chonghaoen/ip.git","repoName":"ip","organization":"chonghaoen","domainName":"github"},"branch":"master","displayName":"chonghaoen/ip[master]","outputFolderName":"chonghaoen_ip_master"},{"location":{"location":"https://github.com/ronnnnnnnnn/ip.git","repoName":"ip","organization":"ronnnnnnnnn","domainName":"github"},"branch":"master","displayName":"ronnnnnnnnn/ip[master]","outputFolderName":"ronnnnnnnnn_ip_master"},{"location":{"location":"https://github.com/ChuaZenKhoon/ip.git","repoName":"ip","organization":"ChuaZenKhoon","domainName":"github"},"branch":"master","displayName":"ChuaZenKhoon/ip[master]","outputFolderName":"ChuaZenKhoon_ip_master"},{"location":{"location":"https://github.com/gerteck/ip.git","repoName":"ip","organization":"gerteck","domainName":"github"},"branch":"master","displayName":"gerteck/ip[master]","outputFolderName":"gerteck_ip_master"},{"location":{"location":"https://github.com/ReganChoy/ip.git","repoName":"ip","organization":"ReganChoy","domainName":"github"},"branch":"master","displayName":"ReganChoy/ip[master]","outputFolderName":"ReganChoy_ip_master"},{"location":{"location":"https://github.com/zhuuyicheng/ip.git","repoName":"ip","organization":"zhuuyicheng","domainName":"github"},"branch":"master","displayName":"zhuuyicheng/ip[master]","outputFolderName":"zhuuyicheng_ip_master"},{"location":{"location":"https://github.com/chaaaaun/ip.git","repoName":"ip","organization":"chaaaaun","domainName":"github"},"branch":"master","displayName":"chaaaaun/ip[master]","outputFolderName":"chaaaaun_ip_master"},{"location":{"location":"https://github.com/ChuaZiLong/ip.git","repoName":"ip","organization":"ChuaZiLong","domainName":"github"},"branch":"master","displayName":"ChuaZiLong/ip[master]","outputFolderName":"ChuaZiLong_ip_master"},{"location":{"location":"https://github.com/Benson15912/ip.git","repoName":"ip","organization":"Benson15912","domainName":"github"},"branch":"master","displayName":"Benson15912/ip[master]","outputFolderName":"Benson15912_ip_master"},{"location":{"location":"https://github.com/c-wenlong/ip.git","repoName":"ip","organization":"c-wenlong","domainName":"github"},"branch":"master","displayName":"c-wenlong/ip[master]","outputFolderName":"c-wenlong_ip_master"},{"location":{"location":"https://github.com/gavin331/ip.git","repoName":"ip","organization":"gavin331","domainName":"github"},"branch":"master","displayName":"gavin331/ip[master]","outputFolderName":"gavin331_ip_master"},{"location":{"location":"https://github.com/CJerrong/ip.git","repoName":"ip","organization":"CJerrong","domainName":"github"},"branch":"master","displayName":"CJerrong/ip[master]","outputFolderName":"CJerrong_ip_master"},{"location":{"location":"https://github.com/ibnu2651/ip.git","repoName":"ip","organization":"ibnu2651","domainName":"github"},"branch":"master","displayName":"ibnu2651/ip[master]","outputFolderName":"ibnu2651_ip_master"},{"location":{"location":"https://github.com/1rbg/ip.git","repoName":"ip","organization":"1rbg","domainName":"github"},"branch":"master","displayName":"1rbg/ip[master]","outputFolderName":"1rbg_ip_master"},{"location":{"location":"https://github.com/alvinnzz/ip.git","repoName":"ip","organization":"alvinnzz","domainName":"github"},"branch":"master","displayName":"alvinnzz/ip[master]","outputFolderName":"alvinnzz_ip_master"},{"location":{"location":"https://github.com/whelan-low/ip.git","repoName":"ip","organization":"whelan-low","domainName":"github"},"branch":"master","displayName":"whelan-low/ip[master]","outputFolderName":"whelan-low_ip_master"},{"location":{"location":"https://github.com/ReflectiveObsidian/ip.git","repoName":"ip","organization":"ReflectiveObsidian","domainName":"github"},"branch":"master","displayName":"ReflectiveObsidian/ip[master]","outputFolderName":"ReflectiveObsidian_ip_master"},{"location":{"location":"https://github.com/kwuunnn/ip.git","repoName":"ip","organization":"kwuunnn","domainName":"github"},"branch":"master","displayName":"kwuunnn/ip[master]","outputFolderName":"kwuunnn_ip_master"},{"location":{"location":"https://github.com/billyhoce/ip.git","repoName":"ip","organization":"billyhoce","domainName":"github"},"branch":"master","displayName":"billyhoce/ip[master]","outputFolderName":"billyhoce_ip_master"},{"location":{"location":"https://github.com/Ryo-Seah/ip.git","repoName":"ip","organization":"Ryo-Seah","domainName":"github"},"branch":"master","displayName":"Ryo-Seah/ip[master]","outputFolderName":"Ryo-Seah_ip_master"},{"location":{"location":"https://github.com/meowwtama/ip.git","repoName":"ip","organization":"meowwtama","domainName":"github"},"branch":"master","displayName":"meowwtama/ip[master]","outputFolderName":"meowwtama_ip_master"},{"location":{"location":"https://github.com/gingerbreaf/ip.git","repoName":"ip","organization":"gingerbreaf","domainName":"github"},"branch":"master","displayName":"gingerbreaf/ip[master]","outputFolderName":"gingerbreaf_ip_master"},{"location":{"location":"https://github.com/yeoshuheng/ip.git","repoName":"ip","organization":"yeoshuheng","domainName":"github"},"branch":"master","displayName":"yeoshuheng/ip[master]","outputFolderName":"yeoshuheng_ip_master"},{"location":{"location":"https://github.com/shaunlxw/ip.git","repoName":"ip","organization":"shaunlxw","domainName":"github"},"branch":"master","displayName":"shaunlxw/ip[master]","outputFolderName":"shaunlxw_ip_master"},{"location":{"location":"https://github.com/DingBao-sys/ip.git","repoName":"ip","organization":"DingBao-sys","domainName":"github"},"branch":"master","displayName":"DingBao-sys/ip[master]","outputFolderName":"DingBao-sys_ip_master"},{"location":{"location":"https://github.com/ashleyclx/ip.git","repoName":"ip","organization":"ashleyclx","domainName":"github"},"branch":"master","displayName":"ashleyclx/ip[master]","outputFolderName":"ashleyclx_ip_master"},{"location":{"location":"https://github.com/TheodoreKooo/ip.git","repoName":"ip","organization":"TheodoreKooo","domainName":"github"},"branch":"master","displayName":"TheodoreKooo/ip[master]","outputFolderName":"TheodoreKooo_ip_master"},{"location":{"location":"https://github.com/casaarlai/ip.git","repoName":"ip","organization":"casaarlai","domainName":"github"},"branch":"master","displayName":"casaarlai/ip[master]","outputFolderName":"casaarlai_ip_master"},{"location":{"location":"https://github.com/sun-ruiheng/ip.git","repoName":"ip","organization":"sun-ruiheng","domainName":"github"},"branch":"master","displayName":"sun-ruiheng/ip[master]","outputFolderName":"sun-ruiheng_ip_master"},{"location":{"location":"https://github.com/Fidget-Spinner/ip.git","repoName":"ip","organization":"Fidget-Spinner","domainName":"github"},"branch":"master","displayName":"Fidget-Spinner/ip[master]","outputFolderName":"Fidget-Spinner_ip_master"},{"location":{"location":"https://github.com/Cedricaca/ip.git","repoName":"ip","organization":"Cedricaca","domainName":"github"},"branch":"master","displayName":"Cedricaca/ip[master]","outputFolderName":"Cedricaca_ip_master"},{"location":{"location":"https://github.com/YowSiaoKang/ip.git","repoName":"ip","organization":"YowSiaoKang","domainName":"github"},"branch":"master","displayName":"YowSiaoKang/ip[master]","outputFolderName":"YowSiaoKang_ip_master"},{"location":{"location":"https://github.com/J-wang-CSMA/ip.git","repoName":"ip","organization":"J-wang-CSMA","domainName":"github"},"branch":"master","displayName":"J-wang-CSMA/ip[master]","outputFolderName":"J-wang-CSMA_ip_master"},{"location":{"location":"https://github.com/Ragnapop/ip.git","repoName":"ip","organization":"Ragnapop","domainName":"github"},"branch":"master","displayName":"Ragnapop/ip[master]","outputFolderName":"Ragnapop_ip_master"},{"location":{"location":"https://github.com/UdhayaShan1/ip.git","repoName":"ip","organization":"UdhayaShan1","domainName":"github"},"branch":"master","displayName":"UdhayaShan1/ip[master]","outputFolderName":"UdhayaShan1_ip_master"},{"location":{"location":"https://github.com/tayziyi/ip.git","repoName":"ip","organization":"tayziyi","domainName":"github"},"branch":"master","displayName":"tayziyi/ip[master]","outputFolderName":"tayziyi_ip_master"},{"location":{"location":"https://github.com/blaukc/ip.git","repoName":"ip","organization":"blaukc","domainName":"github"},"branch":"master","displayName":"blaukc/ip[master]","outputFolderName":"blaukc_ip_master"},{"location":{"location":"https://github.com/kokerinks/ip.git","repoName":"ip","organization":"kokerinks","domainName":"github"},"branch":"master","displayName":"kokerinks/ip[master]","outputFolderName":"kokerinks_ip_master"},{"location":{"location":"https://github.com/mahadhir247/ip.git","repoName":"ip","organization":"mahadhir247","domainName":"github"},"branch":"master","displayName":"mahadhir247/ip[master]","outputFolderName":"mahadhir247_ip_master"},{"location":{"location":"https://github.com/delishad21/ip.git","repoName":"ip","organization":"delishad21","domainName":"github"},"branch":"master","displayName":"delishad21/ip[master]","outputFolderName":"delishad21_ip_master"},{"location":{"location":"https://github.com/gavingoh99/ip.git","repoName":"ip","organization":"gavingoh99","domainName":"github"},"branch":"master","displayName":"gavingoh99/ip[master]","outputFolderName":"gavingoh99_ip_master"},{"location":{"location":"https://github.com/kjw142857/ip.git","repoName":"ip","organization":"kjw142857","domainName":"github"},"branch":"master","displayName":"kjw142857/ip[master]","outputFolderName":"kjw142857_ip_master"},{"location":{"location":"https://github.com/dayn-1/ip.git","repoName":"ip","organization":"dayn-1","domainName":"github"},"branch":"master","displayName":"dayn-1/ip[master]","outputFolderName":"dayn-1_ip_master"},{"location":{"location":"https://github.com/macareonie/ip.git","repoName":"ip","organization":"macareonie","domainName":"github"},"branch":"master","displayName":"macareonie/ip[master]","outputFolderName":"macareonie_ip_master"},{"location":{"location":"https://github.com/Rikko1204/ip.git","repoName":"ip","organization":"Rikko1204","domainName":"github"},"branch":"master","displayName":"Rikko1204/ip[master]","outputFolderName":"Rikko1204_ip_master"},{"location":{"location":"https://github.com/teojunda/ip.git","repoName":"ip","organization":"teojunda","domainName":"github"},"branch":"master","displayName":"teojunda/ip[master]","outputFolderName":"teojunda_ip_master"},{"location":{"location":"https://github.com/thewongdylan/ip.git","repoName":"ip","organization":"thewongdylan","domainName":"github"},"branch":"master","displayName":"thewongdylan/ip[master]","outputFolderName":"thewongdylan_ip_master"},{"location":{"location":"https://github.com/bertrandong/ip.git","repoName":"ip","organization":"bertrandong","domainName":"github"},"branch":"master","displayName":"bertrandong/ip[master]","outputFolderName":"bertrandong_ip_master"},{"location":{"location":"https://github.com/rertyy/ip.git","repoName":"ip","organization":"rertyy","domainName":"github"},"branch":"master","displayName":"rertyy/ip[master]","outputFolderName":"rertyy_ip_master"},{"location":{"location":"https://github.com/soons1/ip.git","repoName":"ip","organization":"soons1","domainName":"github"},"branch":"master","displayName":"soons1/ip[master]","outputFolderName":"soons1_ip_master"},{"location":{"location":"https://github.com/solomonng2001/ip.git","repoName":"ip","organization":"solomonng2001","domainName":"github"},"branch":"master","displayName":"solomonng2001/ip[master]","outputFolderName":"solomonng2001_ip_master"},{"location":{"location":"https://github.com/guanquann/ip.git","repoName":"ip","organization":"guanquann","domainName":"github"},"branch":"master","displayName":"guanquann/ip[master]","outputFolderName":"guanquann_ip_master"},{"location":{"location":"https://github.com/YuSoonZ/ip.git","repoName":"ip","organization":"YuSoonZ","domainName":"github"},"branch":"master","displayName":"YuSoonZ/ip[master]","outputFolderName":"YuSoonZ_ip_master"},{"location":{"location":"https://github.com/JuliaPoo/ip.git","repoName":"ip","organization":"JuliaPoo","domainName":"github"},"branch":"master","displayName":"JuliaPoo/ip[master]","outputFolderName":"JuliaPoo_ip_master"},{"location":{"location":"https://github.com/dillontkh/ip.git","repoName":"ip","organization":"dillontkh","domainName":"github"},"branch":"master","displayName":"dillontkh/ip[master]","outputFolderName":"dillontkh_ip_master"},{"location":{"location":"https://github.com/camille-readbean/ip.git","repoName":"ip","organization":"camille-readbean","domainName":"github"},"branch":"master","displayName":"camille-readbean/ip[master]","outputFolderName":"camille-readbean_ip_master"},{"location":{"location":"https://github.com/ruijietay/ip.git","repoName":"ip","organization":"ruijietay","domainName":"github"},"branch":"master","displayName":"ruijietay/ip[master]","outputFolderName":"ruijietay_ip_master"},{"location":{"location":"https://github.com/HM33-Stu/ip.git","repoName":"ip","organization":"HM33-Stu","domainName":"github"},"branch":"master","displayName":"HM33-Stu/ip[master]","outputFolderName":"HM33-Stu_ip_master"},{"location":{"location":"https://github.com/nobodyishappy/ip.git","repoName":"ip","organization":"nobodyishappy","domainName":"github"},"branch":"master","displayName":"nobodyishappy/ip[master]","outputFolderName":"nobodyishappy_ip_master"},{"location":{"location":"https://github.com/yadunut/ip.git","repoName":"ip","organization":"yadunut","domainName":"github"},"branch":"master","displayName":"yadunut/ip[master]","outputFolderName":"yadunut_ip_master"},{"location":{"location":"https://github.com/breezetall/ip.git","repoName":"ip","organization":"breezetall","domainName":"github"},"branch":"master","displayName":"breezetall/ip[master]","outputFolderName":"breezetall_ip_master"},{"location":{"location":"https://github.com/jjchee77/ip.git","repoName":"ip","organization":"jjchee77","domainName":"github"},"branch":"master","displayName":"jjchee77/ip[master]","outputFolderName":"jjchee77_ip_master"},{"location":{"location":"https://github.com/BryanL2303/ip.git","repoName":"ip","organization":"BryanL2303","domainName":"github"},"branch":"master","displayName":"BryanL2303/ip[master]","outputFolderName":"BryanL2303_ip_master"},{"location":{"location":"https://github.com/RyanNgWH/ip.git","repoName":"ip","organization":"RyanNgWH","domainName":"github"},"branch":"master","displayName":"RyanNgWH/ip[master]","outputFolderName":"RyanNgWH_ip_master"},{"location":{"location":"https://github.com/Jaspertzx/ip.git","repoName":"ip","organization":"Jaspertzx","domainName":"github"},"branch":"master","displayName":"Jaspertzx/ip[master]","outputFolderName":"Jaspertzx_ip_master"},{"location":{"location":"https://github.com/smolegz/ip.git","repoName":"ip","organization":"smolegz","domainName":"github"},"branch":"master","displayName":"smolegz/ip[master]","outputFolderName":"smolegz_ip_master"},{"location":{"location":"https://github.com/azumieflare/ip.git","repoName":"ip","organization":"azumieflare","domainName":"github"},"branch":"master","displayName":"azumieflare/ip[master]","outputFolderName":"azumieflare_ip_master"},{"location":{"location":"https://github.com/javierng2knus/ip.git","repoName":"ip","organization":"javierng2knus","domainName":"github"},"branch":"master","displayName":"javierng2knus/ip[master]","outputFolderName":"javierng2knus_ip_master"},{"location":{"location":"https://github.com/SimKianSeng/ip.git","repoName":"ip","organization":"SimKianSeng","domainName":"github"},"branch":"master","displayName":"SimKianSeng/ip[master]","outputFolderName":"SimKianSeng_ip_master"},{"location":{"location":"https://github.com/jasperng-nus/ip.git","repoName":"ip","organization":"jasperng-nus","domainName":"github"},"branch":"master","displayName":"jasperng-nus/ip[master]","outputFolderName":"jasperng-nus_ip_master"},{"location":{"location":"https://github.com/HongRay/ip.git","repoName":"ip","organization":"HongRay","domainName":"github"},"branch":"master","displayName":"HongRay/ip[master]","outputFolderName":"HongRay_ip_master"},{"location":{"location":"https://github.com/kailashgautham/ip.git","repoName":"ip","organization":"kailashgautham","domainName":"github"},"branch":"master","displayName":"kailashgautham/ip[master]","outputFolderName":"kailashgautham_ip_master"},{"location":{"location":"https://github.com/zhenghuil/ip.git","repoName":"ip","organization":"zhenghuil","domainName":"github"},"branch":"master","displayName":"zhenghuil/ip[master]","outputFolderName":"zhenghuil_ip_master"},{"location":{"location":"https://github.com/donwong2308/ip.git","repoName":"ip","organization":"donwong2308","domainName":"github"},"branch":"master","displayName":"donwong2308/ip[master]","outputFolderName":"donwong2308_ip_master"},{"location":{"location":"https://github.com/jayllo-c/ip.git","repoName":"ip","organization":"jayllo-c","domainName":"github"},"branch":"master","displayName":"jayllo-c/ip[master]","outputFolderName":"jayllo-c_ip_master"},{"location":{"location":"https://github.com/cheahTJ/ip.git","repoName":"ip","organization":"cheahTJ","domainName":"github"},"branch":"master","displayName":"cheahTJ/ip[master]","outputFolderName":"cheahTJ_ip_master"},{"location":{"location":"https://github.com/triciiaaa/ip.git","repoName":"ip","organization":"triciiaaa","domainName":"github"},"branch":"master","displayName":"triciiaaa/ip[master]","outputFolderName":"triciiaaa_ip_master"},{"location":{"location":"https://github.com/larainezo/ip.git","repoName":"ip","organization":"larainezo","domainName":"github"},"branch":"master","displayName":"larainezo/ip[master]","outputFolderName":"larainezo_ip_master"},{"location":{"location":"https://github.com/kailinteoo/ip.git","repoName":"ip","organization":"kailinteoo","domainName":"github"},"branch":"master","displayName":"kailinteoo/ip[master]","outputFolderName":"kailinteoo_ip_master"},{"location":{"location":"https://github.com/brennalaurentan/ip.git","repoName":"ip","organization":"brennalaurentan","domainName":"github"},"branch":"master","displayName":"brennalaurentan/ip[master]","outputFolderName":"brennalaurentan_ip_master"},{"location":{"location":"https://github.com/GiselleTan/ip.git","repoName":"ip","organization":"GiselleTan","domainName":"github"},"branch":"master","displayName":"GiselleTan/ip[master]","outputFolderName":"GiselleTan_ip_master"},{"location":{"location":"https://github.com/taufiq/ip.git","repoName":"ip","organization":"taufiq","domainName":"github"},"branch":"master","displayName":"taufiq/ip[master]","outputFolderName":"taufiq_ip_master"},{"location":{"location":"https://github.com/xuelinglow/ip.git","repoName":"ip","organization":"xuelinglow","domainName":"github"},"branch":"master","displayName":"xuelinglow/ip[master]","outputFolderName":"xuelinglow_ip_master"},{"location":{"location":"https://github.com/shunjieee/ip.git","repoName":"ip","organization":"shunjieee","domainName":"github"},"branch":"master","displayName":"shunjieee/ip[master]","outputFolderName":"shunjieee_ip_master"},{"location":{"location":"https://github.com/SherwynNg/ip.git","repoName":"ip","organization":"SherwynNg","domainName":"github"},"branch":"master","displayName":"SherwynNg/ip[master]","outputFolderName":"SherwynNg_ip_master"},{"location":{"location":"https://github.com/AndrewOng2066/ip.git","repoName":"ip","organization":"AndrewOng2066","domainName":"github"},"branch":"master","displayName":"AndrewOng2066/ip[master]","outputFolderName":"AndrewOng2066_ip_master"},{"location":{"location":"https://github.com/MarcusGitty/ip.git","repoName":"ip","organization":"MarcusGitty","domainName":"github"},"branch":"master","displayName":"MarcusGitty/ip[master]","outputFolderName":"MarcusGitty_ip_master"},{"location":{"location":"https://github.com/Anant1902/ip.git","repoName":"ip","organization":"Anant1902","domainName":"github"},"branch":"master","displayName":"Anant1902/ip[master]","outputFolderName":"Anant1902_ip_master"},{"location":{"location":"https://github.com/headcube1/ip.git","repoName":"ip","organization":"headcube1","domainName":"github"},"branch":"master","displayName":"headcube1/ip[master]","outputFolderName":"headcube1_ip_master"},{"location":{"location":"https://github.com/jimseah-0116/ip.git","repoName":"ip","organization":"jimseah-0116","domainName":"github"},"branch":"master","displayName":"jimseah-0116/ip[master]","outputFolderName":"jimseah-0116_ip_master"},{"location":{"location":"https://github.com/ararchch/ip.git","repoName":"ip","organization":"ararchch","domainName":"github"},"branch":"master","displayName":"ararchch/ip[master]","outputFolderName":"ararchch_ip_master"},{"location":{"location":"https://github.com/chiaryan/ip.git","repoName":"ip","organization":"chiaryan","domainName":"github"},"branch":"master","displayName":"chiaryan/ip[master]","outputFolderName":"chiaryan_ip_master"},{"location":{"location":"https://github.com/chengjunyuan/ip.git","repoName":"ip","organization":"chengjunyuan","domainName":"github"},"branch":"master","displayName":"chengjunyuan/ip[master]","outputFolderName":"chengjunyuan_ip_master"},{"location":{"location":"https://github.com/LimZiJia/ip.git","repoName":"ip","organization":"LimZiJia","domainName":"github"},"branch":"master","displayName":"LimZiJia/ip[master]","outputFolderName":"LimZiJia_ip_master"},{"location":{"location":"https://github.com/darkvoid32/ip.git","repoName":"ip","organization":"darkvoid32","domainName":"github"},"branch":"master","displayName":"darkvoid32/ip[master]","outputFolderName":"darkvoid32_ip_master"},{"location":{"location":"https://github.com/maze508/ip.git","repoName":"ip","organization":"maze508","domainName":"github"},"branch":"master","displayName":"maze508/ip[master]","outputFolderName":"maze508_ip_master"},{"location":{"location":"https://github.com/RingoftheKing/ip.git","repoName":"ip","organization":"RingoftheKing","domainName":"github"},"branch":"master","displayName":"RingoftheKing/ip[master]","outputFolderName":"RingoftheKing_ip_master"},{"location":{"location":"https://github.com/Rishit02/ip.git","repoName":"ip","organization":"Rishit02","domainName":"github"},"branch":"master","displayName":"Rishit02/ip[master]","outputFolderName":"Rishit02_ip_master"},{"location":{"location":"https://github.com/drustanyjt/ip.git","repoName":"ip","organization":"drustanyjt","domainName":"github"},"branch":"master","displayName":"drustanyjt/ip[master]","outputFolderName":"drustanyjt_ip_master"},{"location":{"location":"https://github.com/Dexter-Wong/ip.git","repoName":"ip","organization":"Dexter-Wong","domainName":"github"},"branch":"master","displayName":"Dexter-Wong/ip[master]","outputFolderName":"Dexter-Wong_ip_master"},{"location":{"location":"https://github.com/jxunze/ip.git","repoName":"ip","organization":"jxunze","domainName":"github"},"branch":"master","displayName":"jxunze/ip[master]","outputFolderName":"jxunze_ip_master"},{"location":{"location":"https://github.com/Vision-2000/ip.git","repoName":"ip","organization":"Vision-2000","domainName":"github"},"branch":"master","displayName":"Vision-2000/ip[master]","outputFolderName":"Vision-2000_ip_master"},{"location":{"location":"https://github.com/Derekljh/ip.git","repoName":"ip","organization":"Derekljh","domainName":"github"},"branch":"master","displayName":"Derekljh/ip[master]","outputFolderName":"Derekljh_ip_master"},{"location":{"location":"https://github.com/alphajae11/ip.git","repoName":"ip","organization":"alphajae11","domainName":"github"},"branch":"master","displayName":"alphajae11/ip[master]","outputFolderName":"alphajae11_ip_master"},{"location":{"location":"https://github.com/Kappaccinoh/ip.git","repoName":"ip","organization":"Kappaccinoh","domainName":"github"},"branch":"master","displayName":"Kappaccinoh/ip[master]","outputFolderName":"Kappaccinoh_ip_master"},{"location":{"location":"https://github.com/minreiseah/ip.git","repoName":"ip","organization":"minreiseah","domainName":"github"},"branch":"master","displayName":"minreiseah/ip[master]","outputFolderName":"minreiseah_ip_master"},{"location":{"location":"https://github.com/yuhinarita/ip.git","repoName":"ip","organization":"yuhinarita","domainName":"github"},"branch":"master","displayName":"yuhinarita/ip[master]","outputFolderName":"yuhinarita_ip_master"},{"location":{"location":"https://github.com/kab-dot/ip.git","repoName":"ip","organization":"kab-dot","domainName":"github"},"branch":"master","displayName":"kab-dot/ip[master]","outputFolderName":"kab-dot_ip_master"},{"location":{"location":"https://github.com/alfaloo/ip.git","repoName":"ip","organization":"alfaloo","domainName":"github"},"branch":"master","displayName":"alfaloo/ip[master]","outputFolderName":"alfaloo_ip_master"},{"location":{"location":"https://github.com/doyelee0313/ip.git","repoName":"ip","organization":"doyelee0313","domainName":"github"},"branch":"master","displayName":"doyelee0313/ip[master]","outputFolderName":"doyelee0313_ip_master"},{"location":{"location":"https://github.com/sdevih/ip.git","repoName":"ip","organization":"sdevih","domainName":"github"},"branch":"master","displayName":"sdevih/ip[master]","outputFolderName":"sdevih_ip_master"},{"location":{"location":"https://github.com/Emberlynn-Loo/ip.git","repoName":"ip","organization":"Emberlynn-Loo","domainName":"github"},"branch":"master","displayName":"Emberlynn-Loo/ip[master]","outputFolderName":"Emberlynn-Loo_ip_master"},{"location":{"location":"https://github.com/tejas-1405/ip.git","repoName":"ip","organization":"tejas-1405","domainName":"github"},"branch":"master","displayName":"tejas-1405/ip[master]","outputFolderName":"tejas-1405_ip_master"},{"location":{"location":"https://github.com/H4mes/ip.git","repoName":"ip","organization":"H4mes","domainName":"github"},"branch":"master","displayName":"H4mes/ip[master]","outputFolderName":"H4mes_ip_master"},{"location":{"location":"https://github.com/ChocoRagdoll/ip.git","repoName":"ip","organization":"ChocoRagdoll","domainName":"github"},"branch":"master","displayName":"ChocoRagdoll/ip[master]","outputFolderName":"ChocoRagdoll_ip_master"},{"location":{"location":"https://github.com/dwangwk/ip.git","repoName":"ip","organization":"dwangwk","domainName":"github"},"branch":"master","displayName":"dwangwk/ip[master]","outputFolderName":"dwangwk_ip_master"},{"location":{"location":"https://github.com/leeweiming3/ip.git","repoName":"ip","organization":"leeweiming3","domainName":"github"},"branch":"master","displayName":"leeweiming3/ip[master]","outputFolderName":"leeweiming3_ip_master"},{"location":{"location":"https://github.com/Wyrkx/ip.git","repoName":"ip","organization":"Wyrkx","domainName":"github"},"branch":"master","displayName":"Wyrkx/ip[master]","outputFolderName":"Wyrkx_ip_master"},{"location":{"location":"https://github.com/jeong-jaeho/ip.git","repoName":"ip","organization":"jeong-jaeho","domainName":"github"},"branch":"master","displayName":"jeong-jaeho/ip[master]","outputFolderName":"jeong-jaeho_ip_master"},{"location":{"location":"https://github.com/tohlh/ip.git","repoName":"ip","organization":"tohlh","domainName":"github"},"branch":"master","displayName":"tohlh/ip[master]","outputFolderName":"tohlh_ip_master"},{"location":{"location":"https://github.com/tzaph/ip.git","repoName":"ip","organization":"tzaph","domainName":"github"},"branch":"master","displayName":"tzaph/ip[master]","outputFolderName":"tzaph_ip_master"},{"location":{"location":"https://github.com/PateShin/ip.git","repoName":"ip","organization":"PateShin","domainName":"github"},"branch":"master","displayName":"PateShin/ip[master]","outputFolderName":"PateShin_ip_master"},{"location":{"location":"https://github.com/PallonCX/ip.git","repoName":"ip","organization":"PallonCX","domainName":"github"},"branch":"master","displayName":"PallonCX/ip[master]","outputFolderName":"PallonCX_ip_master"},{"location":{"location":"https://github.com/benson1029/ip.git","repoName":"ip","organization":"benson1029","domainName":"github"},"branch":"master","displayName":"benson1029/ip[master]","outputFolderName":"benson1029_ip_master"},{"location":{"location":"https://github.com/Kaya3842/ip.git","repoName":"ip","organization":"Kaya3842","domainName":"github"},"branch":"master","displayName":"Kaya3842/ip[master]","outputFolderName":"Kaya3842_ip_master"},{"location":{"location":"https://github.com/JustWeiHao/ip.git","repoName":"ip","organization":"JustWeiHao","domainName":"github"},"branch":"master","displayName":"JustWeiHao/ip[master]","outputFolderName":"JustWeiHao_ip_master"},{"location":{"location":"https://github.com/chin-herng/ip.git","repoName":"ip","organization":"chin-herng","domainName":"github"},"branch":"master","displayName":"chin-herng/ip[master]","outputFolderName":"chin-herng_ip_master"},{"location":{"location":"https://github.com/swtan346/ip.git","repoName":"ip","organization":"swtan346","domainName":"github"},"branch":"master","displayName":"swtan346/ip[master]","outputFolderName":"swtan346_ip_master"},{"location":{"location":"https://github.com/gosongying/ip.git","repoName":"ip","organization":"gosongying","domainName":"github"},"branch":"master","displayName":"gosongying/ip[master]","outputFolderName":"gosongying_ip_master"},{"location":{"location":"https://github.com/ivan24004/ip.git","repoName":"ip","organization":"ivan24004","domainName":"github"},"branch":"master","displayName":"ivan24004/ip[master]","outputFolderName":"ivan24004_ip_master"},{"location":{"location":"https://github.com/sarjinius/ip.git","repoName":"ip","organization":"sarjinius","domainName":"github"},"branch":"master","displayName":"sarjinius/ip[master]","outputFolderName":"sarjinius_ip_master"},{"location":{"location":"https://github.com/shavonneg/ip.git","repoName":"ip","organization":"shavonneg","domainName":"github"},"branch":"master","displayName":"shavonneg/ip[master]","outputFolderName":"shavonneg_ip_master"},{"location":{"location":"https://github.com/STELLA-LYE/ip.git","repoName":"ip","organization":"STELLA-LYE","domainName":"github"},"branch":"master","displayName":"STELLA-LYE/ip[master]","outputFolderName":"STELLA-LYE_ip_master"},{"location":{"location":"https://github.com/Lalelulilulela/ip.git","repoName":"ip","organization":"Lalelulilulela","domainName":"github"},"branch":"master","displayName":"Lalelulilulela/ip[master]","outputFolderName":"Lalelulilulela_ip_master"},{"location":{"location":"https://github.com/eunrcn/ip.git","repoName":"ip","organization":"eunrcn","domainName":"github"},"branch":"master","displayName":"eunrcn/ip[master]","outputFolderName":"eunrcn_ip_master"},{"location":{"location":"https://github.com/jocelyn-soh/ip.git","repoName":"ip","organization":"jocelyn-soh","domainName":"github"},"branch":"master","displayName":"jocelyn-soh/ip[master]","outputFolderName":"jocelyn-soh_ip_master"},{"location":{"location":"https://github.com/lynnetteeee/ip.git","repoName":"ip","organization":"lynnetteeee","domainName":"github"},"branch":"master","displayName":"lynnetteeee/ip[master]","outputFolderName":"lynnetteeee_ip_master"},{"location":{"location":"https://github.com/chenyixin0/ip.git","repoName":"ip","organization":"chenyixin0","domainName":"github"},"branch":"master","displayName":"chenyixin0/ip[master]","outputFolderName":"chenyixin0_ip_master"},{"location":{"location":"https://github.com/tanjieling0/ip.git","repoName":"ip","organization":"tanjieling0","domainName":"github"},"branch":"master","displayName":"tanjieling0/ip[master]","outputFolderName":"tanjieling0_ip_master"},{"location":{"location":"https://github.com/alex-setyawan/ip.git","repoName":"ip","organization":"alex-setyawan","domainName":"github"},"branch":"master","displayName":"alex-setyawan/ip[master]","outputFolderName":"alex-setyawan_ip_master"},{"location":{"location":"https://github.com/peienlim/ip.git","repoName":"ip","organization":"peienlim","domainName":"github"},"branch":"master","displayName":"peienlim/ip[master]","outputFolderName":"peienlim_ip_master"},{"location":{"location":"https://github.com/danielleloh/ip.git","repoName":"ip","organization":"danielleloh","domainName":"github"},"branch":"master","displayName":"danielleloh/ip[master]","outputFolderName":"danielleloh_ip_master"},{"location":{"location":"https://github.com/jannaleong/ip.git","repoName":"ip","organization":"jannaleong","domainName":"github"},"branch":"master","displayName":"jannaleong/ip[master]","outputFolderName":"jannaleong_ip_master"},{"location":{"location":"https://github.com/huekoh/ip.git","repoName":"ip","organization":"huekoh","domainName":"github"},"branch":"master","displayName":"huekoh/ip[master]","outputFolderName":"huekoh_ip_master"},{"location":{"location":"https://github.com/wapisai/ip.git","repoName":"ip","organization":"wapisai","domainName":"github"},"branch":"master","displayName":"wapisai/ip[master]","outputFolderName":"wapisai_ip_master"},{"location":{"location":"https://github.com/NatLeong/ip.git","repoName":"ip","organization":"NatLeong","domainName":"github"},"branch":"master","displayName":"NatLeong/ip[master]","outputFolderName":"NatLeong_ip_master"},{"location":{"location":"https://github.com/Pughal77/ip.git","repoName":"ip","organization":"Pughal77","domainName":"github"},"branch":"master","displayName":"Pughal77/ip[master]","outputFolderName":"Pughal77_ip_master"},{"location":{"location":"https://github.com/tahnya/ip.git","repoName":"ip","organization":"tahnya","domainName":"github"},"branch":"master","displayName":"tahnya/ip[master]","outputFolderName":"tahnya_ip_master"},{"location":{"location":"https://github.com/rahhulleee/ip.git","repoName":"ip","organization":"rahhulleee","domainName":"github"},"branch":"master","displayName":"rahhulleee/ip[master]","outputFolderName":"rahhulleee_ip_master"},{"location":{"location":"https://github.com/tamagochuuu/ip.git","repoName":"ip","organization":"tamagochuuu","domainName":"github"},"branch":"master","displayName":"tamagochuuu/ip[master]","outputFolderName":"tamagochuuu_ip_master"},{"location":{"location":"https://github.com/Chiarena/ip.git","repoName":"ip","organization":"Chiarena","domainName":"github"},"branch":"master","displayName":"Chiarena/ip[master]","outputFolderName":"Chiarena_ip_master"},{"location":{"location":"https://github.com/agreatdayy/ip.git","repoName":"ip","organization":"agreatdayy","domainName":"github"},"branch":"master","displayName":"agreatdayy/ip[master]","outputFolderName":"agreatdayy_ip_master"},{"location":{"location":"https://github.com/CaptainKeqing/ip.git","repoName":"ip","organization":"CaptainKeqing","domainName":"github"},"branch":"master","displayName":"CaptainKeqing/ip[master]","outputFolderName":"CaptainKeqing_ip_master"},{"location":{"location":"https://github.com/evedaktyl/ip.git","repoName":"ip","organization":"evedaktyl","domainName":"github"},"branch":"master","displayName":"evedaktyl/ip[master]","outputFolderName":"evedaktyl_ip_master"},{"location":{"location":"https://github.com/zhikaiong2001/ip.git","repoName":"ip","organization":"zhikaiong2001","domainName":"github"},"branch":"master","displayName":"zhikaiong2001/ip[master]","outputFolderName":"zhikaiong2001_ip_master"},{"location":{"location":"https://github.com/johnyoozhengxian/ip.git","repoName":"ip","organization":"johnyoozhengxian","domainName":"github"},"branch":"master","displayName":"johnyoozhengxian/ip[master]","outputFolderName":"johnyoozhengxian_ip_master"},{"location":{"location":"https://github.com/KinTatHo/ip.git","repoName":"ip","organization":"KinTatHo","domainName":"github"},"branch":"master","displayName":"KinTatHo/ip[master]","outputFolderName":"KinTatHo_ip_master"},{"location":{"location":"https://github.com/Joseph31416/ip.git","repoName":"ip","organization":"Joseph31416","domainName":"github"},"branch":"master","displayName":"Joseph31416/ip[master]","outputFolderName":"Joseph31416_ip_master"},{"location":{"location":"https://github.com/Murugan-Maniish/ip.git","repoName":"ip","organization":"Murugan-Maniish","domainName":"github"},"branch":"master","displayName":"Murugan-Maniish/ip[master]","outputFolderName":"Murugan-Maniish_ip_master"},{"location":{"location":"https://github.com/Joshy837/ip.git","repoName":"ip","organization":"Joshy837","domainName":"github"},"branch":"master","displayName":"Joshy837/ip[master]","outputFolderName":"Joshy837_ip_master"},{"location":{"location":"https://github.com/ChenXy128/ip.git","repoName":"ip","organization":"ChenXy128","domainName":"github"},"branch":"master","displayName":"ChenXy128/ip[master]","outputFolderName":"ChenXy128_ip_master"},{"location":{"location":"https://github.com/jamessinmaojun/ip.git","repoName":"ip","organization":"jamessinmaojun","domainName":"github"},"branch":"master","displayName":"jamessinmaojun/ip[master]","outputFolderName":"jamessinmaojun_ip_master"},{"location":{"location":"https://github.com/Joelwang22/ip.git","repoName":"ip","organization":"Joelwang22","domainName":"github"},"branch":"master","displayName":"Joelwang22/ip[master]","outputFolderName":"Joelwang22_ip_master"},{"location":{"location":"https://github.com/shawnnlimm/ip.git","repoName":"ip","organization":"shawnnlimm","domainName":"github"},"branch":"master","displayName":"shawnnlimm/ip[master]","outputFolderName":"shawnnlimm_ip_master"},{"location":{"location":"https://github.com/erv-teo/ip.git","repoName":"ip","organization":"erv-teo","domainName":"github"},"branch":"master","displayName":"erv-teo/ip[master]","outputFolderName":"erv-teo_ip_master"},{"location":{"location":"https://github.com/h4ow3i/ip.git","repoName":"ip","organization":"h4ow3i","domainName":"github"},"branch":"master","displayName":"h4ow3i/ip[master]","outputFolderName":"h4ow3i_ip_master"},{"location":{"location":"https://github.com/ziyang27/ip.git","repoName":"ip","organization":"ziyang27","domainName":"github"},"branch":"master","displayName":"ziyang27/ip[master]","outputFolderName":"ziyang27_ip_master"},{"location":{"location":"https://github.com/FangRuoqing/ip.git","repoName":"ip","organization":"FangRuoqing","domainName":"github"},"branch":"master","displayName":"FangRuoqing/ip[master]","outputFolderName":"FangRuoqing_ip_master"},{"location":{"location":"https://github.com/0nesheep/ip.git","repoName":"ip","organization":"0nesheep","domainName":"github"},"branch":"master","displayName":"0nesheep/ip[master]","outputFolderName":"0nesheep_ip_master"},{"location":{"location":"https://github.com/0-yibai/ip.git","repoName":"ip","organization":"0-yibai","domainName":"github"},"branch":"master","displayName":"0-yibai/ip[master]","outputFolderName":"0-yibai_ip_master"},{"location":{"location":"https://github.com/jerremyng/ip.git","repoName":"ip","organization":"jerremyng","domainName":"github"},"branch":"master","displayName":"jerremyng/ip[master]","outputFolderName":"jerremyng_ip_master"},{"location":{"location":"https://github.com/irwynliong/ip.git","repoName":"ip","organization":"irwynliong","domainName":"github"},"branch":"master","displayName":"irwynliong/ip[master]","outputFolderName":"irwynliong_ip_master"},{"location":{"location":"https://github.com/yorklim/ip.git","repoName":"ip","organization":"yorklim","domainName":"github"},"branch":"master","displayName":"yorklim/ip[master]","outputFolderName":"yorklim_ip_master"},{"location":{"location":"https://github.com/vannykin/ip.git","repoName":"ip","organization":"vannykin","domainName":"github"},"branch":"master","displayName":"vannykin/ip[master]","outputFolderName":"vannykin_ip_master"},{"location":{"location":"https://github.com/laney0808/ip.git","repoName":"ip","organization":"laney0808","domainName":"github"},"branch":"master","displayName":"laney0808/ip[master]","outputFolderName":"laney0808_ip_master"},{"location":{"location":"https://github.com/yapxuanxuan/ip.git","repoName":"ip","organization":"yapxuanxuan","domainName":"github"},"branch":"master","displayName":"yapxuanxuan/ip[master]","outputFolderName":"yapxuanxuan_ip_master"},{"location":{"location":"https://github.com/Greg-Tan/ip.git","repoName":"ip","organization":"Greg-Tan","domainName":"github"},"branch":"master","displayName":"Greg-Tan/ip[master]","outputFolderName":"Greg-Tan_ip_master"},{"location":{"location":"https://github.com/taniatsq/ip.git","repoName":"ip","organization":"taniatsq","domainName":"github"},"branch":"master","displayName":"taniatsq/ip[master]","outputFolderName":"taniatsq_ip_master"},{"location":{"location":"https://github.com/yongkotaro/ip.git","repoName":"ip","organization":"yongkotaro","domainName":"github"},"branch":"master","displayName":"yongkotaro/ip[master]","outputFolderName":"yongkotaro_ip_master"},{"location":{"location":"https://github.com/tanyunchao/ip.git","repoName":"ip","organization":"tanyunchao","domainName":"github"},"branch":"master","displayName":"tanyunchao/ip[master]","outputFolderName":"tanyunchao_ip_master"},{"location":{"location":"https://github.com/KiatLun/ip.git","repoName":"ip","organization":"KiatLun","domainName":"github"},"branch":"master","displayName":"KiatLun/ip[master]","outputFolderName":"KiatLun_ip_master"},{"location":{"location":"https://github.com/Xuyan0518/ip.git","repoName":"ip","organization":"Xuyan0518","domainName":"github"},"branch":"master","displayName":"Xuyan0518/ip[master]","outputFolderName":"Xuyan0518_ip_master"},{"location":{"location":"https://github.com/cleowenxuan/ip.git","repoName":"ip","organization":"cleowenxuan","domainName":"github"},"branch":"master","displayName":"cleowenxuan/ip[master]","outputFolderName":"cleowenxuan_ip_master"},{"location":{"location":"https://github.com/logical-1985516/ip.git","repoName":"ip","organization":"logical-1985516","domainName":"github"},"branch":"master","displayName":"logical-1985516/ip[master]","outputFolderName":"logical-1985516_ip_master"},{"location":{"location":"https://github.com/jessicawyz/ip.git","repoName":"ip","organization":"jessicawyz","domainName":"github"},"branch":"master","displayName":"jessicawyz/ip[master]","outputFolderName":"jessicawyz_ip_master"},{"location":{"location":"https://github.com/ashleyy2444/ip.git","repoName":"ip","organization":"ashleyy2444","domainName":"github"},"branch":"master","displayName":"ashleyy2444/ip[master]","outputFolderName":"ashleyy2444_ip_master"},{"location":{"location":"https://github.com/tengcharmaine/ip.git","repoName":"ip","organization":"tengcharmaine","domainName":"github"},"branch":"master","displayName":"tengcharmaine/ip[master]","outputFolderName":"tengcharmaine_ip_master"},{"location":{"location":"https://github.com/Jawad280/ip.git","repoName":"ip","organization":"Jawad280","domainName":"github"},"branch":"master","displayName":"Jawad280/ip[master]","outputFolderName":"Jawad280_ip_master"},{"location":{"location":"https://github.com/ThatGirlJam/ip.git","repoName":"ip","organization":"ThatGirlJam","domainName":"github"},"branch":"master","displayName":"ThatGirlJam/ip[master]","outputFolderName":"ThatGirlJam_ip_master"},{"location":{"location":"https://github.com/saiutkarsh33/ip.git","repoName":"ip","organization":"saiutkarsh33","domainName":"github"},"branch":"master","displayName":"saiutkarsh33/ip[master]","outputFolderName":"saiutkarsh33_ip_master"},{"location":{"location":"https://github.com/meenulekha/ip.git","repoName":"ip","organization":"meenulekha","domainName":"github"},"branch":"master","displayName":"meenulekha/ip[master]","outputFolderName":"meenulekha_ip_master"},{"location":{"location":"https://github.com/LargeCrowd/ip.git","repoName":"ip","organization":"LargeCrowd","domainName":"github"},"branch":"master","displayName":"LargeCrowd/ip[master]","outputFolderName":"LargeCrowd_ip_master"},{"location":{"location":"https://github.com/linnn-7/ip.git","repoName":"ip","organization":"linnn-7","domainName":"github"},"branch":"master","displayName":"linnn-7/ip[master]","outputFolderName":"linnn-7_ip_master"},{"location":{"location":"https://github.com/maiyasaliha/ip.git","repoName":"ip","organization":"maiyasaliha","domainName":"github"},"branch":"master","displayName":"maiyasaliha/ip[master]","outputFolderName":"maiyasaliha_ip_master"},{"location":{"location":"https://github.com/jonpwk/ip.git","repoName":"ip","organization":"jonpwk","domainName":"github"},"branch":"master","displayName":"jonpwk/ip[master]","outputFolderName":"jonpwk_ip_master"},{"location":{"location":"https://github.com/ChillinRage/ip.git","repoName":"ip","organization":"ChillinRage","domainName":"github"},"branch":"master","displayName":"ChillinRage/ip[master]","outputFolderName":"ChillinRage_ip_master"},{"location":{"location":"https://github.com/moguries/ip.git","repoName":"ip","organization":"moguries","domainName":"github"},"branch":"master","displayName":"moguries/ip[master]","outputFolderName":"moguries_ip_master"},{"location":{"location":"https://github.com/Alteqa/ip.git","repoName":"ip","organization":"Alteqa","domainName":"github"},"branch":"master","displayName":"Alteqa/ip[master]","outputFolderName":"Alteqa_ip_master"},{"location":{"location":"https://github.com/Zack-Tay/ip.git","repoName":"ip","organization":"Zack-Tay","domainName":"github"},"branch":"master","displayName":"Zack-Tay/ip[master]","outputFolderName":"Zack-Tay_ip_master"},{"location":{"location":"https://github.com/marcus-ny/ip.git","repoName":"ip","organization":"marcus-ny","domainName":"github"},"branch":"master","displayName":"marcus-ny/ip[master]","outputFolderName":"marcus-ny_ip_master"},{"location":{"location":"https://github.com/bennyLCK/ip.git","repoName":"ip","organization":"bennyLCK","domainName":"github"},"branch":"master","displayName":"bennyLCK/ip[master]","outputFolderName":"bennyLCK_ip_master"},{"location":{"location":"https://github.com/kinjalagarwal1810/ip.git","repoName":"ip","organization":"kinjalagarwal1810","domainName":"github"},"branch":"master","displayName":"kinjalagarwal1810/ip[master]","outputFolderName":"kinjalagarwal1810_ip_master"},{"location":{"location":"https://github.com/R-Laksh/ip.git","repoName":"ip","organization":"R-Laksh","domainName":"github"},"branch":"master","displayName":"R-Laksh/ip[master]","outputFolderName":"R-Laksh_ip_master"},{"location":{"location":"https://github.com/Colex2000/ip.git","repoName":"ip","organization":"Colex2000","domainName":"github"},"branch":"master","displayName":"Colex2000/ip[master]","outputFolderName":"Colex2000_ip_master"},{"location":{"location":"https://github.com/DhiraPT/ip.git","repoName":"ip","organization":"DhiraPT","domainName":"github"},"branch":"master","displayName":"DhiraPT/ip[master]","outputFolderName":"DhiraPT_ip_master"},{"location":{"location":"https://github.com/yyccbb/ip.git","repoName":"ip","organization":"yyccbb","domainName":"github"},"branch":"master","displayName":"yyccbb/ip[master]","outputFolderName":"yyccbb_ip_master"},{"location":{"location":"https://github.com/nigel27022001/ip.git","repoName":"ip","organization":"nigel27022001","domainName":"github"},"branch":"master","displayName":"nigel27022001/ip[master]","outputFolderName":"nigel27022001_ip_master"},{"location":{"location":"https://github.com/shamesjen/ip.git","repoName":"ip","organization":"shamesjen","domainName":"github"},"branch":"master","displayName":"shamesjen/ip[master]","outputFolderName":"shamesjen_ip_master"},{"location":{"location":"https://github.com/sindhurajain/ip.git","repoName":"ip","organization":"sindhurajain","domainName":"github"},"branch":"master","displayName":"sindhurajain/ip[master]","outputFolderName":"sindhurajain_ip_master"},{"location":{"location":"https://github.com/ryanlimdx/ip.git","repoName":"ip","organization":"ryanlimdx","domainName":"github"},"branch":"master","displayName":"ryanlimdx/ip[master]","outputFolderName":"ryanlimdx_ip_master"},{"location":{"location":"https://github.com/hiivan/ip.git","repoName":"ip","organization":"hiivan","domainName":"github"},"branch":"master","displayName":"hiivan/ip[master]","outputFolderName":"hiivan_ip_master"},{"location":{"location":"https://github.com/Apzure/ip.git","repoName":"ip","organization":"Apzure","domainName":"github"},"branch":"master","displayName":"Apzure/ip[master]","outputFolderName":"Apzure_ip_master"},{"location":{"location":"https://github.com/bgopi23/ip.git","repoName":"ip","organization":"bgopi23","domainName":"github"},"branch":"master","displayName":"bgopi23/ip[master]","outputFolderName":"bgopi23_ip_master"},{"location":{"location":"https://github.com/LWS49/ip.git","repoName":"ip","organization":"LWS49","domainName":"github"},"branch":"master","displayName":"LWS49/ip[master]","outputFolderName":"LWS49_ip_master"},{"location":{"location":"https://github.com/wang-xinrong/ip.git","repoName":"ip","organization":"wang-xinrong","domainName":"github"},"branch":"master","displayName":"wang-xinrong/ip[master]","outputFolderName":"wang-xinrong_ip_master"},{"location":{"location":"https://github.com/HusseinSafwan02/ip.git","repoName":"ip","organization":"HusseinSafwan02","domainName":"github"},"branch":"master","displayName":"HusseinSafwan02/ip[master]","outputFolderName":"HusseinSafwan02_ip_master"},{"location":{"location":"https://github.com/Ko-Khan/ip.git","repoName":"ip","organization":"Ko-Khan","domainName":"github"},"branch":"master","displayName":"Ko-Khan/ip[master]","outputFolderName":"Ko-Khan_ip_master"},{"location":{"location":"https://github.com/yleeyilin/ip.git","repoName":"ip","organization":"yleeyilin","domainName":"github"},"branch":"master","displayName":"yleeyilin/ip[master]","outputFolderName":"yleeyilin_ip_master"},{"location":{"location":"https://github.com/jiahui0309/ip.git","repoName":"ip","organization":"jiahui0309","domainName":"github"},"branch":"master","displayName":"jiahui0309/ip[master]","outputFolderName":"jiahui0309_ip_master"},{"location":{"location":"https://github.com/Jayne1010/ip.git","repoName":"ip","organization":"Jayne1010","domainName":"github"},"branch":"master","displayName":"Jayne1010/ip[master]","outputFolderName":"Jayne1010_ip_master"},{"location":{"location":"https://github.com/getsquared/ip.git","repoName":"ip","organization":"getsquared","domainName":"github"},"branch":"master","displayName":"getsquared/ip[master]","outputFolderName":"getsquared_ip_master"},{"location":{"location":"https://github.com/kaitinghh/ip.git","repoName":"ip","organization":"kaitinghh","domainName":"github"},"branch":"master","displayName":"kaitinghh/ip[master]","outputFolderName":"kaitinghh_ip_master"},{"location":{"location":"https://github.com/4llysa/ip.git","repoName":"ip","organization":"4llysa","domainName":"github"},"branch":"master","displayName":"4llysa/ip[master]","outputFolderName":"4llysa_ip_master"},{"location":{"location":"https://github.com/Lin-Shuang-Shuang/ip.git","repoName":"ip","organization":"Lin-Shuang-Shuang","domainName":"github"},"branch":"master","displayName":"Lin-Shuang-Shuang/ip[master]","outputFolderName":"Lin-Shuang-Shuang_ip_master"},{"location":{"location":"https://github.com/youdonnnn/ip.git","repoName":"ip","organization":"youdonnnn","domainName":"github"},"branch":"master","displayName":"youdonnnn/ip[master]","outputFolderName":"youdonnnn_ip_master"},{"location":{"location":"https://github.com/xuwen-ho/ip.git","repoName":"ip","organization":"xuwen-ho","domainName":"github"},"branch":"master","displayName":"xuwen-ho/ip[master]","outputFolderName":"xuwen-ho_ip_master"},{"location":{"location":"https://github.com/ongzhili/ip.git","repoName":"ip","organization":"ongzhili","domainName":"github"},"branch":"master","displayName":"ongzhili/ip[master]","outputFolderName":"ongzhili_ip_master"},{"location":{"location":"https://github.com/miffi/ip.git","repoName":"ip","organization":"miffi","domainName":"github"},"branch":"master","displayName":"miffi/ip[master]","outputFolderName":"miffi_ip_master"},{"location":{"location":"https://github.com/wallacexuhanxiao/ip.git","repoName":"ip","organization":"wallacexuhanxiao","domainName":"github"},"branch":"master","displayName":"wallacexuhanxiao/ip[master]","outputFolderName":"wallacexuhanxiao_ip_master"},{"location":{"location":"https://github.com/Teee728/ip.git","repoName":"ip","organization":"Teee728","domainName":"github"},"branch":"master","displayName":"Teee728/ip[master]","outputFolderName":"Teee728_ip_master"},{"location":{"location":"https://github.com/wolffe88/ip.git","repoName":"ip","organization":"wolffe88","domainName":"github"},"branch":"master","displayName":"wolffe88/ip[master]","outputFolderName":"wolffe88_ip_master"},{"location":{"location":"https://github.com/jskimdev/ip.git","repoName":"ip","organization":"jskimdev","domainName":"github"},"branch":"master","displayName":"jskimdev/ip[master]","outputFolderName":"jskimdev_ip_master"},{"location":{"location":"https://github.com/reetmitra/ip.git","repoName":"ip","organization":"reetmitra","domainName":"github"},"branch":"master","displayName":"reetmitra/ip[master]","outputFolderName":"reetmitra_ip_master"},{"location":{"location":"https://github.com/iamtr/ip.git","repoName":"ip","organization":"iamtr","domainName":"github"},"branch":"master","displayName":"iamtr/ip[master]","outputFolderName":"iamtr_ip_master"},{"location":{"location":"https://github.com/officialchengyud/ip.git","repoName":"ip","organization":"officialchengyud","domainName":"github"},"branch":"master","displayName":"officialchengyud/ip[master]","outputFolderName":"officialchengyud_ip_master"},{"location":{"location":"https://github.com/GERARDJM018/ip.git","repoName":"ip","organization":"GERARDJM018","domainName":"github"},"branch":"master","displayName":"GERARDJM018/ip[master]","outputFolderName":"GERARDJM018_ip_master"},{"location":{"location":"https://github.com/howen02/ip.git","repoName":"ip","organization":"howen02","domainName":"github"},"branch":"master","displayName":"howen02/ip[master]","outputFolderName":"howen02_ip_master"},{"location":{"location":"https://github.com/NusMinato/ip.git","repoName":"ip","organization":"NusMinato","domainName":"github"},"branch":"master","displayName":"NusMinato/ip[master]","outputFolderName":"NusMinato_ip_master"},{"location":{"location":"https://github.com/hjuntan/ip.git","repoName":"ip","organization":"hjuntan","domainName":"github"},"branch":"master","displayName":"hjuntan/ip[master]","outputFolderName":"hjuntan_ip_master"},{"location":{"location":"https://github.com/gauravuj/ip.git","repoName":"ip","organization":"gauravuj","domainName":"github"},"branch":"master","displayName":"gauravuj/ip[master]","outputFolderName":"gauravuj_ip_master"},{"location":{"location":"https://github.com/yespiggy/ip.git","repoName":"ip","organization":"yespiggy","domainName":"github"},"branch":"master","displayName":"yespiggy/ip[master]","outputFolderName":"yespiggy_ip_master"},{"location":{"location":"https://github.com/Windofbitter/ip.git","repoName":"ip","organization":"Windofbitter","domainName":"github"},"branch":"master","displayName":"Windofbitter/ip[master]","outputFolderName":"Windofbitter_ip_master"},{"location":{"location":"https://github.com/NewtonKoh/ip.git","repoName":"ip","organization":"NewtonKoh","domainName":"github"},"branch":"master","displayName":"NewtonKoh/ip[master]","outputFolderName":"NewtonKoh_ip_master"},{"location":{"location":"https://github.com/narwhalsilent/ip.git","repoName":"ip","organization":"narwhalsilent","domainName":"github"},"branch":"master","displayName":"narwhalsilent/ip[master]","outputFolderName":"narwhalsilent_ip_master"},{"location":{"location":"https://github.com/starsia/ip.git","repoName":"ip","organization":"starsia","domainName":"github"},"branch":"master","displayName":"starsia/ip[master]","outputFolderName":"starsia_ip_master"},{"location":{"location":"https://github.com/AidenLYT/ip.git","repoName":"ip","organization":"AidenLYT","domainName":"github"},"branch":"master","displayName":"AidenLYT/ip[master]","outputFolderName":"AidenLYT_ip_master"},{"location":{"location":"https://github.com/nyankoclaws/ip.git","repoName":"ip","organization":"nyankoclaws","domainName":"github"},"branch":"master","displayName":"nyankoclaws/ip[master]","outputFolderName":"nyankoclaws_ip_master"},{"location":{"location":"https://github.com/angsongyee/ip.git","repoName":"ip","organization":"angsongyee","domainName":"github"},"branch":"master","displayName":"angsongyee/ip[master]","outputFolderName":"angsongyee_ip_master"},{"location":{"location":"https://github.com/eliotlee68/ip.git","repoName":"ip","organization":"eliotlee68","domainName":"github"},"branch":"master","displayName":"eliotlee68/ip[master]","outputFolderName":"eliotlee68_ip_master"},{"location":{"location":"https://github.com/Yskie/ip.git","repoName":"ip","organization":"Yskie","domainName":"github"},"branch":"master","displayName":"Yskie/ip[master]","outputFolderName":"Yskie_ip_master"},{"location":{"location":"https://github.com/faaheem13/ip.git","repoName":"ip","organization":"faaheem13","domainName":"github"},"branch":"master","displayName":"faaheem13/ip[master]","outputFolderName":"faaheem13_ip_master"},{"location":{"location":"https://github.com/Shauryan123/ip.git","repoName":"ip","organization":"Shauryan123","domainName":"github"},"branch":"master","displayName":"Shauryan123/ip[master]","outputFolderName":"Shauryan123_ip_master"},{"location":{"location":"https://github.com/MaYuehan/ip.git","repoName":"ip","organization":"MaYuehan","domainName":"github"},"branch":"master","displayName":"MaYuehan/ip[master]","outputFolderName":"MaYuehan_ip_master"},{"location":{"location":"https://github.com/kaiyi27/ip.git","repoName":"ip","organization":"kaiyi27","domainName":"github"},"branch":"master","displayName":"kaiyi27/ip[master]","outputFolderName":"kaiyi27_ip_master"},{"location":{"location":"https://github.com/radeon2525/ip.git","repoName":"ip","organization":"radeon2525","domainName":"github"},"branch":"master","displayName":"radeon2525/ip[master]","outputFolderName":"radeon2525_ip_master"},{"location":{"location":"https://github.com/dedsecrattle/ip.git","repoName":"ip","organization":"dedsecrattle","domainName":"github"},"branch":"master","displayName":"dedsecrattle/ip[master]","outputFolderName":"dedsecrattle_ip_master"},{"location":{"location":"https://github.com/AdityaB4/ip.git","repoName":"ip","organization":"AdityaB4","domainName":"github"},"branch":"master","displayName":"AdityaB4/ip[master]","outputFolderName":"AdityaB4_ip_master"},{"location":{"location":"https://github.com/PyromancerBoom/ip.git","repoName":"ip","organization":"PyromancerBoom","domainName":"github"},"branch":"master","displayName":"PyromancerBoom/ip[master]","outputFolderName":"PyromancerBoom_ip_master"},{"location":{"location":"https://github.com/JiaXinEu/ip.git","repoName":"ip","organization":"JiaXinEu","domainName":"github"},"branch":"master","displayName":"JiaXinEu/ip[master]","outputFolderName":"JiaXinEu_ip_master"},{"location":{"location":"https://github.com/Ella-e/ip.git","repoName":"ip","organization":"Ella-e","domainName":"github"},"branch":"master","displayName":"Ella-e/ip[master]","outputFolderName":"Ella-e_ip_master"},{"location":{"location":"https://github.com/yiwern5/ip.git","repoName":"ip","organization":"yiwern5","domainName":"github"},"branch":"master","displayName":"yiwern5/ip[master]","outputFolderName":"yiwern5_ip_master"},{"location":{"location":"https://github.com/SamuelZero1/ip.git","repoName":"ip","organization":"SamuelZero1","domainName":"github"},"branch":"master","displayName":"SamuelZero1/ip[master]","outputFolderName":"SamuelZero1_ip_master"},{"location":{"location":"https://github.com/nuyer/ip.git","repoName":"ip","organization":"nuyer","domainName":"github"},"branch":"master","displayName":"nuyer/ip[master]","outputFolderName":"nuyer_ip_master"},{"location":{"location":"https://github.com/SeaHogs/ip.git","repoName":"ip","organization":"SeaHogs","domainName":"github"},"branch":"master","displayName":"SeaHogs/ip[master]","outputFolderName":"SeaHogs_ip_master"},{"location":{"location":"https://github.com/TarinPairor/ip.git","repoName":"ip","organization":"TarinPairor","domainName":"github"},"branch":"master","displayName":"TarinPairor/ip[master]","outputFolderName":"TarinPairor_ip_master"},{"location":{"location":"https://github.com/KSSWSept20/ip.git","repoName":"ip","organization":"KSSWSept20","domainName":"github"},"branch":"master","displayName":"KSSWSept20/ip[master]","outputFolderName":"KSSWSept20_ip_master"},{"location":{"location":"https://github.com/myang2020/ip.git","repoName":"ip","organization":"myang2020","domainName":"github"},"branch":"master","displayName":"myang2020/ip[master]","outputFolderName":"myang2020_ip_master"},{"location":{"location":"https://github.com/leepoeaik/ip.git","repoName":"ip","organization":"leepoeaik","domainName":"github"},"branch":"master","displayName":"leepoeaik/ip[master]","outputFolderName":"leepoeaik_ip_master"},{"location":{"location":"https://github.com/justinlengch/ip.git","repoName":"ip","organization":"justinlengch","domainName":"github"},"branch":"master","displayName":"justinlengch/ip[master]","outputFolderName":"justinlengch_ip_master"},{"location":{"location":"https://github.com/Li-Zizhen/ip.git","repoName":"ip","organization":"Li-Zizhen","domainName":"github"},"branch":"master","displayName":"Li-Zizhen/ip[master]","outputFolderName":"Li-Zizhen_ip_master"},{"location":{"location":"https://github.com/ashleygoh1/ip.git","repoName":"ip","organization":"ashleygoh1","domainName":"github"},"branch":"master","displayName":"ashleygoh1/ip[master]","outputFolderName":"ashleygoh1_ip_master"},{"location":{"location":"https://github.com/Wongqingyee/ip.git","repoName":"ip","organization":"Wongqingyee","domainName":"github"},"branch":"master","displayName":"Wongqingyee/ip[master]","outputFolderName":"Wongqingyee_ip_master"},{"location":{"location":"https://github.com/AjayArvind2207/ip.git","repoName":"ip","organization":"AjayArvind2207","domainName":"github"},"branch":"master","displayName":"AjayArvind2207/ip[master]","outputFolderName":"AjayArvind2207_ip_master"},{"location":{"location":"https://github.com/Austintjh19/ip.git","repoName":"ip","organization":"Austintjh19","domainName":"github"},"branch":"master","displayName":"Austintjh19/ip[master]","outputFolderName":"Austintjh19_ip_master"},{"location":{"location":"https://github.com/jinhanfromNUS/ip.git","repoName":"ip","organization":"jinhanfromNUS","domainName":"github"},"branch":"master","displayName":"jinhanfromNUS/ip[master]","outputFolderName":"jinhanfromNUS_ip_master"},{"location":{"location":"https://github.com/ziyi22/ip.git","repoName":"ip","organization":"ziyi22","domainName":"github"},"branch":"master","displayName":"ziyi22/ip[master]","outputFolderName":"ziyi22_ip_master"},{"location":{"location":"https://github.com/menatahari/ip.git","repoName":"ip","organization":"menatahari","domainName":"github"},"branch":"master","displayName":"menatahari/ip[master]","outputFolderName":"menatahari_ip_master"},{"location":{"location":"https://github.com/ThitipatC/ip.git","repoName":"ip","organization":"ThitipatC","domainName":"github"},"branch":"master","displayName":"ThitipatC/ip[master]","outputFolderName":"ThitipatC_ip_master"},{"location":{"location":"https://github.com/purivirakarin/ip.git","repoName":"ip","organization":"purivirakarin","domainName":"github"},"branch":"master","displayName":"purivirakarin/ip[master]","outputFolderName":"purivirakarin_ip_master"},{"location":{"location":"https://github.com/modembcc/ip.git","repoName":"ip","organization":"modembcc","domainName":"github"},"branch":"master","displayName":"modembcc/ip[master]","outputFolderName":"modembcc_ip_master"},{"location":{"location":"https://github.com/yashma-sonara/ip.git","repoName":"ip","organization":"yashma-sonara","domainName":"github"},"branch":"master","displayName":"yashma-sonara/ip[master]","outputFolderName":"yashma-sonara_ip_master"},{"location":{"location":"https://github.com/0liverkong/ip.git","repoName":"ip","organization":"0liverkong","domainName":"github"},"branch":"master","displayName":"0liverkong/ip[master]","outputFolderName":"0liverkong_ip_master"},{"location":{"location":"https://github.com/dhlee03/ip.git","repoName":"ip","organization":"dhlee03","domainName":"github"},"branch":"master","displayName":"dhlee03/ip[master]","outputFolderName":"dhlee03_ip_master"},{"location":{"location":"https://github.com/shayaansultan/ip.git","repoName":"ip","organization":"shayaansultan","domainName":"github"},"branch":"master","displayName":"shayaansultan/ip[master]","outputFolderName":"shayaansultan_ip_master"},{"location":{"location":"https://github.com/ljy0422/ip.git","repoName":"ip","organization":"ljy0422","domainName":"github"},"branch":"master","displayName":"ljy0422/ip[master]","outputFolderName":"ljy0422_ip_master"},{"location":{"location":"https://github.com/JukeBoxK/ip.git","repoName":"ip","organization":"JukeBoxK","domainName":"github"},"branch":"master","displayName":"JukeBoxK/ip[master]","outputFolderName":"JukeBoxK_ip_master"},{"location":{"location":"https://github.com/Howlong11/ip.git","repoName":"ip","organization":"Howlong11","domainName":"github"},"branch":"master","displayName":"Howlong11/ip[master]","outputFolderName":"Howlong11_ip_master"},{"location":{"location":"https://github.com/Hibeom0929/ip.git","repoName":"ip","organization":"Hibeom0929","domainName":"github"},"branch":"master","displayName":"Hibeom0929/ip[master]","outputFolderName":"Hibeom0929_ip_master"},{"location":{"location":"https://github.com/VatsalVitosh/ip.git","repoName":"ip","organization":"VatsalVitosh","domainName":"github"},"branch":"master","displayName":"VatsalVitosh/ip[master]","outputFolderName":"VatsalVitosh_ip_master"},{"location":{"location":"https://github.com/bachletuankhai/ip.git","repoName":"ip","organization":"bachletuankhai","domainName":"github"},"branch":"master","displayName":"bachletuankhai/ip[master]","outputFolderName":"bachletuankhai_ip_master"},{"location":{"location":"https://github.com/RunjiaChen/ip.git","repoName":"ip","organization":"RunjiaChen","domainName":"github"},"branch":"master","displayName":"RunjiaChen/ip[master]","outputFolderName":"RunjiaChen_ip_master"}],"errorSet":[{"repoName":"JerryWang0000/ip[master]","errorMessage":"Failed to clone from https://github.com/JerryWang0000/ip.git"},{"repoName":"ShanylOng/ip[master]","errorMessage":"Failed to clone from https://github.com/ShanylOng/ip.git"},{"repoName":"chuahjiajie/ip[master]","errorMessage":"Failed to clone from https://github.com/chuahjiajie/ip.git"},{"repoName":"Ryan-Reno/ip[master]","errorMessage":"Failed to clone from https://github.com/Ryan-Reno/ip.git"},{"repoName":"tcjazwei/ip[master]","errorMessage":"Failed to clone from https://github.com/tcjazwei/ip.git"},{"repoName":"Morninggloryyy/ip[master]","errorMessage":"Failed to clone from https://github.com/Morninggloryyy/ip.git"},{"repoName":"quelinxiao/ip[master]","errorMessage":"Failed to clone from https://github.com/quelinxiao/ip.git"},{"repoName":"ValenciaLim/ip[master]","errorMessage":"Failed to clone from https://github.com/ValenciaLim/ip.git"},{"repoName":"nusliuyifan/ip[master]","errorMessage":"Failed to clone from https://github.com/nusliuyifan/ip.git"},{"repoName":"peterXGD/ip[master]","errorMessage":"Failed to clone from https://github.com/peterXGD/ip.git"},{"repoName":"IamZhenHong/ip[master]","errorMessage":"Failed to clone from https://github.com/IamZhenHong/ip.git"}],"sinceDate":"2024-01-19","untilDate":"2024-01-30","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/teojunda_ip_master/authorship.json b/teojunda_ip_master/authorship.json index 6ee88925..0b80175e 100644 --- a/teojunda_ip_master/authorship.json +++ b/teojunda_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"T,0,read book","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"E,1,soccer match,monday,tuesday","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"D,0,homework,end of week","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":3}},{"path":"src/main/java/duke/Actions.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"public enum Actions {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":" BYE, LIST, MARK, UNMARK, DELETE, TODO, DEADLINE, EVENT, INVALID","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":4}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import duke.exceptions.StorageException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import duke.parser.InputParser;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"public class Duke {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" private InputParser inputParser;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" private Storage storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" private boolean ready;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" public Duke() {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" String filePath \u003d \"data/data.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" this.inputParser \u003d new InputParser();","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" this.ready \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" this.taskList \u003d new TaskList(storage.loadFile());","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" this.sendSystemMessage(\"There is no saved data in the system\\n\" + TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" } catch (StorageException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" this.sendSystemMessage(\"Saved data is corrupted. Please delete/resolve file at: \" + filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" this.ready \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" private void sendSystemMessage(String... strs) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" for (String s: strs) {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" System.out.println(s);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" private void greet() {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" this.sendSystemMessage(TextTemplate.LINE_BREAK, TextTemplate.GREETING, TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" private void exit() {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" public void run() {","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" this.greet();","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" while (inputParser.isActive()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" this.sendSystemMessage(TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" String response \u003d inputParser.processCommand(input, this.taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" this.sendSystemMessage(response);","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" this.storage.saveData(this.taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" } catch (InvalidInputException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":" this.sendSystemMessage(e.getMessage(), TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" this.sendSystemMessage(\"Error saving to file\\nTerminating Process...\" + TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":" this.exit();","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":" if (duke.ready) {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"teojunda"},"content":" duke.run();","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":73}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.parser.FileParser;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import duke.exceptions.StorageException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" private final String filePath;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" private void createFile(File f) throws StorageException {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" f.getParentFile().mkdirs();","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" boolean created \u003d f.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" if (!created) {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" throw new StorageException(\"Failed to create file: \" + f.getAbsolutePath());","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" throw new StorageException(\"Error creating file: \" + f.getAbsolutePath());","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" public ArrayList\u003cTask\u003e loadFile() throws StorageException, FileNotFoundException {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" File f \u003d new File(this.filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" if (!f.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" this.createFile(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" throw new FileNotFoundException();","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" tasks \u003d FileParser.readFile(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" throw new StorageException(\"Error reading file: \" + f.getAbsolutePath());","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" return tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" public void saveData(TaskList tasks) throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" fw.write(tasks.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" fw.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":53}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" public TaskList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" this.tasks \u003d list;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" public int size() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" return this.tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" public Task remove(int i) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" Task t \u003d this.tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" this.tasks.remove(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" return t;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" public String listTasks() {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" return \"There are no tasks currently :)\";","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" StringBuilder response \u003d new StringBuilder(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); ++i) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" Task t \u003d this.tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" String taskString \u003d \"\\n\" + String.valueOf(i+1) + \". \" + t.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" response.append(taskString);","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" response.append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" response.append(TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" return response.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" public Task markTask(int taskNum) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" Task t \u003d this.tasks.get(taskNum);","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" t.maskAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" return t;","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" public Task unmarkTask(int taskNum) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" Task t \u003d this.tasks.get(taskNum);","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":" t.unmark();","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" return t;","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"teojunda"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"teojunda"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":" for (Task t: this.tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":" s.append(t.save());","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"teojunda"},"content":" s.append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":" return s.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":70}},{"path":"src/main/java/duke/TextTemplate.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"public class TextTemplate {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":" public static final String LINE_BREAK \u003d \"________________________\";","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":" public static final String GREETING \u003d \"Hello! I\u0027m Beepo.\\nWhat can I do for you?\";","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":" public static final String EXIT \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" public static final String ADD_TASK \u003d \"Got it. I\u0027ve added this task:\";","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" public static final String TASK_COUNT \u003d \"Now you have %d tasks in the list.\";","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" public static final String MARK_TASK \u003d \"Nice! I\u0027ve marked this task as done:\";","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" public static final String UNMARK_TASK \u003d \"Nice! I\u0027ve unmarked this task:\";","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" public static final String TODO_NO_DESC \u003d \"OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" public static final String INVALID_COMMAND \u003d \"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" public static final String DELETE_TASK \u003d \"Noted. I\u0027ve removed this task:\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" public static final String TASK_DOES_NOT_EXIST \u003d \"OOPS!!! This task does not exist.\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":14}},{"path":"src/main/java/duke/exceptions/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"public class InvalidInputException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":" public InvalidInputException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":" super(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"teojunda":11}},{"path":"src/main/java/duke/exceptions/StorageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"public class StorageException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":" public StorageException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":" super(\"OOPS!!! There was an error with the Storage.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" public StorageException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" super(message);","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":11}},{"path":"src/main/java/duke/parser/FileParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"import duke.tasks.TodoTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"public class FileParser {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" private static final String separator \u003d \",\";","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" public static ArrayList\u003cTask\u003e readFile(File f) throws FileNotFoundException {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" Scanner scanner \u003d new Scanner(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" String s \u003d scanner.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(separator);","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" case \"T\":","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" Task t \u003d new TodoTask(parts[2], parts[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" case \"D\":","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" Task d \u003d new DeadlineTask(parts[2], parts[1], parts[3]);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" tasks.add(d);","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" case \"E\":","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" Task e \u003d new EventTask(parts[2], parts[1], parts[3], parts[4]);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" tasks.add(e);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" scanner.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" return tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":42}},{"path":"src/main/java/duke/parser/InputParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.Actions;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import duke.TextTemplate;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"import duke.tasks.TodoTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"public class InputParser {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" private boolean isActive;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" public InputParser() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" this.isActive \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" public boolean isActive() {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" return this.isActive;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" public void exit() {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" this.isActive \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" private String listTasks(TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" return tasks.listTasks();","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" private String markTask(String s, TaskList tasks) throws InvalidInputException {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\"\\\\s+\");","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" int taskNum \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" if (taskNum \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" throw new InvalidInputException(TextTemplate.TASK_DOES_NOT_EXIST);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" Task t \u003d tasks.markTask(taskNum);","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" return TextTemplate.MARK_TASK + \"\\n\" + t.toString() + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" private String unmarkTask(String s, TaskList tasks) throws InvalidInputException {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" int taskNum \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" if (taskNum \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" throw new InvalidInputException(TextTemplate.TASK_DOES_NOT_EXIST);","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" Task t \u003d tasks.unmarkTask(taskNum);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" return TextTemplate.UNMARK_TASK + \"\\n\" + t.toString() + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" private String deleteTask(String s, TaskList tasks) throws InvalidInputException {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" int taskNum \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" if (taskNum \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" throw new InvalidInputException(TextTemplate.TASK_DOES_NOT_EXIST);","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":" Task t \u003d tasks.remove(taskNum);","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" return TextTemplate.DELETE_TASK + \"\\n\" + t.toString() + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"teojunda"},"content":" private String addTodo(String s, TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":" TodoTask t \u003d new TodoTask(parts[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":" String taskCounterMsg \u003d String.format(TextTemplate.TASK_COUNT, tasks.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":" return TextTemplate.ADD_TASK + \"\\n\" + t.toString() + \"\\n\" + taskCounterMsg + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"teojunda"},"content":" private String addEvent(String s, TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\" /from \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"teojunda"},"content":" String desc \u003d parts[0].split(\" \", 2)[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"teojunda"},"content":" String[] duration \u003d parts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"teojunda"},"content":" EventTask e \u003d new EventTask(desc, duration[0], duration[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"teojunda"},"content":" tasks.add(e);","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"teojunda"},"content":" String taskCounterMsg \u003d String.format(TextTemplate.TASK_COUNT, tasks.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"teojunda"},"content":" return TextTemplate.ADD_TASK + \"\\n\" + e.toString() + \"\\n\" + taskCounterMsg + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"teojunda"},"content":" private String addDeadline(String s, TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\" /by \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"teojunda"},"content":" String[] firstPart \u003d parts[0].split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"teojunda"},"content":" String desc \u003d firstPart[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"teojunda"},"content":" String end \u003d parts[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"teojunda"},"content":" DeadlineTask d \u003d new DeadlineTask(desc, end);","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"teojunda"},"content":" tasks.add(d);","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"teojunda"},"content":" String taskCounterMsg \u003d String.format(TextTemplate.TASK_COUNT, tasks.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"teojunda"},"content":" return TextTemplate.ADD_TASK + \"\\n\" + d.toString() + \"\\n\" + taskCounterMsg + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"teojunda"},"content":" public Actions getAction(String input) throws InvalidInputException {","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"teojunda"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"teojunda"},"content":" return Actions.BYE;","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"teojunda"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"teojunda"},"content":" return Actions.LIST;","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"teojunda"},"content":" if (input.equals(\"todo\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"teojunda"},"content":" throw new InvalidInputException(TextTemplate.TODO_NO_DESC);","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches(\"todo .+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"teojunda"},"content":" return Actions.TODO;","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches(\"deadline .+ /by .+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"teojunda"},"content":" return Actions.DEADLINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches( \"event .+ /from .+ /to .+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"teojunda"},"content":" return Actions.EVENT;","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches(\"mark \\\\d+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"teojunda"},"content":" return Actions.MARK;","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches(\"unmark \\\\d+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"teojunda"},"content":" return Actions.UNMARK;","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches(\"delete \\\\d+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"teojunda"},"content":" return Actions.DELETE;","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"teojunda"},"content":" return Actions.INVALID;","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"teojunda"},"content":" public String processCommand(String input, TaskList tasks) throws InvalidInputException {","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"teojunda"},"content":" Actions act \u003d this.getAction(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"teojunda"},"content":" switch (act) {","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"teojunda"},"content":" case BYE:","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"teojunda"},"content":" this.exit();","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"teojunda"},"content":" return TextTemplate.EXIT + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"teojunda"},"content":" case LIST:","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"teojunda"},"content":" return this.listTasks(tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"teojunda"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"teojunda"},"content":" return this.markTask(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"teojunda"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"teojunda"},"content":" return this.unmarkTask(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"teojunda"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"teojunda"},"content":" return this.deleteTask(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"teojunda"},"content":" case TODO:","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"teojunda"},"content":" return this.addTodo(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"teojunda"},"content":" case EVENT:","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"teojunda"},"content":" return this.addEvent(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"teojunda"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"teojunda"},"content":" return this.addDeadline(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"teojunda"},"content":" case INVALID:","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"teojunda"},"content":" throw new InvalidInputException();","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"teojunda"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":152,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":153}},{"path":"src/main/java/duke/tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":" private String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":" public DeadlineTask(String desc, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" super(desc);;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" public DeadlineTask(String desc, String isDone, String end) {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" super(desc, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" return (this.isDone() ? \"[D][X] \" : \"[D][ ] \");","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" return this.getStatusIcon() + this.getDesc() + \" (by: \" + this.end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" public String save() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" String isDone \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" return \"D,\" + isDone + \",\" + this.getDesc() + \",\" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":26}},{"path":"src/main/java/duke/tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"public class EventTask extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":" private String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":" private String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":" public EventTask(String desc, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" super(desc);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" public EventTask(String desc, String isDone, String start, String end) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" super(desc, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" return (this.isDone() ? \"[E][X] \" : \"[E][ ] \");","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" return this.getStatusIcon() + this.getDesc() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" public String save() {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" String isDone \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" return \"E,\" + isDone + \",\" + this.getDesc() + \",\" + this.start + \",\" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":27}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":" private String desc;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" public Task(String desc) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" this.desc \u003d desc;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" public Task(String desc, String isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" this.desc \u003d desc;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" if (isDone.equals(\"1\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" return isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" public String getDesc() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" return this.desc;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" public abstract String getStatusIcon();","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" public void maskAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" public void unmark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" public abstract String toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" public abstract String save();","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":38}},{"path":"src/main/java/duke/tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"public class TodoTask extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":" public TodoTask(String desc) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":" super(desc);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" public TodoTask(String desc, String isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" super(desc, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" return (this.isDone() ? \"[T][X] \" : \"[T][ ] \");","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" return this.getStatusIcon() + this.getDesc();","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" public String save() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" String isDone \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" return \"T,\" + isDone + \",\" + this.getDesc();","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"todo task 1","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"deadline task 2 /by Mon 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"event event 1 /from 1300 /to 2100","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"list","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":7}}] +[{"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":"teojunda"},"content":" mainClassName \u003d \"duke.Duke\"","lastModifiedDate":"2024-01-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":{"teojunda":1,"-":41}},{"path":"data/data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"T,0,abc","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"T,0,aff","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"D,0,activity 1,2024-12-01T00:00","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"teojunda":3}},{"path":"src/main/java/duke/Actions.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"public enum Actions {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":" BYE, LIST, MARK, UNMARK, DELETE, TODO, DEADLINE, EVENT, INVALID","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":4}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import duke.exceptions.StorageException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import duke.parser.InputParser;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"public class Duke {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" private InputParser inputParser;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" private Storage storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" private boolean ready;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" public Duke() {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" String filePath \u003d \"data/data.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" this.inputParser \u003d new InputParser();","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" this.ready \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" this.taskList \u003d new TaskList(storage.loadFile());","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" this.ui.sendSystemMessage(\"There is no saved data in the system\\n\" + TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" } catch (StorageException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" this.ui.sendSystemMessage(\"Saved data is corrupted. Please delete/resolve file at: \" + filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" this.ready \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" private void exit() {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" this.ui.exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" public void run() {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" while (this.ui.isActive()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" String input \u003d this.ui.readNextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" this.ui.sendSystemMessage(TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" String response \u003d inputParser.processCommand(input, this.taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" this.ui.sendSystemMessage(response);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" this.storage.saveData(this.taskList);","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" if (!this.inputParser.isActive()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" this.ui.exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" } catch (InvalidInputException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" this.ui.sendSystemMessage(e.getMessage(), TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" this.ui.sendSystemMessage(\"Error saving to file\\nTerminating Process...\" + TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" this.ui.exit();","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":" if (duke.ready) {","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"teojunda"},"content":" duke.run();","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":65}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.parser.FileParser;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import duke.exceptions.StorageException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" private final String filePath;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" private void createFile(File f) throws StorageException {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" f.getParentFile().mkdirs();","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" boolean created \u003d f.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" if (!created) {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" throw new StorageException(\"Failed to create file: \" + f.getAbsolutePath());","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" throw new StorageException(\"Error creating file: \" + f.getAbsolutePath());","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" public ArrayList\u003cTask\u003e loadFile() throws StorageException, FileNotFoundException {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" File f \u003d new File(this.filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" if (!f.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" this.createFile(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" throw new FileNotFoundException();","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" tasks \u003d FileParser.readFile(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" throw new StorageException(\"Error reading file: \" + f.getAbsolutePath());","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" return tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" public void saveData(TaskList tasks) throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" FileWriter fw \u003d new FileWriter(this.filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" fw.write(tasks.toString());","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" fw.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":53}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" public TaskList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" this.tasks \u003d list;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" public int size() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" return this.tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" public Task remove(int i) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" Task t \u003d this.tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" this.tasks.remove(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" return t;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" public String listTasks() {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" return \"There are no tasks currently :)\";","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" StringBuilder response \u003d new StringBuilder(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); ++i) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" Task t \u003d this.tasks.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" String taskString \u003d \"\\n\" + String.valueOf(i+1) + \". \" + t.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" response.append(taskString);","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" response.append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" response.append(TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" return response.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" public Task markTask(int taskNum) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" Task t \u003d this.tasks.get(taskNum);","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" t.maskAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" return t;","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" public Task unmarkTask(int taskNum) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" Task t \u003d this.tasks.get(taskNum);","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":" t.unmark();","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" return t;","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"teojunda"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"teojunda"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":" for (Task t: this.tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":" s.append(t.save());","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"teojunda"},"content":" s.append(\"\\n\");","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":" return s.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":70}},{"path":"src/main/java/duke/TextTemplate.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"public class TextTemplate {","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":" public static final String LINE_BREAK \u003d \"________________________\";","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":" public static final String GREETING \u003d \"Hello! I\u0027m Beepo.\\nWhat can I do for you?\";","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":" public static final String EXIT \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" public static final String ADD_TASK \u003d \"Got it. I\u0027ve added this task:\";","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" public static final String TASK_COUNT \u003d \"Now you have %d tasks in the list.\";","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" public static final String MARK_TASK \u003d \"Nice! I\u0027ve marked this task as done:\";","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" public static final String UNMARK_TASK \u003d \"Nice! I\u0027ve unmarked this task:\";","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" public static final String TODO_NO_DESC \u003d \"OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" public static final String DELETE_TASK \u003d \"Noted. I\u0027ve removed this task:\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" public static final String TASK_DOES_NOT_EXIST \u003d \"OOPS!!! This task does not exist.\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" public static final String INVALID_COMMAND \u003d \"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" public static final String INVALID_DATETIME \u003d \"OOPS!!! The date format is invalid. Either enter yyyy-mm-dd or yyyy-mm-dd HHmm :-(\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":15}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" private boolean isActive;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" this.isActive \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" this.greet();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" public void sendSystemMessage(String... strs) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" for (String s: strs) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" System.out.println(s);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" private void greet() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" this.sendSystemMessage(TextTemplate.LINE_BREAK, TextTemplate.GREETING, TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" public boolean isActive() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" return this.isActive;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" public void exit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" this.isActive \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" public String readNextLine() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" return this.scanner.nextLine().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"teojunda":38}},{"path":"src/main/java/duke/exceptions/InvalidDateFormException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.TextTemplate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"public class InvalidDateFormException extends Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" public InvalidDateFormException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" super(TextTemplate.INVALID_DATETIME);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" public InvalidDateFormException(String message) {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" super(message);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"teojunda":13}},{"path":"src/main/java/duke/exceptions/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.TextTemplate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"public class InvalidInputException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" public InvalidInputException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" super(TextTemplate.INVALID_COMMAND);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"teojunda":13}},{"path":"src/main/java/duke/exceptions/StorageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"public class StorageException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":" public StorageException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":" super(\"OOPS!!! There was an error with the Storage.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" public StorageException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" super(message);","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":11}},{"path":"src/main/java/duke/parser/FileParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"import duke.tasks.TodoTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":"public class FileParser {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" private static final String separator \u003d \",\";","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" private static LocalDateTime parseDateTime(String s) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\u0027T\u0027HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" return dateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" public static ArrayList\u003cTask\u003e readFile(File f) throws FileNotFoundException {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" Scanner scanner \u003d new Scanner(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" String s \u003d scanner.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(separator);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" case \"T\":","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" Task t \u003d new TodoTask(parts[2], parts[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" case \"D\":","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" Task d \u003d new DeadlineTask(parts[2], parts[1], parseDateTime(parts[3]));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" tasks.add(d);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" case \"E\":","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" Task e \u003d new EventTask(parts[2], parts[1], parseDateTime(parts[3]), parseDateTime(parts[4]));","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" tasks.add(e);","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" scanner.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" return tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":49}},{"path":"src/main/java/duke/parser/InputParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.parser;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.Actions;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import duke.TextTemplate;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"import duke.exceptions.InvalidDateFormException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"import duke.tasks.TodoTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":"public class InputParser {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" private boolean isActive;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" public InputParser() {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" this.isActive \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" public boolean isActive() {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" return this.isActive;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" private void exit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" this.isActive \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" private String listTasks(TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" return tasks.listTasks();","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" private String markTask(String s, TaskList tasks) throws InvalidInputException {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\"\\\\s+\");","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" int taskNum \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" if (taskNum \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" throw new InvalidInputException(TextTemplate.TASK_DOES_NOT_EXIST);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" Task t \u003d tasks.markTask(taskNum);","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" return TextTemplate.MARK_TASK + \"\\n\" + t.toString() + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" private String unmarkTask(String s, TaskList tasks) throws InvalidInputException {","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" int taskNum \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" if (taskNum \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" throw new InvalidInputException(TextTemplate.TASK_DOES_NOT_EXIST);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" Task t \u003d tasks.unmarkTask(taskNum);","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" return TextTemplate.UNMARK_TASK + \"\\n\" + t.toString() + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" private String deleteTask(String s, TaskList tasks) throws InvalidInputException {","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" int taskNum \u003d Integer.parseInt(parts[1]) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":" if (taskNum \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" throw new InvalidInputException(TextTemplate.TASK_DOES_NOT_EXIST);","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":" Task t \u003d tasks.remove(taskNum);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"teojunda"},"content":" return TextTemplate.DELETE_TASK + \"\\n\" + t.toString() + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":" private String addTodo(String s, TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":" TodoTask t \u003d new TodoTask(parts[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"teojunda"},"content":" String taskCounterMsg \u003d String.format(TextTemplate.TASK_COUNT, tasks.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"teojunda"},"content":" return TextTemplate.ADD_TASK + \"\\n\" + t.toString() + \"\\n\" + taskCounterMsg + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"teojunda"},"content":" private String addEvent(String s, TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\" /from \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"teojunda"},"content":" String desc \u003d parts[0].split(\" \", 2)[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"teojunda"},"content":" String[] duration \u003d parts[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"teojunda"},"content":" LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"teojunda"},"content":" LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"teojunda"},"content":" start \u003d parseDateTime(duration[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"teojunda"},"content":" end \u003d parseDateTime(duration[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"teojunda"},"content":" } catch (InvalidDateFormException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"teojunda"},"content":" return e.getMessage() + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"teojunda"},"content":" EventTask e \u003d new EventTask(desc, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"teojunda"},"content":" tasks.add(e);","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"teojunda"},"content":" String taskCounterMsg \u003d String.format(TextTemplate.TASK_COUNT, tasks.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"teojunda"},"content":" return TextTemplate.ADD_TASK + \"\\n\" + e.toString() + \"\\n\" + taskCounterMsg + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"teojunda"},"content":" private String addDeadline(String s, TaskList tasks) {","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"teojunda"},"content":" String[] parts \u003d s.split(\" /by \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"teojunda"},"content":" String[] firstPart \u003d parts[0].split(\" \", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"teojunda"},"content":" String desc \u003d firstPart[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"teojunda"},"content":" String end \u003d parts[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"teojunda"},"content":" LocalDateTime deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"teojunda"},"content":" deadline \u003d parseDateTime(end);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"teojunda"},"content":" } catch (InvalidDateFormException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"teojunda"},"content":" return e.getMessage() + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"teojunda"},"content":" DeadlineTask d \u003d new DeadlineTask(desc, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"teojunda"},"content":" tasks.add(d);","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"teojunda"},"content":" String taskCounterMsg \u003d String.format(TextTemplate.TASK_COUNT, tasks.size());","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"teojunda"},"content":" return TextTemplate.ADD_TASK + \"\\n\" + d.toString() + \"\\n\" + taskCounterMsg + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"teojunda"},"content":" private static LocalDateTime parseDateTime(String s) throws InvalidDateFormException {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"teojunda"},"content":" // Parse the end string into LocalDateTime","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"teojunda"},"content":" LocalDateTime dateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"teojunda"},"content":" if (s.length() \u003d\u003d 10) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"teojunda"},"content":" // If the end string is in the format yyyy-mm-dd","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"teojunda"},"content":" dateTime \u003d LocalDateTime.parse(s + \"T00:00:00\");","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"teojunda"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"teojunda"},"content":" // If the end string is in the format yyyy-mm-dd HHmm","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"teojunda"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"teojunda"},"content":" dateTime \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"teojunda"},"content":" return dateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"teojunda"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"teojunda"},"content":" throw new InvalidDateFormException();","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"teojunda"},"content":" public Actions getAction(String input) throws InvalidInputException {","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"teojunda"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"teojunda"},"content":" return Actions.BYE;","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"teojunda"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"teojunda"},"content":" return Actions.LIST;","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":139,"author":{"gitId":"teojunda"},"content":" if (input.equals(\"todo\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"teojunda"},"content":" throw new InvalidInputException(TextTemplate.TODO_NO_DESC);","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches(\"todo .+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"teojunda"},"content":" return Actions.TODO;","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches(\"deadline .+ /by .+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"teojunda"},"content":" return Actions.DEADLINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches( \"event .+ /from .+ /to .+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":149,"author":{"gitId":"teojunda"},"content":" return Actions.EVENT;","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches(\"mark \\\\d+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":152,"author":{"gitId":"teojunda"},"content":" return Actions.MARK;","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches(\"unmark \\\\d+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"teojunda"},"content":" return Actions.UNMARK;","lastModifiedDate":"2024-01-27"},{"lineNumber":156,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":157,"author":{"gitId":"teojunda"},"content":" if (Pattern.matches(\"delete \\\\d+\", input)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":158,"author":{"gitId":"teojunda"},"content":" return Actions.DELETE;","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":160,"author":{"gitId":"teojunda"},"content":" return Actions.INVALID;","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":162,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"teojunda"},"content":" public String processCommand(String input, TaskList tasks) throws InvalidInputException {","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"teojunda"},"content":" Actions act \u003d this.getAction(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":165,"author":{"gitId":"teojunda"},"content":" switch (act) {","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"teojunda"},"content":" case BYE:","lastModifiedDate":"2024-01-27"},{"lineNumber":167,"author":{"gitId":"teojunda"},"content":" this.exit();","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"teojunda"},"content":" return TextTemplate.EXIT + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-27"},{"lineNumber":169,"author":{"gitId":"teojunda"},"content":" case LIST:","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"teojunda"},"content":" return this.listTasks(tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":171,"author":{"gitId":"teojunda"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":172,"author":{"gitId":"teojunda"},"content":" return this.markTask(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":173,"author":{"gitId":"teojunda"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":174,"author":{"gitId":"teojunda"},"content":" return this.unmarkTask(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"teojunda"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"teojunda"},"content":" return this.deleteTask(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"teojunda"},"content":" case TODO:","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"teojunda"},"content":" return this.addTodo(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":179,"author":{"gitId":"teojunda"},"content":" case EVENT:","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"teojunda"},"content":" return this.addEvent(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"teojunda"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"teojunda"},"content":" return this.addDeadline(input, tasks);","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"teojunda"},"content":" case INVALID:","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"teojunda"},"content":" throw new InvalidInputException();","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"teojunda"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":187,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":188,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"teojunda":188}},{"path":"src/main/java/duke/tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" public DeadlineTask(String desc, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" super(desc);;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" public DeadlineTask(String desc, String isDone, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" super(desc, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" return (this.isDone() ? \"[D][X] \" : \"[D][ ] \");","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" return this.getStatusIcon() + this.getDesc() + \" (by: \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" Task.toStringDateTime(this.end) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" public String save() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" String isDone \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" return \"D,\" + isDone + \",\" + this.getDesc() + \",\" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":29}},{"path":"src/main/java/duke/tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"public class EventTask extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" public EventTask(String desc, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" super(desc);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" public EventTask(String desc, String isDone, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" super(desc, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" return (this.isDone() ? \"[E][X] \" : \"[E][ ] \");","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" return this.getStatusIcon() + this.getDesc() + \" (from: \" + Task.toStringDateTime(this.start) +","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" \" to: \" + Task.toStringDateTime(this.end) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" public String save() {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" String isDone \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" return \"E,\" + isDone + \",\" + this.getDesc() + \",\" + this.start + \",\" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":31}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" private String desc;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" public Task(String desc) {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" this.desc \u003d desc;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" public Task(String desc, String isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" this.desc \u003d desc;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" if (isDone.equals(\"1\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" public static String toStringDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" return dateTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" return isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" public String getDesc() {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" return this.desc;","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" public abstract String getStatusIcon();","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" public void maskAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" public void unmark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" public abstract String toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" public abstract String save();","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":46}},{"path":"src/main/java/duke/tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"public class TodoTask extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":" public TodoTask(String desc) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":" super(desc);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":" public TodoTask(String desc, String isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":" super(desc, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" return (this.isDone() ? \"[T][X] \" : \"[T][ ] \");","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" return this.getStatusIcon() + this.getDesc();","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" public String save() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" String isDone \u003d this.isDone() ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" return \"T,\" + isDone + \",\" + this.getDesc();","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":22}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import duke.tasks.TodoTask;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" public void testAddTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" Task task \u003d new TodoTask(\"Sample Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" assertEquals(task, taskList.get(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" public void testRemoveTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" Task task \u003d new TodoTask(\"Sample Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" Task removedTask \u003d taskList.remove(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" assertEquals(0, taskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" assertEquals(task, removedTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" public void testListTasksEmpty() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" String result \u003d taskList.listTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" assertEquals(\"There are no tasks currently :)\", result);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" public void testListTasksNotEmpty() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" Task t1 \u003d new TodoTask(\"Task 1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" Task t2 \u003d new TodoTask(\"Task 2\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" taskList.add(t1);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" taskList.add(t2);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" String result \u003d taskList.listTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" assertEquals(\"Here are the tasks in your list:\\n1. \" + t1.toString() +","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" \"\\n2. \" + t2.toString() + \"\\n\" + TextTemplate.LINE_BREAK, result);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" public void testMarkTask() {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" Task task \u003d new TodoTask(\"Sample Task\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" Task markedTask \u003d taskList.markTask(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" assertTrue(markedTask.isDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"teojunda":57}},{"path":"src/test/java/duke/parser/InputParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"package duke.parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"import duke.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"import duke.TextTemplate;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"public class InputParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" public void processCommandBye() throws InvalidInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" InputParser ip \u003d new InputParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" assertEquals(ip.processCommand(\"bye\", tasks), TextTemplate.EXIT + \"\\n\" + TextTemplate.LINE_BREAK);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" assertFalse(ip.isActive());","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" public void processCommandDeadline() throws InvalidInputException {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" InputParser ip \u003d new InputParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" String actualResponse \u003d ip.processCommand(\"deadline activity 1 /by 2024-12-01\", tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" String taskCounterMsg \u003d String.format(TextTemplate.TASK_COUNT, tasks.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" String expectedResponse \u003d TextTemplate.ADD_TASK + \"\\n\" + \"[D][ ] activity 1 (by: Dec 01 2024 00:00)\" + \"\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" taskCounterMsg + \"\\n\" + TextTemplate.LINE_BREAK;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" assertEquals(expectedResponse, actualResponse);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" public void processCommandEmptyTodoDesc() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" InputParser ip \u003d new InputParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" ip.processCommand(\"todo\", tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" fail(\"Expected InvalidInputException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" } catch (InvalidInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" assertEquals(TextTemplate.TODO_NO_DESC, e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" public void processCommandInvalidCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" InputParser ip \u003d new InputParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" ip.processCommand(\"zzz\", tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" fail(\"Expected InvalidInputException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" } catch (InvalidInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" assertEquals(TextTemplate.INVALID_COMMAND, e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" public void processCommandInvalidDateTime() {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" InputParser ip \u003d new InputParser();","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" ip.processCommand(\"deadline activity 1 /by 1600\", tasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" fail(\"Expected InvalidInputException\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":" } catch (InvalidInputException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"teojunda"},"content":" assertEquals(TextTemplate.INVALID_DATETIME, e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"teojunda"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"teojunda":66}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"todo task 1","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"deadline task 2 /by Mon 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"event event 1 /from 1300 /to 2100","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"list","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"teojunda":7}}] diff --git a/teojunda_ip_master/commits.json b/teojunda_ip_master/commits.json index ccd1bf43..4d26fa90 100644 --- a/teojunda_ip_master/commits.json +++ b/teojunda_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"teojunda":[{"date":"2024-01-21","commitResults":[{"hash":"017bf36aca03ea601a8d600cd17578627deba792","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}}]},{"date":"2024-01-22","commitResults":[{"hash":"fe058cc25f41c5a742aceadee7547a8356fd089c","isMergeCommit":false,"messageTitle":"Created new TextTemplate class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":9}}},{"hash":"8ee6bf1fc054afa2b1066e9fd86868963aebb9e4","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"54853967057ff87bf1f8a4fb695ae15261d504f7","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":2}}},{"hash":"6b6e80cab99cd809592e4054e41996994f035167","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":3}}},{"hash":"a6f4f8a2f787b6964e8131af9631fd0543fdd3b2","isMergeCommit":false,"messageTitle":"Created different types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":199,"deletions":33}}},{"hash":"9c649d13125f7e7e7f026dcef205182c5e278fd1","isMergeCommit":false,"messageTitle":"added automated test case","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}}]},{"date":"2024-01-23","commitResults":[{"hash":"abd9187cb053d1e17e4320580c3457095a6d8751","isMergeCommit":false,"messageTitle":"Implemented error checking","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":31}}},{"hash":"91c32dcaff13a2d688b19c8e0430e5165aa51a1c","isMergeCommit":false,"messageTitle":"implemented delete functionality","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":23}}}]},{"date":"2024-01-27","commitResults":[{"hash":"0753c8b6bc1b5d943ae2cff393f9e7410389cc11","isMergeCommit":false,"messageTitle":"Add save feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":445,"deletions":219}}},{"hash":"9210a0da6f39e58f95474b784e9b1986a93a03ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Add feature to save data between sessions","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"teojunda":{"java":544,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"teojunda":49215.953},"authorDisplayNameMap":{"teojunda":"CS2103T-F14-3 TEO ..AXEL"}} +{"authorDailyContributionsMap":{"teojunda":[{"date":"2024-01-21","commitResults":[{"hash":"017bf36aca03ea601a8d600cd17578627deba792","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}}]},{"date":"2024-01-22","commitResults":[{"hash":"fe058cc25f41c5a742aceadee7547a8356fd089c","isMergeCommit":false,"messageTitle":"Created new TextTemplate class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":9}}},{"hash":"8ee6bf1fc054afa2b1066e9fd86868963aebb9e4","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"54853967057ff87bf1f8a4fb695ae15261d504f7","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":2}}},{"hash":"6b6e80cab99cd809592e4054e41996994f035167","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":3}}},{"hash":"a6f4f8a2f787b6964e8131af9631fd0543fdd3b2","isMergeCommit":false,"messageTitle":"Created different types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":199,"deletions":33}}},{"hash":"9c649d13125f7e7e7f026dcef205182c5e278fd1","isMergeCommit":false,"messageTitle":"added automated test case","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}}]},{"date":"2024-01-23","commitResults":[{"hash":"abd9187cb053d1e17e4320580c3457095a6d8751","isMergeCommit":false,"messageTitle":"Implemented error checking","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":31}}},{"hash":"91c32dcaff13a2d688b19c8e0430e5165aa51a1c","isMergeCommit":false,"messageTitle":"implemented delete functionality","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":23}}}]},{"date":"2024-01-27","commitResults":[{"hash":"0753c8b6bc1b5d943ae2cff393f9e7410389cc11","isMergeCommit":false,"messageTitle":"Add save feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":445,"deletions":219}}},{"hash":"9210a0da6f39e58f95474b784e9b1986a93a03ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 Add feature to save data between sessions","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"85ba7291371ecde2eb4ed95c235d2e7fad232b27","isMergeCommit":false,"messageTitle":"Add dateTime feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":84,"deletions":13}}},{"hash":"d5daaa77cbbf956171b01056a10d0d129575a80e","isMergeCommit":false,"messageTitle":"Complete dateTime feature","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d209652ba4d9cba3ff4228873a34a14259a5721a","isMergeCommit":false,"messageTitle":"Create Ui class","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":54,"deletions":24}}},{"hash":"5d136b109fe63dab2ae3b966a1e553ac1e53cfe4","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 Merge gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"7afb4a7b5b2f48f73450418aef5d813d54334e89","isMergeCommit":false,"messageTitle":"Add test case for InputParser, TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":132,"deletions":7}}},{"hash":"ee241bbfb26a5c2042288c33a15b76a11d4b523c","isMergeCommit":false,"messageTitle":"Update build gradle main class","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"teojunda":{"java":770,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":10}},"authorContributionVariance":{"teojunda":43071.97},"authorDisplayNameMap":{"teojunda":"CS2103T-F14-3 TEO ..AXEL"}} diff --git a/tituschewxj_ip_master/authorship.json b/tituschewxj_ip_master/authorship.json index c76655d9..52fa1304 100644 --- a/tituschewxj_ip_master/authorship.json +++ b/tituschewxj_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ChatBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"import action.Action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"import action.ByeAction;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import print.Printer;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import storage.LocalStorage;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * ChatBot encapsulates the behaviour of a Chatbot,","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * which is the handling of the message content and executing commands.","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public class ChatBot {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Stores the name of this chatbot.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" private final String chatBotName;","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" * Stores the user\u0027s tasks","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" private final TaskList userList;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * Class constructor.","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * @param chatBotName the name of this chatbot.","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" public ChatBot(String chatBotName) {","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" this.chatBotName \u003d chatBotName;","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" userList \u003d LocalStorage.loadTaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" * Greets the user when entering a session with this chatbot.","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" private void greet() {","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" \"Hello! I\u0027m \" + chatBotName + \"!\",","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" \"What can I do for you?\"","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" * Reads and parses user input for commands.","lastModifiedDate":"2024-01-21"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" public void run() {","lastModifiedDate":"2024-01-21"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" greet();","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" Action userAction \u003d null;","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" do {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" userAction \u003d InputParser.getParsedInput();","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" userAction.execute(userList);","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" } catch (ActionException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" } while (!(userAction instanceof ByeAction));","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":61}},{"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":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":" ChatBot chatBot \u003d new ChatBot(\"Stratify\");","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":" chatBot.run();","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"tituschewxj":2,"-":4}},{"path":"src/main/java/InputParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"import action.Action;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import java.util.List;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * Parses the input of a ChatBot into argument list.","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"public class InputParser {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Stores the scanner instance used to get the console input stream.","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" private static final Scanner SCANNER \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" * Parse the input string into it\u0027s command and arguments.","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" * @return an action containing the command and it\u0027s arguments","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If invalid input is provided that results in an invalid command or arguments.","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" public static Action getParsedInput() throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" String input \u003d SCANNER.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" // command is always the first word in the input","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" String command \u003d input.trim().split(\" \")[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" return Action.of(command, parseArguments(input));","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" * Parse the argument(s) from an input string.","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003e\"/\" is a special character, when at the start of a word, it denotes the start of an argument.","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003e\"/\" not at the start of a word, will not be recognized as a special character.","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" * @param input the console input","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" * @return the parsed argument list","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" private static Argument[] parseArguments(String input) {","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" // split input by words (space-separated)","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" String[] tokens \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" List\u003cArgument\u003e arguments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" // scan through each word, check if it is an argument","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" // first word is always argument name","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" String argName \u003d tokens[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" StringBuilder argValue \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" for (int i \u003d 1; i \u003c tokens.length; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" if (tokens[i].startsWith(\"/\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" arguments.add(parseArgument(argName, argValue.toString()));","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" // start parsing next argument","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" argName \u003d tokens[i].substring(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" argValue.delete(0, argValue.length());","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" argValue","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" .append(tokens[i])","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" .append(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" arguments.add(parseArgument(argName, argValue.toString()));","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" Argument[] argumentsArray \u003d new Argument[arguments.size()];","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" arguments.toArray(argumentsArray);","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" return argumentsArray;","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" * An argument consists of the argument name and value.","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" * @param argumentName the string representing the argument name","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" * @param argumentValue the string representing the argument value","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" * @return the argument that is formed","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" private static Argument parseArgument(String argumentName, String argumentValue) {","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" argumentValue \u003d argumentValue.trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" argumentValue \u003d argumentValue.equals(\"\") ? null : argumentValue;","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" return new Argument(argumentName, argumentValue);","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tituschewxj":87}},{"path":"src/main/java/action/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.exception.UnrecognizedCommandException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * An Action encapsulates the behaviour of a {@link Command} and it\u0027s {@link Argument}(s).","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eAn action may be invalid.","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eAn action can be executed, with validation checks.","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":"public abstract class Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" private final Argument[] suppliedArguments;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this action, which validates that it\u0027s arguments are valid.","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" * @param command the command associated with this action","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" * @param suppliedArguments the arguments supplied with the command","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" public Action(Command command, Argument... suppliedArguments) throws ActionException {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" this.suppliedArguments \u003d suppliedArguments;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" command.validateSuppliedArguments(suppliedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" * Factory method to create an action instance.","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" * @param command the command as a string","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" * @param parsedArguments the arguments, parsed from the input","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * @return the action instance","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the command or arguments are not one of the expected values.","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" public static Action of(String command, Argument[] parsedArguments) throws ActionException {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" if (command.equals(Command.BYE.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" return new ByeAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.LIST.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" return new ListAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.MARK.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" return new MarkAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.UNMARK.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" return new UnmarkAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.ADD_TODO.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" return new AddTodoAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.ADD_DEADLINE.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" return new AddDeadlineAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.ADD_EVENT.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" return new AddEventAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.DELETE.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" return new DeleteAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" throw new UnrecognizedCommandException(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" * Gets the command of this action.","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" * @return the command associated with this action","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" final Command getCommand() {","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" return command;","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" * Finds the value of this action\u0027s argument by the argument name.","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" * @param name the non-null name of the argument to find","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" * @return the value of the argument with that name, or null if not found","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" final String findArgument(String name) {","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" for (Argument arg : suppliedArguments) {","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" if (arg.hasSameArgumentName(name)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" return arg.getValue();","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" // null represents that the argument of that name does not exist,","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" // which should not happen, since the argument has been validated.","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" return null;","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"tituschewxj"},"content":" * Finds the default argument of this action.","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"tituschewxj"},"content":" * @return the value of the default argument","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"tituschewxj"},"content":" final String findDefaultArgument() {","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"tituschewxj"},"content":" return findArgument(command.getName());","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"tituschewxj"},"content":" * Executes this action, which may modify the state of stored tasks,","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"tituschewxj"},"content":" * and may print to the console.","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails certain validation checks due to invalid input.","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"tituschewxj"},"content":" public abstract void execute(TaskList taskList) throws ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":107}},{"path":"src/main/java/action/AddDeadlineAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import print.Printer;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * AddDeadlineCommand encapsulates the behaviour of adding a deadline.","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"public class AddDeadlineAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this add deadline action.","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" public AddDeadlineAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" super(Command.ADD_DEADLINE, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * Add a deadline task to the user\u0027s list.","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList to modify","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" String name \u003d findDefaultArgument(),","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" by \u003d findArgument(\"by\");","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.addDeadline(name, by);","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" \"Got it. I\u0027ve added this deadline:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" \" \" + task,","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" \"Now you have \" + taskList.size() + \" task(s) in the list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":44}},{"path":"src/main/java/action/AddEventAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import print.Printer;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * AddEventCommand encapsulates the behaviour of adding an event.","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"public class AddEventAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this add event action.","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" public AddEventAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" super(Command.ADD_EVENT, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * Add an event to the task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList to modify","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" String name \u003d findDefaultArgument(),","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" from \u003d findArgument(\"from\"),","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" to \u003d findArgument(\"to\");","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.addEvent(name, from, to);","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" \"Got it. I\u0027ve added this event:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" \" \" + task,","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" \"Now you have \" + taskList.size() + \" task(s) in the list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":45}},{"path":"src/main/java/action/AddTodoAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import print.Printer;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * AddTodoCommand encapsulates the behaviour of adding a to-do.","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"public class AddTodoAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this add to-do action.","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" public AddTodoAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" super(Command.ADD_TODO, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * Add a to-do to the user\u0027s list.","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList to modify","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" String name \u003d findDefaultArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.addTodo(name);","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" \"Got it. I\u0027ve added this to-do:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" \" \" + task,","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" \"Now you have \" + taskList.size() + \" task(s) in the list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":43}},{"path":"src/main/java/action/ByeAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import print.Printer;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * ByeAction encapsulates the behaviour when ending the chat.","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public class ByeAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this bye action.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public ByeAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" super(Command.BYE, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * Greets the user when exiting the application.","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(\"Bye! Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":35}},{"path":"src/main/java/action/DeleteAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.exception.InvalidArgumentValueException;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import print.Printer;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * DeleteAction encapsulates behaviour of deleting a task from the task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public class DeleteAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this delete action.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public DeleteAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" super(Command.DELETE, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * Deletes the task from the task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @throws InvalidArgumentValueException If the action fails certain validation checks due to invalid input.","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) throws InvalidArgumentValueException {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" String indexString \u003d findDefaultArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" // Validate indexString as an integer","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" int index;","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is not an integer.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range as there are no tasks in your list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" // Validate that indexString is in the range","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" if (!taskList.isValidIndex(index)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range. \u003cindex\u003e must be between 1 and \" + taskList.size() + \".\"","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.deleteTask(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" \"Noted. I\u0027ve removed this task:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" \" \" + task","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":71}},{"path":"src/main/java/action/ListAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * ListAction encapsulates the behaviour when listing the tasks.","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"public class ListAction extends Action{","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this list action.","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" public ListAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" super(Command.LIST, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" * Prints the user\u0027s list.","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" print.Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" \"Your list is empty.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" print.Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" \"Here are the tasks in your list:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" taskList.toString()","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":42}},{"path":"src/main/java/action/MarkAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.exception.InvalidArgumentValueException;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import print.Printer;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * MarkAction encapsulates the behaviour of marking a task as done.","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"public class MarkAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this mark action.","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" public MarkAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" super(Command.MARK, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * Marks and prints the task.","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" * @throws InvalidArgumentValueException If the action fails certain validation checks due to invalid input.","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) throws InvalidArgumentValueException {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" String indexString \u003d findDefaultArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" // Validate indexString as an integer","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" int index;","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is not an integer.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range as there are no tasks in your list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" // Validate that indexString is in the range","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" if (!taskList.isValidIndex(index)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range. \u003cindex\u003e must be between 1 and \" + taskList.size() + \".\"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.markTask(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" \"Nice! I\u0027ve marked this task as done:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" \" \" + task","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":73}},{"path":"src/main/java/action/UnmarkAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.exception.InvalidArgumentValueException;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import print.Printer;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * UnmarkAction encapsulates the behaviour of marking a task as not done.","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"public class UnmarkAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this unmark action.","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" public UnmarkAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" super(Command.UNMARK, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * Unmarks and prints the task.","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" * @throws InvalidArgumentValueException If the action fails certain validation checks due to invalid input.","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) throws InvalidArgumentValueException {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" String indexString \u003d findDefaultArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" // Validate indexString as an integer","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" int index;","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is not an integer.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range as there are no tasks in your list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" // Validate that indexString is in the range","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" if (!taskList.isValidIndex(index)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range. \u003cindex\u003e must be between 1 and \" + taskList.size() + \".\"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.unmarkTask(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" \"Ok, I\u0027ve marked this task as not done yet:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" \" \" + task","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":73}},{"path":"src/main/java/action/exception/ActionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action.exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":" * ActionException represents exceptions specific to {@link action.Action},","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":" * which are thrown when invalid input results in an action being invalid,","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":" * and is unable to recover a valid state.","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"public abstract class ActionException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":12}},{"path":"src/main/java/action/exception/InvalidArgumentValueException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action.exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":" * InvalidArgumentValueException represents exceptions due to an invalid argument value in an argument.","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"public class InvalidArgumentValueException extends ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" private final String invalidArg, reason;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException with an invalid argument value.","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * @param command the command","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param invalidArg the invalid argument","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" public InvalidArgumentValueException(Command command, String invalidArg, String reason) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" this.invalidArg \u003d invalidArg;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" this.reason \u003d reason;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! The argument value \u003c\" + invalidArg + \"\u003e of `\" + command.getName() + \"` is invalid!\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" + \" Reason: \" + reason + \"\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" + \" Usage: `\" + command.getUsageHint() + \"`\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":31}},{"path":"src/main/java/action/exception/MissingArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action.exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * MissingArgumentException represents exceptions due to a missing argument in an action.","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class MissingArgumentException extends ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" private final Argument missingArg;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException with a missing argument.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param command the command","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param missingArg the missing argument","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public MissingArgumentException(Command command, Argument missingArg) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" this.missingArg \u003d missingArg;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! The argument `/\" + missingArg.getName() + \"` of `\" + command.getName() + \"` must be present!\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" + \" Usage: `\" + command.getUsageHint() + \"`\";","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":30}},{"path":"src/main/java/action/exception/MissingArgumentValueException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action.exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * MissingArgumentValueException represents exceptions due to a missing argument value for an argument in an action.","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class MissingArgumentValueException extends ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" private final Argument missingArg;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException with a missing argument value.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param command the command","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param missingArg the missing argument","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public MissingArgumentValueException(Command command, Argument missingArg) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" this.missingArg \u003d missingArg;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! The argument value \u003c\" + missingArg.getValue() + \"\u003e of `\" + command.getName() + \"` must be present!\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" + \" Usage: `\" + command.getUsageHint() + \"`\";","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":30}},{"path":"src/main/java/action/exception/UnexpectedArgumentValueException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action.exception;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * UnexpectedArgumentValueException represents exceptions due to the presence of a value","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" * in an argument that does not require a value.","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":"public class UnexpectedArgumentValueException extends ActionException {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" private final Argument argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException for unrecognized argument names.","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param command the command","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @param argument the argument","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" public UnexpectedArgumentValueException(Command command, Argument argument) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" this.argument \u003d argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! I\u0027m sorry, but I didn\u0027t expect \u003c\" + argument.getValue() + \"\u003e :-(\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" + \" Usage: `\" + command.getUsageHint() + \"`\";","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"tituschewxj":31}},{"path":"src/main/java/action/exception/UnrecognizedArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action.exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.util.Argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.util.Command;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * UnrecognizedArgumentException represents exceptions due to an unrecognized argument name in the action.","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class UnrecognizedArgumentException extends ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" private final Argument argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException for unrecognized argument names.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param command the command","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param argument the name of the argument","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public UnrecognizedArgumentException(Command command, Argument argument) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" this.argument \u003d argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! I\u0027m sorry, but I don\u0027t know what `/\" + argument.getName() + \"` means :-(\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" + \" Usage: `\" + command.getUsageHint() + \"`\";","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":30}},{"path":"src/main/java/action/exception/UnrecognizedCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action.exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":" * UnrecognizedCommandException represents exceptions due to an unrecognized command in the input.","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"public class UnrecognizedCommandException extends ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" private final String commandName;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException for unrecognized commands.","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * @param commandName the name of the command","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" public UnrecognizedCommandException(String commandName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" this.commandName \u003d commandName;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! I\u0027m sorry, but I don\u0027t know what `\" + commandName + \"` means :-(\";","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":22}},{"path":"src/main/java/action/util/Argument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action.util;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":" * Argument stores a {@link Command} argument\u0027s name, and it\u0027s associated value.","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eThe argument must have a name.","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eIf the name matches the command, it is defined to be the default argument.","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class Argument {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" final String name, value;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this argument without a value","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this argument, which should not be null","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" public Argument(String name) {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" // null represents the value that isn\u0027t there","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" this.value \u003d null;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this argument with a value and name.","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this argument, which should not be null","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @param value the value of this argument, which can be null","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" public Argument(String name, String value) {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" this.value \u003d value;","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" * Gets this argument name.","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * @return the name","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" public String getName() {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" return name;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" * Gets the value of this argument.","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" * @return the value","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" public String getValue() {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" return value;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" * Checks if the other argument has the same name as this.","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" * @param otherArgument the other argument to compare with","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" * @return true if the name is the same, otherwise false","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" * @see #hasSameArgumentName(String)","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" public boolean hasSameArgumentName(Argument otherArgument) {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" return name.equals(otherArgument.name);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" * Checks if the other argument has the same name as this.","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" * @param otherArgumentName the other argument name, as a string, to compare with","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" * @return true if the name is the same, otherwise false","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" * @see #hasSameArgumentName(Argument)","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" public boolean hasSameArgumentName(String otherArgumentName) {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" return name.equals(otherArgumentName);","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tituschewxj":75}},{"path":"src/main/java/action/util/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action.util;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.exception.MissingArgumentException;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.exception.UnrecognizedArgumentException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * Command defines the possible unique callable names, and it\u0027s {@link Argument}(s).","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public enum Command {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Ends the chat.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" BYE(","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"bye\")","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" * List the stored text.","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" LIST(","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"list\")","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * Mark the task as done.","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" MARK(","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"mark\", \"index\")","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" * Mark the task as not done.","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" UNMARK(","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"unmark\", \"index\")","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * Adds a to-do task.","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" ADD_TODO(","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"todo\", \"name\")","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" * Adds a deadline task.","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" ADD_DEADLINE(","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"deadline\", \"name\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"by\", \"by_date\")","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" * Adds an event task.","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" ADD_EVENT(","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"event\", \"name\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"from\", \"start_date\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"to\", \"end_date\")","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" * Deletes a task.","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" DELETE(","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"delete\", \"index\")","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" * Stores the usage hint for this command.","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" private final String usageHint;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" * Stores this command name.","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" private final String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" * Stores the expected arguments of this command.","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" private final ExpectedArgument[] arguments;","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this command, which parses the expected arguments.","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eThe first argument has the name of the command.","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eIf the value is null, there is no value for that argument. Otherwise, the value is required.","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments of this command","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"tituschewxj"},"content":" Command(ExpectedArgument... arguments) {","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"tituschewxj"},"content":" // Name of the argument is the first argument","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"tituschewxj"},"content":" this.name \u003d arguments[0].getName();","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"tituschewxj"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"tituschewxj"},"content":" this.usageHint \u003d generateUsageHint(arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"tituschewxj"},"content":" * Generates the usage string of this command using the arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the expected arguments of this command","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"tituschewxj"},"content":" * @return the usage hint","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"tituschewxj"},"content":" private String generateUsageHint(ExpectedArgument[] arguments) {","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"tituschewxj"},"content":" StringBuilder usageString \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"tituschewxj"},"content":" for (int i \u003d 0; i \u003c arguments.length; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"tituschewxj"},"content":" if (i !\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"tituschewxj"},"content":" usageString.append(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"tituschewxj"},"content":" usageString","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"tituschewxj"},"content":" .append(arguments[i].getName())","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"tituschewxj"},"content":" .append(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"tituschewxj"},"content":" if (arguments[i].getValue() !\u003d null) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"tituschewxj"},"content":" // not null indicates that a value should be present.","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"tituschewxj"},"content":" usageString","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"tituschewxj"},"content":" .append(\"\u003c\")","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"tituschewxj"},"content":" .append(arguments[i].getValue())","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"tituschewxj"},"content":" .append(\"\u003e \");","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"tituschewxj"},"content":" usageString.deleteCharAt(usageString.length() - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"tituschewxj"},"content":" return usageString.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"tituschewxj"},"content":" * Checks if the command expects an argument name.","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"tituschewxj"},"content":" * @param otherArgument the argument with the name to find","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"tituschewxj"},"content":" * @return true if the command has that argument name, otherwise false","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"tituschewxj"},"content":" public boolean hasArgumentName(Argument otherArgument) {","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"tituschewxj"},"content":" for (Argument arg : arguments) {","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"tituschewxj"},"content":" if (arg.hasSameArgumentName(otherArgument)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"tituschewxj"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"tituschewxj"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"tituschewxj"},"content":" * Gets the command usage hint.","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"tituschewxj"},"content":" * @return the usage hint","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"tituschewxj"},"content":" public String getUsageHint() {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"tituschewxj"},"content":" return usageHint;","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"tituschewxj"},"content":" * Gets the name of the command.","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"tituschewxj"},"content":" * @return the name","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"tituschewxj"},"content":" public String getName() {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"tituschewxj"},"content":" return name;","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"tituschewxj"},"content":" * Validates the supplied argument names and values.","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"tituschewxj"},"content":" * @param suppliedArguments the argument names","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If an argument is missing or invalid, or unrecognized.","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"tituschewxj"},"content":" public void validateSuppliedArguments(Argument[] suppliedArguments) throws ActionException {","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"tituschewxj"},"content":" validateArgumentsRecognized(suppliedArguments);","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"tituschewxj"},"content":" validateArgumentsPresentAndValid(suppliedArguments);","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"tituschewxj"},"content":" * Validates the argument names, that they are recognizable.","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"tituschewxj"},"content":" * @throws UnrecognizedArgumentException If an argument is unrecognizable.","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"tituschewxj"},"content":" private void validateArgumentsRecognized(Argument[] suppliedArguments) throws UnrecognizedArgumentException {","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"tituschewxj"},"content":" for (Argument suppliedArg : suppliedArguments) {","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"tituschewxj"},"content":" if (!hasArgumentName(suppliedArg)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"tituschewxj"},"content":" throw new UnrecognizedArgumentException(this, suppliedArg);","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"tituschewxj"},"content":" * Validates that all argument names expected are present and not invalid.","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If an argument is missing or invalid.","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"tituschewxj"},"content":" private void validateArgumentsPresentAndValid(Argument[] suppliedArguments) throws ActionException {","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"tituschewxj"},"content":" for (ExpectedArgument expectedArg : this.arguments) {","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"tituschewxj"},"content":" boolean isRecognized \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"tituschewxj"},"content":" for (Argument suppliedArg : suppliedArguments) {","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"tituschewxj"},"content":" if (expectedArg.hasSameArgumentName(suppliedArg)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"tituschewxj"},"content":" expectedArg.validateArgument(this, suppliedArg);","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"tituschewxj"},"content":" isRecognized \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"tituschewxj"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"tituschewxj"},"content":" if (!isRecognized) {","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"tituschewxj"},"content":" throw new MissingArgumentException(this, expectedArg);","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tituschewxj":203}},{"path":"src/main/java/action/util/ExpectedArgument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package action.util;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import action.exception.ActionException;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import action.exception.MissingArgumentValueException;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import action.exception.UnexpectedArgumentValueException;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" * ExpectedArgument encapsulates the behaviour of arguments that a command can expect.","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eAn ExpectedArgument list generates the usage hint for a command.","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public final class ExpectedArgument extends Argument {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this argument without a value.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this argument, which should not be null","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public ExpectedArgument(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this argument with a value and name.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this argument, which should not be null","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @param valueUsageName the value of this argument, as a descriptive name of its purpose","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" public ExpectedArgument(String name, String valueUsageName) {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" super(name, valueUsageName);","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" * Validates the supplied argument using this expected argument for the presence or lack of a value.","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" * If this value is null, then no value is expected.","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * @param command the command with that supplied argument","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" * @param suppliedArgument the other argument to compare with","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the argument has a missing or unexpected value.","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" public void validateArgument(Command command, Argument suppliedArgument) throws ActionException {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" if (hasSameArgumentName(suppliedArgument)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" if (value !\u003d null \u0026\u0026 suppliedArgument.value \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" throw new MissingArgumentValueException(command, this);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" } else if (value \u003d\u003d null \u0026\u0026 suppliedArgument.value !\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" throw new UnexpectedArgumentValueException(command, suppliedArgument);","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tituschewxj":53}},{"path":"src/main/java/print/Printer.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package print;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import java.util.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":" * Pretty prints to the console. (System.out)","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"public class Printer {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * The indentation size.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" private static final String INDENT \u003d \" \";","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Stores the messages to print.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" private static final Queue\u003cString\u003e printQueue \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" * Inserts a horizontal line.","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" private static void insertLine() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" System.out.println(INDENT + \"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * Prints an indented message to the console.","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" * @param message the message to print in the console","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" private static void printMessage(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" String[] lines \u003d message.split(\"\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" System.out.println(INDENT + line);","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" * Prints multiple lines of indented messages to the console.","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" * @param messages the messages, separated by lines","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" public static void printMessages(String... messages) {","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" insertLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" while (!printQueue.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" printMessage(printQueue.remove());","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" insertLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" for (String message : messages) {","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" printMessage(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" insertLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" * Add messages to printing queue for printing with the chat message later.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" * The messages are printed when {@link #printMessages} is called.","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" * @param messages the messages, separated by lines","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" public static void addToPrintQueue(String... messages) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" printQueue.addAll(Arrays.asList(messages));","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tituschewxj":68}},{"path":"src/main/java/storage/LocalStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import print.Printer;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * This saves the {@link TaskList} into local storage in the directory {@value RELATIVE_PATH}","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * as a human-readable {@value SAVE_FILE_NAME} file,","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * where each line represents a task,","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * to allow users to view their tasks without running the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" * The format for a task is as follows:","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" * \u003cpre\u003e{@code \u003cindex\u003e [\u003ctype\u003e][\u003cstatus\u003e] \u003cname\u003e \u003cother_arguments\u003e}\u003c/pre\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" * The format is specified within each type of task.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * For example, a {@link Deadline}: {@code 4. [D][ ] read book (by: Sunday)}","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * Regular expressions are used to parse the file back into a {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":"public class LocalStorage {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" * The relative path from the project root where the save file is stored.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" public static String RELATIVE_PATH \u003d \"data/\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * The name and format of the save file stored.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" public static String SAVE_FILE_NAME \u003d \"save.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" * Saves the task list into local storage, overwriting the previous save file if any.","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the task list instance to save into local storage","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" * @return true if the file is saved successfully, otherwise false","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" public static boolean saveTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" createSaveFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" // write to save file","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" File saveFile \u003d new File(RELATIVE_PATH + SAVE_FILE_NAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" FileWriter fw \u003d new FileWriter(saveFile, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" fw.write(taskList.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" * Creates the save file and folder if it doesn\u0027t exist.","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" * @return true if the file is created, otherwise false","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" private static boolean createSaveFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" File folder \u003d new File(RELATIVE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" if (!folder.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" folder.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" File saveFile \u003d new File(RELATIVE_PATH + SAVE_FILE_NAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" return saveFile.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" * Loads the {@link TaskList} into the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" * @return the {@link TaskList} stored in local storage, or a new instance if none exists","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":" public static TaskList loadTaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":" if (createSaveFile()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"tituschewxj"},"content":" return new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"tituschewxj"},"content":" return readSaveFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"tituschewxj"},"content":" * Reads the save file and converts it to a {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"tituschewxj"},"content":" * @return the task list stored in local storage","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"tituschewxj"},"content":" private static TaskList readSaveFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"tituschewxj"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"tituschewxj"},"content":" Path path \u003d Paths.get(RELATIVE_PATH, SAVE_FILE_NAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"tituschewxj"},"content":" try (Stream\u003cString\u003e lines \u003d Files.lines(path)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"tituschewxj"},"content":" lines.forEach(line -\u003e taskList.add(TaskList.parseTaskListItem(line)));","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"tituschewxj"},"content":" Printer.addToPrintQueue(\"I have found and loaded a previous save file successfully!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"tituschewxj"},"content":" return taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"tituschewxj"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"tituschewxj"},"content":" Printer.addToPrintQueue(\"I cannot read the save file! Invalid file format!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"tituschewxj"},"content":" } catch (IllegalStateException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"tituschewxj"},"content":" Printer.addToPrintQueue(\"I cannot understand the save file! Invalid task format!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"tituschewxj"},"content":" return new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"tituschewxj":115}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * Deadlines: tasks that need to be done before a specific date/time.","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * Stores the deadline of this.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" private final String deadline;","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * The icon for the task type.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" static String TASK_TYPE_ICON \u003d \"D\";","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" * The format that a {@link Deadline} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" private static final String FORMAT \u003d String.format(\"[%s]%s (by: %s)\", TASK_TYPE_ICON, \"%s\", \"%s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * The regex pattern that a {@link Deadline} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" private static final String REGEX_PATTERN \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" String.format(\"\\\\[%s\\\\](?\u003ctask\u003e.*)\\\\(by:(?\u003cby\u003e.*)\\\\)\", TASK_TYPE_ICON);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this deadline.","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this deadline","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" * @param deadline the deadline (possibly date/time) of this task","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" public Deadline(String name, String deadline) {","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" this.deadline \u003d deadline.trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" * @param matcher the matcher that has the relevant captured groups","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" public Deadline(Matcher matcher) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" super(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" this.deadline \u003d matcher.group(\"by\").trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" * Parse a deadline from a human-readable string.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" * @param readableString the deadline as a human-readable string","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" * @return the deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" public static Deadline parseDeadline(String readableString) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" Matcher matcher \u003d Pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" .compile(REGEX_PATTERN)","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" .matcher(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" matcher.find();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" return new Deadline(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" return String.format(FORMAT, super.toString(), deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":77}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * Events: tasks that start at a specific date/time and ends at a specific data/time.","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * Stores the start time of this.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" private final String startDateTime;","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Stores the end time of this.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" private final String endDateTime;","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" * The icon for the task type.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" static final String TASK_TYPE_ICON \u003d \"E\";","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * The format/pattern that an {@link Event} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" private static final String FORMAT \u003d String.format(\"[%s]%s (from: %s to: %s)\", TASK_TYPE_ICON, \"%s\", \"%s\", \"%s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" * The regex pattern that a {@link Deadline} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" private static final String REGEX_PATTERN \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" String.format(\"\\\\[%s\\\\](?\u003ctask\u003e.*)\\\\(from:(?\u003cfrom\u003e.*)to:(?\u003cto\u003e.*)\\\\)\", TASK_TYPE_ICON);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this event.","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this event","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" * @param startDateTime the starting date/time of this event","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" * @param endDateTime the ending date/time of this event","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" public Event(String name, String startDateTime, String endDateTime) {","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" this.startDateTime \u003d startDateTime.trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" this.endDateTime \u003d endDateTime.trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this event.","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" * @param matcher the matcher that has the relevant captured groups","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" public Event(Matcher matcher) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" super(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" this.startDateTime \u003d matcher.group(\"from\").trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" this.endDateTime \u003d matcher.group(\"to\").trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" * Parse an event from a human-readable string.","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" * @param readableString the event as a human-readable string","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" * @return the event","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" public static Event parseEvent(String readableString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" Matcher matcher \u003d Pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" .compile(REGEX_PATTERN)","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" .matcher(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" matcher.find();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" return new Event(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" return String.format(FORMAT, super.toString(), startDateTime, endDateTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":84}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * Encapsulates the behaviour of a task.","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * The name of this task.","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" private final String name;","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * Whether this task is completed.","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" private boolean isCompleted \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" * The format that a {@link Task} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" private static final String FORMAT \u003d \"[%s] %s\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * The regex pattern that a {@link Task} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" private static final String REGEX_PATTERN \u003d \"\\\\[(?\u003cstatus\u003e.)\\\\](?\u003cname\u003e.*)\";","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" * The text icon to indicate that a task is completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" private static final String COMPLETED_ICON \u003d \"X\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this task.","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this task","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" this.name \u003d name.trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this task.","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" * @param matcher the matcher that has the relevant captured groups","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" public Task(Matcher matcher) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" matcher \u003d Pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" .compile(REGEX_PATTERN)","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" .matcher(matcher.group(\"task\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" matcher.find();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" this.isCompleted \u003d isStatusIconCompleted(matcher.group(\"status\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" this.name \u003d matcher.group(\"name\").trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" * Parse a task from a human-readable string.","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" * @param readableString the task as a human-readable string","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" * @return the task","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" static Task parseTask(String readableString) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" // determine the type of task","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" String taskType \u003d readableString.substring(1, 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" if (taskType.equals(Deadline.TASK_TYPE_ICON)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" return Deadline.parseDeadline(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" } else if (taskType.equals(Event.TASK_TYPE_ICON)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" return Event.parseEvent(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" } else if (taskType.equals(ToDo.TASK_TYPE_ICON)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" return ToDo.parseToDo(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" throw new IllegalStateException(\"The string doesn\u0027t match any task type!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" * Gets a human-readable description of this task.","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" * @return this task in a human-readable string","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":90,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":91,"author":{"gitId":"tituschewxj"},"content":" return String.format(FORMAT, getStatusIcon(), name);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":93,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":94,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"tituschewxj"},"content":" * Mark this task as done.","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":97,"author":{"gitId":"tituschewxj"},"content":" public void mark() {","lastModifiedDate":"2024-01-21"},{"lineNumber":98,"author":{"gitId":"tituschewxj"},"content":" isCompleted \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":99,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":100,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":101,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":102,"author":{"gitId":"tituschewxj"},"content":" * Change the status of this task back to not done.","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":104,"author":{"gitId":"tituschewxj"},"content":" public void unmark() {","lastModifiedDate":"2024-01-21"},{"lineNumber":105,"author":{"gitId":"tituschewxj"},"content":" isCompleted \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":106,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":107,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"tituschewxj"},"content":" * Gets the icon of the text that depends on the task completion status.","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"tituschewxj"},"content":" * @return the icon","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"tituschewxj"},"content":" private String getStatusIcon() {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"tituschewxj"},"content":" return (isCompleted) ? COMPLETED_ICON : \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"tituschewxj"},"content":" * Checks if the status icon is completed","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"tituschewxj"},"content":" * @return true if the icon is {@value COMPLETED_ICON}, otherwise false","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"tituschewxj"},"content":" private boolean isStatusIconCompleted(String statusIcon) {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"tituschewxj"},"content":" return COMPLETED_ICON.equals(statusIcon);","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":125}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import storage.LocalStorage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import java.util.List;","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * This class encapsulates a {@link Task} list.","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public class TaskList {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Stores the tasks.","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" private final List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" * @param tasks takes in a task list","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" * Checks if the index is a valid index in this list.","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * @param index the index of in the task list","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * @return true if the index is valid, otherwise false","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" public boolean isValidIndex(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" return index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size();","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" * Add a to-do to this list.","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of the to-do to add","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is added","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" public Task addTodo(String name) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" return add(new ToDo(name));","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" * Adds a task to this list, saving the task list to local storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" * @param \u003cT\u003e the type of task to add","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" * @param task the task to add","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is added","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" public \u003cT extends Task\u003e Task add(T task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" LocalStorage.saveTaskList(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" return task;","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" * Add a deadline to this list.","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of the to-do to add","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is added","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" public Task addDeadline(String name, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" return add(new Deadline(name, by));","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" * Add an event to this list.","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of the to-do to add","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is added","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" public Task addEvent(String name, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" return add(new Event(name, from, to));","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":90,"author":{"gitId":"tituschewxj"},"content":" * Mark the task as done.","lastModifiedDate":"2024-01-21"},{"lineNumber":91,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"tituschewxj"},"content":" * @param index the validated index of the task (0-indexed)","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is marked","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"tituschewxj"},"content":" public Task markTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"tituschewxj"},"content":" tasks.get(index).mark();","lastModifiedDate":"2024-01-21"},{"lineNumber":97,"author":{"gitId":"tituschewxj"},"content":" LocalStorage.saveTaskList(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"tituschewxj"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":100,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":101,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":102,"author":{"gitId":"tituschewxj"},"content":" * Mark the task as not done.","lastModifiedDate":"2024-01-21"},{"lineNumber":103,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"tituschewxj"},"content":" * @param index the validated index of the task (0-indexed)","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is marked","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":107,"author":{"gitId":"tituschewxj"},"content":" public Task unmarkTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"tituschewxj"},"content":" tasks.get(index).unmark();","lastModifiedDate":"2024-01-21"},{"lineNumber":109,"author":{"gitId":"tituschewxj"},"content":" LocalStorage.saveTaskList(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"tituschewxj"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":112,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":113,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":114,"author":{"gitId":"tituschewxj"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"tituschewxj"},"content":" * @param index the validated index of the task (0-indexed)","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is marked","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"tituschewxj"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d tasks.remove(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"tituschewxj"},"content":" LocalStorage.saveTaskList(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"tituschewxj"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":125,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"tituschewxj"},"content":" * Gets the number of tasks in this task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"tituschewxj"},"content":" * @return the size as an int","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":130,"author":{"gitId":"tituschewxj"},"content":" public int size() {","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"tituschewxj"},"content":" return tasks.size();","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":133,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"tituschewxj"},"content":" * Checks if the task list is empty.","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"tituschewxj"},"content":" * @return true if the task list is empty, otherwise false","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"tituschewxj"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"tituschewxj"},"content":" return tasks.size() \u003d\u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":144,"author":{"gitId":"tituschewxj"},"content":" * Gets a human-readable description of this task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"tituschewxj"},"content":" * @return this task list as a human-readable string","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":148,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":149,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":150,"author":{"gitId":"tituschewxj"},"content":" StringBuilder message \u003d new StringBuilder();","lastModifiedDate":"2024-01-21"},{"lineNumber":151,"author":{"gitId":"tituschewxj"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":152,"author":{"gitId":"tituschewxj"},"content":" message.append(String.format(\"%d. %s\\n\", i + 1, tasks.get(i)));","lastModifiedDate":"2024-01-21"},{"lineNumber":153,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":154,"author":{"gitId":"tituschewxj"},"content":" return message.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":155,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":156,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"tituschewxj"},"content":" * Parse a task list item from a human-readable string.","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"tituschewxj"},"content":" * @param readableString the task list item as a human-readable string","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"tituschewxj"},"content":" * @return the task","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern.","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"tituschewxj"},"content":" public static Task parseTaskListItem(String readableString) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"tituschewxj"},"content":" Matcher matcher \u003d Pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"tituschewxj"},"content":" .compile(\"\\\\d+\\\\.(?\u003ctask\u003e.*)\")","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"tituschewxj"},"content":" .matcher(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"tituschewxj"},"content":" matcher.find();","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"tituschewxj"},"content":" String parsedString \u003d matcher.group(\"task\").trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"tituschewxj"},"content":" return Task.parseTask(parsedString);","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":173}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * ToDos: tasks without any date/time attached to it.","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * The icon for the task type.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" static final String TASK_TYPE_ICON \u003d \"T\";","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * The format that a {@link ToDo} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" private static final String FORMAT \u003d String.format(\"[%s]%s\", TASK_TYPE_ICON, \"%s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" * The regex pattern that a {@link Deadline} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" private static final String REGEX_PATTERN \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" String.format(\"\\\\[%s\\\\](?\u003ctask\u003e.*)\", TASK_TYPE_ICON);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this to-do.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this to-do","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this to-do.","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * @param matcher the matcher that has the relevant captured groups","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" public ToDo(Matcher matcher) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" super(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" * Parse a to-do from a human-readable string.","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" * @param readableString the to-do as a human-readable string","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" * @return the to-do","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" public static ToDo parseToDo(String readableString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" Matcher matcher \u003d Pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" .compile(REGEX_PATTERN)","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" .matcher(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" matcher.find();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" return new ToDo(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" return String.format(FORMAT, super.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":69}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"list tasks","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"todo return book","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"mark","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"mark two","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":"unmark","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"unmark two","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":"todo","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":"deadline return book","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":"deadline return book /on Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":"deadline return book /by 12/3/45","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"event /from Mon /to Tue","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":"event project meeting /at Mon","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":"deadline /by Tue","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":"mark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"exit","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tituschewxj":37}}] +[{"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":"tituschewxj"},"content":"### `Keyword` - Describe chatbot.action","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":"Describe the chatbot.action and its outcome.","lastModifiedDate":"2024-01-30"},{"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":{"tituschewxj":2,"-":27}},{"path":"src/main/java/chatbot/ChatBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.Action;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.ByeAction;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.InputParser;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.ui.Printer;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import chatbot.storage.LocalStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * This encapsulates the behaviour of a Chatbot,","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * which is the handling of the message content and executing commands.","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":"public class ChatBot {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * Stores the name of this chatbot.","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" private final String chatBotName;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" * Stores the user\u0027s tasks","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" private final TaskList userList;","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" ChatBot chatBot \u003d new ChatBot(\"Stratify\");","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" chatBot.run();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" * Class constructor.","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" * @param chatBotName the name of this chatbot.","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" public ChatBot(String chatBotName) {","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" this.chatBotName \u003d chatBotName;","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" userList \u003d LocalStorage.loadTaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" * Greets the user when entering a session with this chatbot.","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" private void greet() {","lastModifiedDate":"2024-01-21"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" \"Hello! I\u0027m \" + chatBotName + \"!\",","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" \"What can I do for you?\"","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" * Reads and parses user input for commands.","lastModifiedDate":"2024-01-21"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" public void run() {","lastModifiedDate":"2024-01-21"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" greet();","lastModifiedDate":"2024-01-21"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" Action userAction \u003d null;","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" do {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" userAction \u003d InputParser.getParsedInput();","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" userAction.execute(userList);","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" } catch (ActionException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" } while (!(userAction instanceof ByeAction));","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":69}},{"path":"src/main/java/chatbot/action/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.UnrecognizedCommandException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * An Action encapsulates the behaviour of a {@link Command} and it\u0027s {@link Argument}(s).","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eAn action may be invalid.","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eAn action can be executed, with validation checks.","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":"public abstract class Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" private final Argument[] suppliedArguments;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this action, which validates that it\u0027s arguments are valid.","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" * @param command the command associated with this action","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" * @param suppliedArguments the arguments supplied with the command","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" public Action(Command command, Argument... suppliedArguments) throws ActionException {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" this.suppliedArguments \u003d suppliedArguments;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" command.validateSuppliedArguments(suppliedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" * Factory method to create an action instance.","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" * @param command the command as a string","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" * @param parsedArguments the arguments, parsed from the input","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * @return the action instance","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the command or arguments are not one of the expected values.","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" public static Action of(String command, Argument[] parsedArguments) throws ActionException {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" if (command.equals(Command.BYE.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" return new ByeAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.LIST.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" return new ListAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.MARK.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" return new MarkAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.UNMARK.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" return new UnmarkAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.ADD_TODO.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" return new AddTodoAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.ADD_DEADLINE.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" return new AddDeadlineAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.ADD_EVENT.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" return new AddEventAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" } else if (command.equals(Command.DELETE.getName())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" return new DeleteAction(parsedArguments);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" throw new UnrecognizedCommandException(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" * Gets the command of this action.","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" * @return the command associated with this action","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" final Command getCommand() {","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" return command;","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" * Finds the value of this action\u0027s argument by the argument name.","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" * @param name the non-null name of the argument to find","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" * @return the value of the argument with that name, or null if not found","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" final String findArgument(String name) {","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" for (Argument arg : suppliedArguments) {","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" if (arg.hasSameArgumentName(name)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" return arg.getValue();","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" // null represents that the argument of that name does not exist,","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" // which should not happen, since the argument has been validated.","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" return null;","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"tituschewxj"},"content":" * Finds the default argument of this action.","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"tituschewxj"},"content":" * @return the value of the default argument","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"tituschewxj"},"content":" final String findDefaultArgument() {","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"tituschewxj"},"content":" return findArgument(command.getName());","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"tituschewxj"},"content":" * Executes this action, which may modify the state of stored tasks,","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"tituschewxj"},"content":" * and may print to the console.","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails certain validation checks due to invalid input.","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"tituschewxj"},"content":" public abstract void execute(TaskList taskList) throws ActionException;","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":107}},{"path":"src/main/java/chatbot/action/AddDeadlineAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.ui.Printer;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * AddDeadlineCommand encapsulates the behaviour of adding a deadline.","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"public class AddDeadlineAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this add deadline action.","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" public AddDeadlineAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" super(Command.ADD_DEADLINE, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * Add a deadline task to the user\u0027s list.","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList to modify","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" String name \u003d findDefaultArgument(),","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" by \u003d findArgument(\"by\");","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.addDeadline(name, by);","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" \"Got it. I\u0027ve added this deadline:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" \" \" + task,","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" \"Now you have \" + taskList.size() + \" task(s) in the list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":44}},{"path":"src/main/java/chatbot/action/AddEventAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.ui.Printer;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * AddEventCommand encapsulates the behaviour of adding an event.","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"public class AddEventAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this add event action.","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" public AddEventAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" super(Command.ADD_EVENT, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * Add an event to the task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList to modify","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" String name \u003d findDefaultArgument(),","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" from \u003d findArgument(\"from\"),","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" to \u003d findArgument(\"to\");","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.addEvent(name, from, to);","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" \"Got it. I\u0027ve added this event:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" \" \" + task,","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" \"Now you have \" + taskList.size() + \" task(s) in the list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":45}},{"path":"src/main/java/chatbot/action/AddTodoAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.ui.Printer;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * AddTodoCommand encapsulates the behaviour of adding a to-do.","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"public class AddTodoAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this add to-do action.","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" public AddTodoAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" super(Command.ADD_TODO, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * Add a to-do to the user\u0027s list.","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList to modify","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" String name \u003d findDefaultArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.addTodo(name);","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" \"Got it. I\u0027ve added this to-do:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" \" \" + task,","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" \"Now you have \" + taskList.size() + \" task(s) in the list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":43}},{"path":"src/main/java/chatbot/action/ByeAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.ui.Printer;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * ByeAction encapsulates the behaviour when ending the chat.","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public class ByeAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this bye action.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public ByeAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" super(Command.BYE, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * Greets the user when exiting the application.","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(\"Bye! Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":35}},{"path":"src/main/java/chatbot/action/DeleteAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.InvalidArgumentValueException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.ui.Printer;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * DeleteAction encapsulates behaviour of deleting a task from the task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public class DeleteAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this delete action.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public DeleteAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" super(Command.DELETE, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * Deletes the task from the task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @throws InvalidArgumentValueException If the action fails certain validation checks due to invalid input.","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) throws InvalidArgumentValueException {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" String indexString \u003d findDefaultArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" // Validate indexString as an integer","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" int index;","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is not an integer.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range as there are no tasks in your list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" // Validate that indexString is in the range","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" if (!taskList.isValidIndex(index)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range. \u003cindex\u003e must be between 1 and \" + taskList.size() + \".\"","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.deleteTask(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" \"Noted. I\u0027ve removed this task:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" \" \" + task","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":71}},{"path":"src/main/java/chatbot/action/ListAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.ui.Printer;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * ListAction encapsulates the behaviour when listing the tasks.","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public class ListAction extends Action{","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this list action.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public ListAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" super(Command.LIST, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * Prints the user\u0027s list.","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" \"Your list is empty.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" \"Here are the tasks in your list:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" taskList.toString()","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":43}},{"path":"src/main/java/chatbot/action/MarkAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.InvalidArgumentValueException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.ui.Printer;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * MarkAction encapsulates the behaviour of marking a task as done.","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"public class MarkAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this mark action.","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" public MarkAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" super(Command.MARK, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * Marks and prints the task.","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" * @throws InvalidArgumentValueException If the action fails certain validation checks due to invalid input.","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) throws InvalidArgumentValueException {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" String indexString \u003d findDefaultArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" // Validate indexString as an integer","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" int index;","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is not an integer.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range as there are no tasks in your list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" // Validate that indexString is in the range","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" if (!taskList.isValidIndex(index)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range. \u003cindex\u003e must be between 1 and \" + taskList.size() + \".\"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.markTask(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" \"Nice! I\u0027ve marked this task as done:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" \" \" + task","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":73}},{"path":"src/main/java/chatbot/action/UnmarkAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.InvalidArgumentValueException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.ui.Printer;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * UnmarkAction encapsulates the behaviour of marking a task as not done.","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"public class UnmarkAction extends Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this unmark action.","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments supplied with the command","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the action fails has unrecognizable or missing arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" public UnmarkAction(Argument[] arguments) throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" super(Command.UNMARK, arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * Unmarks and prints the task.","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the taskList that is used with the chatbot","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" * @throws InvalidArgumentValueException If the action fails certain validation checks due to invalid input.","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" public void execute(TaskList taskList) throws InvalidArgumentValueException {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" String indexString \u003d findDefaultArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" // Validate indexString as an integer","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" int index;","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" index \u003d Integer.parseInt(indexString) - 1;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is not an integer.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range as there are no tasks in your list.\"","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" // Validate that indexString is in the range","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" if (!taskList.isValidIndex(index)) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" throw new InvalidArgumentValueException(","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" getCommand(),","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" \"index\",","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" \"\u003cindex\u003e is out of range. \u003cindex\u003e must be between 1 and \" + taskList.size() + \".\"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" // Perform behaviour","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d taskList.unmarkTask(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" Printer.printMessages(","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" \"Ok, I\u0027ve marked this task as not done yet:\",","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" \" \" + task","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":73}},{"path":"src/main/java/chatbot/action/exception/ActionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action.exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.Action;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":" * ActionException represents exceptions specific to {@link Action},","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * which are thrown when invalid input results in an action being invalid,","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" * and is unable to recover a valid state.","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":"public abstract class ActionException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":14}},{"path":"src/main/java/chatbot/action/exception/InvalidArgumentValueException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action.exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":" * InvalidArgumentValueException represents exceptions due to an invalid argument value in an argument.","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"public class InvalidArgumentValueException extends ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" private final String invalidArg, reason;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException with an invalid argument value.","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * @param command the command","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param invalidArg the invalid argument","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" public InvalidArgumentValueException(Command command, String invalidArg, String reason) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" this.invalidArg \u003d invalidArg;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" this.reason \u003d reason;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! The argument value \u003c\" + invalidArg + \"\u003e of `\" + command.getName() + \"` is invalid!\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" + \" Reason: \" + reason + \"\\n\"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" + \" Usage: `\" + command.getUsageHint() + \"`\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":31}},{"path":"src/main/java/chatbot/action/exception/MissingArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action.exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * MissingArgumentException represents exceptions due to a missing argument in an action.","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class MissingArgumentException extends ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" private final Argument missingArg;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException with a missing argument.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param command the command","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param missingArg the missing argument","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public MissingArgumentException(Command command, Argument missingArg) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" this.missingArg \u003d missingArg;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! The argument `/\" + missingArg.getName() + \"` of `\" + command.getName() + \"` must be present!\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" + \" Usage: `\" + command.getUsageHint() + \"`\";","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":30}},{"path":"src/main/java/chatbot/action/exception/MissingArgumentValueException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action.exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * MissingArgumentValueException represents exceptions due to a missing argument value for an argument in an action.","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class MissingArgumentValueException extends ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" private final Argument missingArg;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException with a missing argument value.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param command the command","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param missingArg the missing argument","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public MissingArgumentValueException(Command command, Argument missingArg) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" this.missingArg \u003d missingArg;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! The argument value \u003c\" + missingArg.getValue() + \"\u003e of `\" + command.getName() + \"` must be present!\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" + \" Usage: `\" + command.getUsageHint() + \"`\";","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":30}},{"path":"src/main/java/chatbot/action/exception/UnexpectedArgumentValueException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action.exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * UnexpectedArgumentValueException represents exceptions due to the presence of a value","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" * in an argument that does not require a value.","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":"public class UnexpectedArgumentValueException extends ActionException {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" private final Argument argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException for unrecognized argument names.","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param command the command","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * @param argument the argument","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" public UnexpectedArgumentValueException(Command command, Argument argument) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" this.argument \u003d argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! I\u0027m sorry, but I didn\u0027t expect \u003c\" + argument.getValue() + \"\u003e :-(\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" + \" Usage: `\" + command.getUsageHint() + \"`\";","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"tituschewxj":31}},{"path":"src/main/java/chatbot/action/exception/UnrecognizedArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action.exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * UnrecognizedArgumentException represents exceptions due to an unrecognized argument name in the action.","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class UnrecognizedArgumentException extends ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" private final Argument argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" private final Command command;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException for unrecognized argument names.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * @param command the command","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param argument the name of the argument","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public UnrecognizedArgumentException(Command command, Argument argument) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" this.argument \u003d argument;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! I\u0027m sorry, but I don\u0027t know what `/\" + argument.getName() + \"` means :-(\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" + \" Usage: `\" + command.getUsageHint() + \"`\";","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":30}},{"path":"src/main/java/chatbot/action/exception/UnrecognizedCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action.exception;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":" * UnrecognizedCommandException represents exceptions due to an unrecognized command in the input.","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"public class UnrecognizedCommandException extends ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" private final String commandName;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this ActionException for unrecognized commands.","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * @param commandName the name of the command","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" public UnrecognizedCommandException(String commandName) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" this.commandName \u003d commandName;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" return \"OOPS!!! I\u0027m sorry, but I don\u0027t know what `\" + commandName + \"` means :-(\";","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tituschewxj":22}},{"path":"src/main/java/chatbot/action/util/Argument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":" * Argument stores a {@link Command} argument\u0027s name, and it\u0027s associated value.","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eThe argument must have a name.","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eIf the name matches the command, it is defined to be the default argument.","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class Argument {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" final String name, value;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this argument without a value","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this argument, which should not be null","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" public Argument(String name) {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" // null represents the value that isn\u0027t there","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" this.value \u003d null;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this argument with a value and name.","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this argument, which should not be null","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @param value the value of this argument, which can be null","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" public Argument(String name, String value) {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" this.value \u003d value;","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" * Gets this argument name.","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * @return the name","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" public String getName() {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" return name;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" * Gets the value of this argument.","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" * @return the value","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" public String getValue() {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" return value;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" * Checks if the other argument has the same name as this.","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" * @param otherArgument the other argument to compare with","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" * @return true if the name is the same, otherwise false","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" * @see #hasSameArgumentName(String)","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" public boolean hasSameArgumentName(Argument otherArgument) {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" return name.equals(otherArgument.name);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" * Checks if the other argument has the same name as this.","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" * @param otherArgumentName the other argument name, as a string, to compare with","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" * @return true if the name is the same, otherwise false","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" * @see #hasSameArgumentName(Argument)","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" public boolean hasSameArgumentName(String otherArgumentName) {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" return name.equals(otherArgumentName);","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tituschewxj":75}},{"path":"src/main/java/chatbot/action/util/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.MissingArgumentException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.UnrecognizedArgumentException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * Command defines the possible unique callable names, and it\u0027s {@link Argument}(s).","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public enum Command {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Ends the chat.","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" BYE(","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"bye\")","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" * List the stored text.","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" LIST(","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"list\")","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * Mark the chatbot.task as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" MARK(","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"mark\", \"index\")","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" * Mark the chatbot.task as not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" UNMARK(","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"unmark\", \"index\")","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * Adds a to-do chatbot.task.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" ADD_TODO(","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"todo\", \"name\")","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" * Adds a deadline chatbot.task.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" ADD_DEADLINE(","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"deadline\", \"name\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"by\", \"by_date\")","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" * Adds an event chatbot.task.","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" ADD_EVENT(","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"event\", \"name\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"from\", \"start_date\"),","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"to\", \"end_date\")","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" ),","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" * Deletes a chatbot.task.","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" DELETE(","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" new ExpectedArgument(\"delete\", \"index\")","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" );","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" * Stores the usage hint for this command.","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" private final String usageHint;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" * Stores this command name.","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" private final String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" * Stores the expected arguments of this command.","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" private final ExpectedArgument[] arguments;","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this command, which parses the expected arguments.","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eThe first argument has the name of the command.","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eIf the value is null, there is no value for that argument. Otherwise, the value is required.","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the arguments of this command","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"tituschewxj"},"content":" Command(ExpectedArgument... arguments) {","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"tituschewxj"},"content":" // Name of the argument is the first argument","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"tituschewxj"},"content":" this.name \u003d arguments[0].getName();","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"tituschewxj"},"content":" this.arguments \u003d arguments;","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"tituschewxj"},"content":" this.usageHint \u003d generateUsageHint(arguments);","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"tituschewxj"},"content":" * Generates the usage string of this command using the arguments.","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"tituschewxj"},"content":" * @param arguments the expected arguments of this command","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"tituschewxj"},"content":" * @return the usage hint","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"tituschewxj"},"content":" private String generateUsageHint(ExpectedArgument[] arguments) {","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"tituschewxj"},"content":" StringBuilder usageString \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"tituschewxj"},"content":" for (int i \u003d 0; i \u003c arguments.length; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"tituschewxj"},"content":" if (i !\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"tituschewxj"},"content":" usageString.append(\"/\");","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"tituschewxj"},"content":" usageString","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"tituschewxj"},"content":" .append(arguments[i].getName())","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"tituschewxj"},"content":" .append(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"tituschewxj"},"content":" if (arguments[i].getValue() !\u003d null) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"tituschewxj"},"content":" // not null indicates that a value should be present.","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"tituschewxj"},"content":" usageString","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"tituschewxj"},"content":" .append(\"\u003c\")","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"tituschewxj"},"content":" .append(arguments[i].getValue())","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"tituschewxj"},"content":" .append(\"\u003e \");","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"tituschewxj"},"content":" usageString.deleteCharAt(usageString.length() - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"tituschewxj"},"content":" return usageString.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"tituschewxj"},"content":" * Checks if the command expects an argument name.","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"tituschewxj"},"content":" * @param otherArgument the argument with the name to find","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"tituschewxj"},"content":" * @return true if the command has that argument name, otherwise false","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"tituschewxj"},"content":" public boolean hasArgumentName(Argument otherArgument) {","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"tituschewxj"},"content":" for (Argument arg : arguments) {","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"tituschewxj"},"content":" if (arg.hasSameArgumentName(otherArgument)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"tituschewxj"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"tituschewxj"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"tituschewxj"},"content":" * Gets the command usage hint.","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"tituschewxj"},"content":" * @return the usage hint","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"tituschewxj"},"content":" public String getUsageHint() {","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"tituschewxj"},"content":" return usageHint;","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"tituschewxj"},"content":" * Gets the name of the command.","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"tituschewxj"},"content":" * @return the name","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"tituschewxj"},"content":" public String getName() {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"tituschewxj"},"content":" return name;","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"tituschewxj"},"content":" * Validates the supplied argument names and values.","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"tituschewxj"},"content":" * @param suppliedArguments the argument names","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If an argument is missing or invalid, or unrecognized.","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"tituschewxj"},"content":" public void validateSuppliedArguments(Argument[] suppliedArguments) throws ActionException {","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"tituschewxj"},"content":" validateArgumentsRecognized(suppliedArguments);","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"tituschewxj"},"content":" validateArgumentsPresentAndValid(suppliedArguments);","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"tituschewxj"},"content":" * Validates the argument names, that they are recognizable.","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"tituschewxj"},"content":" * @throws UnrecognizedArgumentException If an argument is unrecognizable.","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"tituschewxj"},"content":" private void validateArgumentsRecognized(Argument[] suppliedArguments) throws UnrecognizedArgumentException {","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"tituschewxj"},"content":" for (Argument suppliedArg : suppliedArguments) {","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"tituschewxj"},"content":" if (!hasArgumentName(suppliedArg)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"tituschewxj"},"content":" throw new UnrecognizedArgumentException(this, suppliedArg);","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"tituschewxj"},"content":" * Validates that all argument names expected are present and not invalid.","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If an argument is missing or invalid.","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"tituschewxj"},"content":" private void validateArgumentsPresentAndValid(Argument[] suppliedArguments) throws ActionException {","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"tituschewxj"},"content":" for (ExpectedArgument expectedArg : this.arguments) {","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"tituschewxj"},"content":" boolean isRecognized \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"tituschewxj"},"content":" for (Argument suppliedArg : suppliedArguments) {","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"tituschewxj"},"content":" if (expectedArg.hasSameArgumentName(suppliedArg)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"tituschewxj"},"content":" expectedArg.validateArgument(this, suppliedArg);","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"tituschewxj"},"content":" isRecognized \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"tituschewxj"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"tituschewxj"},"content":" if (!isRecognized) {","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"tituschewxj"},"content":" throw new MissingArgumentException(this, expectedArg);","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":202,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tituschewxj":203}},{"path":"src/main/java/chatbot/action/util/ExpectedArgument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.action.util;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.MissingArgumentValueException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.UnexpectedArgumentValueException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" * ExpectedArgument encapsulates the behaviour of arguments that a command can expect.","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003eAn ExpectedArgument list generates the usage hint for a command.","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public final class ExpectedArgument extends Argument {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this argument without a value.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this argument, which should not be null","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" public ExpectedArgument(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" super(name);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this argument with a value and name.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this argument, which should not be null","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * @param valueUsageName the value of this argument, as a descriptive name of its purpose","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" public ExpectedArgument(String name, String valueUsageName) {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" super(name, valueUsageName);","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" * Validates the supplied argument using this expected argument for the presence or lack of a value.","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" * If this value is null, then no value is expected.","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * @param command the command with that supplied argument","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" * @param suppliedArgument the other argument to compare with","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If the argument has a missing or unexpected value.","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" public void validateArgument(Command command, Argument suppliedArgument) throws ActionException {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" if (hasSameArgumentName(suppliedArgument)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" if (value !\u003d null \u0026\u0026 suppliedArgument.value \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" throw new MissingArgumentValueException(command, this);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" } else if (value \u003d\u003d null \u0026\u0026 suppliedArgument.value !\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" throw new UnexpectedArgumentValueException(command, suppliedArgument);","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tituschewxj":53}},{"path":"src/main/java/chatbot/io/InputParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.io;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.Action;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.exception.ActionException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.action.util.Argument;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"import java.util.List;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * Parses the input of a ChatBot into argument list.","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":"public class InputParser {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * Stores the scanner instance used to get the console input stream.","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" private static final Scanner SCANNER \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" * Parse the input string into it\u0027s command and arguments.","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * @return an action containing the command and it\u0027s arguments","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * @throws ActionException If invalid input is provided that results in an invalid command or arguments.","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" public static Action getParsedInput() throws ActionException {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" String input \u003d SCANNER.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" // command is always the first word in the input","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" String command \u003d input.trim().split(\" \")[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" return Action.of(command, parseArguments(input));","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * Parse the argument(s) from an input string.","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003e\"/\" is a special character, when at the start of a word, it denotes the start of an argument.","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" * \u003cli\u003e\"/\" not at the start of a word, will not be recognized as a special character.","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" * @param input the console input","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" * @return the parsed argument list","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" private static Argument[] parseArguments(String input) {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" // split input by words (space-separated)","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" String[] tokens \u003d input.split(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" List\u003cArgument\u003e arguments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" // scan through each word, check if it is an argument","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" // first word is always argument name","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" String argName \u003d tokens[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" StringBuilder argValue \u003d new StringBuilder();","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" for (int i \u003d 1; i \u003c tokens.length; i++) {","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" if (tokens[i].startsWith(\"/\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" arguments.add(parseArgument(argName, argValue.toString()));","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" // start parsing next argument","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" argName \u003d tokens[i].substring(1);","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" argValue.delete(0, argValue.length());","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" argValue","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" .append(tokens[i])","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" .append(\" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" arguments.add(parseArgument(argName, argValue.toString()));","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" Argument[] argumentsArray \u003d new Argument[arguments.size()];","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" arguments.toArray(argumentsArray);","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" return argumentsArray;","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" * An argument consists of the argument name and value.","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" * @param argumentName the string representing the argument name","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" * @param argumentValue the string representing the argument value","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" * @return the argument that is formed","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" private static Argument parseArgument(String argumentName, String argumentValue) {","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" argumentValue \u003d argumentValue.trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" argumentValue \u003d argumentValue.equals(\"\") ? null : argumentValue;","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" return new Argument(argumentName, argumentValue);","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tituschewxj":89}},{"path":"src/main/java/chatbot/io/ui/Printer.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.io.ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import java.util.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":" * Deals with interactions with the user by printing to the console. (System.out)","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"public class Printer {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * The indentation size.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" private static final String INDENT \u003d \" \";","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * Stores the messages to print.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" private static final Queue\u003cString\u003e printQueue \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" * Inserts a horizontal line.","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" private static void insertLine() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" System.out.println(INDENT + \"____________________________________________________________\");","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * Prints an indented message to the console.","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" * @param message the message to print in the console","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" private static void printMessage(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" String[] lines \u003d message.split(\"\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" for (String line : lines) {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" System.out.println(INDENT + line);","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" * Prints multiple lines of indented messages to the console.","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" * @param messages the messages, separated by lines","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" public static void printMessages(String... messages) {","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" insertLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" while (!printQueue.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" printMessage(printQueue.remove());","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" insertLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" for (String message : messages) {","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" printMessage(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" insertLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" * Add messages to printing queue for printing with the chat message later.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" * The messages are printed when {@link #printMessages} is called.","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" * @param messages the messages, separated by lines","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" public static void addToPrintQueue(String... messages) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" printQueue.addAll(Arrays.asList(messages));","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tituschewxj":68}},{"path":"src/main/java/chatbot/storage/LocalStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.io.ui.Printer;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import chatbot.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * This saves the {@link TaskList} into local storage in the directory {@value RELATIVE_PATH}","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * as a human-readable {@value SAVE_FILE_NAME} file,","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * where each line represents a task,","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * to allow users to view their tasks without running the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" * The format for a task is as follows:","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" * \u003cpre\u003e{@code \u003cindex\u003e [\u003ctype\u003e][\u003cstatus\u003e] \u003cname\u003e \u003cother_arguments\u003e}\u003c/pre\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" * The format is specified within each type of task.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * For example, a {@link Deadline}: {@code 4. [D][ ] read book (by: Sunday)}","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * Regular expressions are used to parse the file back into a {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":"public class LocalStorage {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" * The relative path from the project root where the save file is stored.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" public static String RELATIVE_PATH \u003d \"data/\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * The name and format of the save file stored.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" public static String SAVE_FILE_NAME \u003d \"save.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" * Tries to save the task list into local storage,","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" * overwriting the previous save file if any.","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" * @param taskList the task list instance to save into local storage","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" public static void saveTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" createSaveFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" File saveFile \u003d new File(RELATIVE_PATH + SAVE_FILE_NAME);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" // write to save file","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" FileWriter fw \u003d new FileWriter(saveFile, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" fw.write(taskList.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" // don\u0027t write to save file","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" * Creates the save file and folder if it doesn\u0027t exist.","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" * @return true if the file is created, otherwise false","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" private static boolean createSaveFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" File folder \u003d new File(RELATIVE_PATH);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" if (!folder.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" folder.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" File saveFile \u003d new File(RELATIVE_PATH + SAVE_FILE_NAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" return saveFile.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" * Loads the {@link TaskList} into the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" * @return the {@link TaskList} stored in local storage, or a new instance if none exists","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" public static TaskList loadTaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":" if (createSaveFile()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":" return new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"tituschewxj"},"content":" return readSaveFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"tituschewxj"},"content":" * Reads the save file and converts it to a {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"tituschewxj"},"content":" * @return the task list stored in local storage","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"tituschewxj"},"content":" private static TaskList readSaveFile() {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"tituschewxj"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"tituschewxj"},"content":" Path path \u003d Paths.get(RELATIVE_PATH, SAVE_FILE_NAME);","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"tituschewxj"},"content":" try (Stream\u003cString\u003e lines \u003d Files.lines(path)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"tituschewxj"},"content":" lines.forEach(line -\u003e taskList.add(TaskList.parseTaskListItem(line)));","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"tituschewxj"},"content":" Printer.addToPrintQueue(\"I have found and loaded a previous save file successfully!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"tituschewxj"},"content":" return taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"tituschewxj"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"tituschewxj"},"content":" Printer.addToPrintQueue(\"I cannot read the save file! Invalid file format!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"tituschewxj"},"content":" } catch (IllegalStateException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"tituschewxj"},"content":" Printer.addToPrintQueue(\"I cannot understand the save file! Invalid task format!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"tituschewxj"},"content":" return new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"tituschewxj":114}},{"path":"src/main/java/chatbot/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.value.DateStringValue;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * Deadlines: tasks that need to be done before a specific date/time.","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * Stores the deadline of this.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" private final DateStringValue deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" * The icon for the task type.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" static String TASK_TYPE_ICON \u003d \"D\";","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" * The format that a {@link Deadline} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" private static final String FORMAT \u003d String.format(\"[%s]%s (by: %s)\", TASK_TYPE_ICON, \"%s\", \"%s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" * The regex pattern that a {@link Deadline} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" private static final String REGEX_PATTERN \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" String.format(\"\\\\[%s\\\\](?\u003ctask\u003e.*)\\\\(by:(?\u003cby\u003e.*)\\\\)\", TASK_TYPE_ICON);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this deadline.","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this deadline","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * @param deadline the deadline (possibly date/time) of this chatbot.task","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" public Deadline(String name, String deadline) {","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" this.deadline \u003d new DateStringValue(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" * @param matcher the matcher that has the relevant captured groups","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" public Deadline(Matcher matcher) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" super(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" this.deadline \u003d new DateStringValue(matcher.group(\"by\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" * Parse a deadline from a human-readable string.","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" * @param readableString the deadline as a human-readable string","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" * @return the deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" public static Deadline parseDeadline(String readableString) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" Matcher matcher \u003d Pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" .compile(REGEX_PATTERN)","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" .matcher(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" matcher.find();","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" return new Deadline(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" return String.format(FORMAT, super.toString(), deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":79}},{"path":"src/main/java/chatbot/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.value.DateStringValue;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * Events: tasks that start at a specific date/time and ends at a specific data/time.","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * Stores the start time of this.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" private final DateStringValue startDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" * Stores the end time of this.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" private final DateStringValue endDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" * The icon for the task type.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" static final String TASK_TYPE_ICON \u003d \"E\";","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * The format/pattern that an {@link Event} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" private static final String FORMAT \u003d String.format(\"[%s]%s (from: %s to: %s)\", TASK_TYPE_ICON, \"%s\", \"%s\", \"%s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" * The regex pattern that a {@link Deadline} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" private static final String REGEX_PATTERN \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" String.format(\"\\\\[%s\\\\](?\u003ctask\u003e.*)\\\\(from:(?\u003cfrom\u003e.*)to:(?\u003cto\u003e.*)\\\\)\", TASK_TYPE_ICON);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this event.","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this event","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" * @param startDateTime the starting date/time of this event","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" * @param endDateTime the ending date/time of this event","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" public Event(String name, String startDateTime, String endDateTime) {","lastModifiedDate":"2024-01-21"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" this.startDateTime \u003d new DateStringValue(startDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" this.endDateTime \u003d new DateStringValue(endDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this event.","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" * @param matcher the matcher that has the relevant captured groups","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" public Event(Matcher matcher) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" super(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" this.startDateTime \u003d new DateStringValue(matcher.group(\"from\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" this.endDateTime \u003d new DateStringValue(matcher.group(\"to\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" * Parse an event from a human-readable string.","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" * @param readableString the event as a human-readable string","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" * @return the event","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" public static Event parseEvent(String readableString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" Matcher matcher \u003d Pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" .compile(REGEX_PATTERN)","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" .matcher(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" matcher.find();","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" return new Event(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" return String.format(FORMAT, super.toString(), startDateTime, endDateTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":86}},{"path":"src/main/java/chatbot/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * Encapsulates the behaviour of a task.","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * The name of this task.","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" private final String name;","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * Whether this task is completed.","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" private boolean isCompleted \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" * The format that a {@link Task} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" private static final String FORMAT \u003d \"[%s] %s\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * The regex pattern that a {@link Task} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" private static final String REGEX_PATTERN \u003d \"\\\\[(?\u003cstatus\u003e.)\\\\](?\u003cname\u003e.*)\";","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" * The text icon to indicate that a task is completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" private static final String COMPLETED_ICON \u003d \"X\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this task.","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this task","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" this.name \u003d name.trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this task.","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" * @param matcher the matcher that has the relevant captured groups","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" public Task(Matcher matcher) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" matcher \u003d Pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" .compile(REGEX_PATTERN)","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" .matcher(matcher.group(\"task\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" matcher.find();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" this.isCompleted \u003d isStatusIconCompleted(matcher.group(\"status\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" this.name \u003d matcher.group(\"name\").trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" * Parse a task from a human-readable string.","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" * @param readableString the task as a human-readable string","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" * @return the task","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" static Task parseTask(String readableString) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" // determine the type of chatbot.task","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" String taskType \u003d readableString.substring(1, 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" if (taskType.equals(Deadline.TASK_TYPE_ICON)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" return Deadline.parseDeadline(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" } else if (taskType.equals(Event.TASK_TYPE_ICON)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" return Event.parseEvent(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" } else if (taskType.equals(ToDo.TASK_TYPE_ICON)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" return ToDo.parseToDo(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" throw new IllegalStateException(\"The string doesn\u0027t match any task type!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" * Gets a human-readable description of this task.","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" * @return this task in a human-readable string","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":90,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":91,"author":{"gitId":"tituschewxj"},"content":" return String.format(FORMAT, getStatusIcon(), name);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":93,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":94,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"tituschewxj"},"content":" * Mark this task as done.","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":97,"author":{"gitId":"tituschewxj"},"content":" public void mark() {","lastModifiedDate":"2024-01-21"},{"lineNumber":98,"author":{"gitId":"tituschewxj"},"content":" isCompleted \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":99,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":100,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":101,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":102,"author":{"gitId":"tituschewxj"},"content":" * Change the status of this task back to not done.","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":104,"author":{"gitId":"tituschewxj"},"content":" public void unmark() {","lastModifiedDate":"2024-01-21"},{"lineNumber":105,"author":{"gitId":"tituschewxj"},"content":" isCompleted \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":106,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":107,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"tituschewxj"},"content":" * Gets the icon of the text that depends on the task completion status.","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"tituschewxj"},"content":" * @return the icon","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"tituschewxj"},"content":" private String getStatusIcon() {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"tituschewxj"},"content":" return (isCompleted) ? COMPLETED_ICON : \" \";","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"tituschewxj"},"content":" * Checks if the status icon is completed","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"tituschewxj"},"content":" * @return true if the icon is {@value COMPLETED_ICON}, otherwise false","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"tituschewxj"},"content":" private boolean isStatusIconCompleted(String statusIcon) {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"tituschewxj"},"content":" return COMPLETED_ICON.equals(statusIcon);","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":125}},{"path":"src/main/java/chatbot/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import chatbot.storage.LocalStorage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import java.util.List;","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * This class encapsulates a {@link Task} list.","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"public class TaskList {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" * Stores the tasks.","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" private final List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" * @param tasks takes in a task list","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" * Checks if the index is a valid index in this list.","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" * @param index the index of in the task list","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * @return true if the index is valid, otherwise false","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" public boolean isValidIndex(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" return index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size();","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" * Add a to-do to this list.","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of the to-do to add","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is added","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" public Task addTodo(String name) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" return add(new ToDo(name));","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":" * Adds a task to this list, saving the task list to local storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" * @param \u003cT\u003e the type of task to add","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" * @param task the task to add","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is added","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" public \u003cT extends Task\u003e Task add(T task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" LocalStorage.saveTaskList(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" return task;","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" * Add a deadline to this list.","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of the to-do to add","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is added","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" public Task addDeadline(String name, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" return add(new Deadline(name, by));","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" * Add an event to this list.","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of the to-do to add","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is added","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"tituschewxj"},"content":" public Task addEvent(String name, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"tituschewxj"},"content":" return add(new Event(name, from, to));","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":90,"author":{"gitId":"tituschewxj"},"content":" * Mark the task as done.","lastModifiedDate":"2024-01-21"},{"lineNumber":91,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"tituschewxj"},"content":" * @param index the validated index of the task (0-indexed)","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is marked","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"tituschewxj"},"content":" public Task markTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"tituschewxj"},"content":" tasks.get(index).mark();","lastModifiedDate":"2024-01-21"},{"lineNumber":97,"author":{"gitId":"tituschewxj"},"content":" LocalStorage.saveTaskList(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"tituschewxj"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":100,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":101,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":102,"author":{"gitId":"tituschewxj"},"content":" * Mark the task as not done.","lastModifiedDate":"2024-01-21"},{"lineNumber":103,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"tituschewxj"},"content":" * @param index the validated index of the task (0-indexed)","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is marked","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":107,"author":{"gitId":"tituschewxj"},"content":" public Task unmarkTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"tituschewxj"},"content":" tasks.get(index).unmark();","lastModifiedDate":"2024-01-21"},{"lineNumber":109,"author":{"gitId":"tituschewxj"},"content":" LocalStorage.saveTaskList(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"tituschewxj"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":112,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":113,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":114,"author":{"gitId":"tituschewxj"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"tituschewxj"},"content":" * @param index the validated index of the task (0-indexed)","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"tituschewxj"},"content":" * @return the task that is marked","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":119,"author":{"gitId":"tituschewxj"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"tituschewxj"},"content":" Task task \u003d tasks.remove(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"tituschewxj"},"content":" LocalStorage.saveTaskList(this);","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"tituschewxj"},"content":" return task;","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":124,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":125,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"tituschewxj"},"content":" * Gets the number of tasks in this task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"tituschewxj"},"content":" * @return the size as an int","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-22"},{"lineNumber":130,"author":{"gitId":"tituschewxj"},"content":" public int size() {","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"tituschewxj"},"content":" return tasks.size();","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":133,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"tituschewxj"},"content":" * Checks if the task list is empty.","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"tituschewxj"},"content":" * @return true if the task list is empty, otherwise false","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"tituschewxj"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"tituschewxj"},"content":" return tasks.size() \u003d\u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":144,"author":{"gitId":"tituschewxj"},"content":" * Gets a human-readable description of this task list.","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"tituschewxj"},"content":" * @return this task list as a human-readable string","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":148,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":149,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":150,"author":{"gitId":"tituschewxj"},"content":" StringBuilder message \u003d new StringBuilder();","lastModifiedDate":"2024-01-21"},{"lineNumber":151,"author":{"gitId":"tituschewxj"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-21"},{"lineNumber":152,"author":{"gitId":"tituschewxj"},"content":" message.append(String.format(\"%d. %s\\n\", i + 1, tasks.get(i)));","lastModifiedDate":"2024-01-21"},{"lineNumber":153,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":154,"author":{"gitId":"tituschewxj"},"content":" return message.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":155,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":156,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"tituschewxj"},"content":" * Parse a task list item from a human-readable string.","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"tituschewxj"},"content":" * @param readableString the task list item as a human-readable string","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"tituschewxj"},"content":" * @return the task","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern.","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"tituschewxj"},"content":" public static Task parseTaskListItem(String readableString) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"tituschewxj"},"content":" Matcher matcher \u003d Pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"tituschewxj"},"content":" .compile(\"\\\\d+\\\\.(?\u003ctask\u003e.*)\")","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"tituschewxj"},"content":" .matcher(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"tituschewxj"},"content":" matcher.find();","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"tituschewxj"},"content":" String parsedString \u003d matcher.group(\"task\").trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"tituschewxj"},"content":" return Task.parseTask(parsedString);","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":173}},{"path":"src/main/java/chatbot/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":" * ToDos: tasks without any date/time attached to it.","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * The icon for the task type.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" static final String TASK_TYPE_ICON \u003d \"T\";","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" * The format that a {@link ToDo} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" private static final String FORMAT \u003d String.format(\"[%s]%s\", TASK_TYPE_ICON, \"%s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" * The regex pattern that a {@link Deadline} takes.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" private static final String REGEX_PATTERN \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" String.format(\"\\\\[%s\\\\](?\u003ctask\u003e.*)\", TASK_TYPE_ICON);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this to-do.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" * @param name the name of this to-do","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":" super(name);","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" * Constructor for this to-do.","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":" * @param matcher the matcher that has the relevant captured groups","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" * @throws IllegalStateException If the regex doesn\u0027t match the pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" public ToDo(Matcher matcher) throws IllegalStateException {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" super(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":" * Parse a to-do from a human-readable string.","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" * @param readableString the to-do as a human-readable string","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" * @return the to-do","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" public static ToDo parseToDo(String readableString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" Matcher matcher \u003d Pattern","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" .compile(REGEX_PATTERN)","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" .matcher(readableString);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" matcher.find();","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" return new ToDo(matcher);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":" return String.format(FORMAT, super.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"tituschewxj":69}},{"path":"src/main/java/chatbot/value/DateStringValue.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"package chatbot.value;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"import java.util.Locale;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":" * This represents minimally a {@link String},","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":" * but can also represent a {@link LocalDate} if possible.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":" * If the string value is in a suitable date format,","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":" * it is stored as a {@link LocalDate},","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":" * and printed as a date in the {@value DISPLAY_PATTERN} format.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":" * @author Titus Chew","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":"public class DateStringValue {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":" * The {@link String} value stored.","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":" private final String stringValue;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":" * The {@link LocalDate} value stored.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":" private final LocalDate dateValue;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":" * The {@link String} pattern for displaying dates.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":" private static final String DISPLAY_PATTERN \u003d \"MMM d yyyy\";","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":" * The {#@link DateTimeFormatter} for displaying dates","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"tituschewxj"},"content":" private static final DateTimeFormatter DISPLAY_DATE_TIME_FORMATTER \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"tituschewxj"},"content":" DateTimeFormatter.ofPattern(DISPLAY_PATTERN, Locale.ENGLISH);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"tituschewxj"},"content":" * The {@link DateTimeFormatter} for a string value.","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"tituschewxj"},"content":" private static final DateTimeFormatter DATE_TIME_FORMATTER \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"tituschewxj"},"content":" .appendOptional(DISPLAY_DATE_TIME_FORMATTER)","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"tituschewxj"},"content":" .appendOptional(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\", Locale.ENGLISH))","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"tituschewxj"},"content":" .toFormatter();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"tituschewxj"},"content":" * Takes in a string, but tries to convert it to the value.","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"tituschewxj"},"content":" * @param value the value as a {@link String}","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"tituschewxj"},"content":" public DateStringValue(String value) {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"tituschewxj"},"content":" value \u003d value.trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"tituschewxj"},"content":" this.stringValue \u003d value;","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"tituschewxj"},"content":" LocalDate date \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"tituschewxj"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"tituschewxj"},"content":" date \u003d LocalDate.parse(value, DATE_TIME_FORMATTER);","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"tituschewxj"},"content":" } catch(DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"tituschewxj"},"content":" // invalid date","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"tituschewxj"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"tituschewxj"},"content":" this.dateValue \u003d date;","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"tituschewxj"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"tituschewxj"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"tituschewxj"},"content":" * Gets a human-readable {@link String} of this.","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"tituschewxj"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"tituschewxj"},"content":" * @return the human-readable {@link String}","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"tituschewxj"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"tituschewxj"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"tituschewxj"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"tituschewxj"},"content":" if (dateValue !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"tituschewxj"},"content":" return dateValue.format(DISPLAY_DATE_TIME_FORMATTER);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"tituschewxj"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"tituschewxj"},"content":" return stringValue;","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"tituschewxj"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"tituschewxj"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"tituschewxj":81}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tituschewxj"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"tituschewxj"},"content":"list tasks","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tituschewxj"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tituschewxj"},"content":"todo return book","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"tituschewxj"},"content":"mark","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tituschewxj"},"content":"mark two","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tituschewxj"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tituschewxj"},"content":"unmark","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tituschewxj"},"content":"unmark two","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tituschewxj"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tituschewxj"},"content":"mark 3","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tituschewxj"},"content":"todo","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tituschewxj"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"tituschewxj"},"content":"deadline return book","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"tituschewxj"},"content":"deadline return book /on Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"tituschewxj"},"content":"deadline return book /by 2011-01-23","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"tituschewxj"},"content":"event /from Mon /to Tue","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"tituschewxj"},"content":"event project meeting /at Mon","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"tituschewxj"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"tituschewxj"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"tituschewxj"},"content":"deadline /by Tue","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"tituschewxj"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"tituschewxj"},"content":"mark 4","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"tituschewxj"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"tituschewxj"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"tituschewxj"},"content":"exit","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"tituschewxj"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tituschewxj":37}},{"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":"tituschewxj"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\chatbot\\*.java","lastModifiedDate":"2024-01-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":"-"},"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":"tituschewxj"},"content":"java -classpath ..\\bin chatbot.ChatBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"tituschewxj":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":"tituschewxj"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/chatbot/*.java","lastModifiedDate":"2024-01-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":"tituschewxj"},"content":"java -classpath ../bin chatbot.ChatBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-30"},{"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":{"tituschewxj":2,"-":36}}] diff --git a/tituschewxj_ip_master/commits.json b/tituschewxj_ip_master/commits.json index e642bdde..522d646e 100644 --- a/tituschewxj_ip_master/commits.json +++ b/tituschewxj_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tituschewxj":[{"date":"2024-01-21","commitResults":[{"hash":"030bbf92c5118ccb71f9fb85e11e5dbe0f89b266","isMergeCommit":false,"messageTitle":"Add ChatBot.java","messageBody":"Add a class to encapsulate the behaviour of a Chat Bot.\n","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"a5702c23100eb11954e157d8c05cc65a204ede26","isMergeCommit":false,"messageTitle":"Update Duke main method","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"7c148d860a88a24c581523af3dbc83ef3358cbee","isMergeCommit":false,"messageTitle":"ChatBot.java: Add indentation and read input","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":9}}},{"hash":"0465e630be9fa9e030ca4ad6d0d15c597a96b9d7","isMergeCommit":false,"messageTitle":"Duke.java: Run chatbot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"bd25984417aea003e8fe4835ac26fbd59f75d8f0","isMergeCommit":false,"messageTitle":"ChatBot.java: Add adding and listing functionality","messageBody":"Parsing of input with commands Enum is used to help identify which command is being called.\n","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":8}}},{"hash":"7b14a320b7fc2ad019f9e1c68bfacfb37f7ea40c","isMergeCommit":false,"messageTitle":"ChatBot.java: Refactor indentation code","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"8175dd60ef16a2768770bb55dc60475e78d117c8","isMergeCommit":false,"messageTitle":"Task.java: Create Task Class","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":3}}},{"hash":"12fb24e58de4ff1d84aea95f1d9879e86f8e87f8","isMergeCommit":false,"messageTitle":"ChatBot.java: Parse mark and unmark commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"04a980578132408287e67ba63e541a3925fff970","isMergeCommit":false,"messageTitle":"Create TaskList Class","messageBody":"","tags":["Level-3","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":14}}},{"hash":"74d375619ac32cd324719d83843897078326f3bb","isMergeCommit":false,"messageTitle":"Refactor if-else conditions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":8}}},{"hash":"f6c82b0e16ec288107a35ee79ca66518ba745703","isMergeCommit":false,"messageTitle":"Add Deadline Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"9ac47ee729babcc1389f40e40566410f39d8b607","isMergeCommit":false,"messageTitle":"Add ToDo Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"085f8e85662a6fcc126ea3ac5ef77a8b0e45429f","isMergeCommit":false,"messageTitle":"Add Event Class","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"c2fa549079fe38e82ec36e41369b86095c2dfc7f","isMergeCommit":false,"messageTitle":"Deadline.java: Fix toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"cb76484b4789dbd99dbba9af83ac2780bdeb8c53","isMergeCommit":false,"messageTitle":"Add Argument Class","messageBody":"This class encapsulates an argument and it\u0027s value.\n","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"24bbbe782b75b8793e1eaca2dd77321c650fdda2","isMergeCommit":false,"messageTitle":"Refactor Command Enum to separate file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"3df2b95aaf181e4662092ac5f883a133d545f3db","isMergeCommit":false,"messageTitle":"Add Action class","messageBody":"This class encapsulates the command and it\u0027s arguments.\n","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"06d4d415a78cb3a3ce73b41f22030af434d31d59","isMergeCommit":false,"messageTitle":"Add InputParser class","messageBody":"This class handles the parsing of the input and it\u0027s arguments.\n","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":0}}},{"hash":"2de41dbb909b9a5346907aa16666f0681369bc7a","isMergeCommit":false,"messageTitle":"TaskList.java: Add todo, deadline, event tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"952a6d3d460ca70a2bb880b3af29aab2564a9743","isMergeCommit":false,"messageTitle":"TaskList.java: Add methods","messageBody":"Add methods to get most recent task and get number of tasks.\n","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"0b28406102e9a967ce70f081502021f1629428ae","isMergeCommit":false,"messageTitle":"Chatbot.java: Refactor away Command Enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":38}}},{"hash":"80178f8807cb8585f2cf371b2a17e196f82416bc","isMergeCommit":false,"messageTitle":"Chatbot.java: Refactor away input parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":49}}},{"hash":"293072abe988c67df033053fcc17fcd390a60b3b","isMergeCommit":false,"messageTitle":"Chatbot.java: Add Actions to executable operations","messageBody":"Abstract away the complexity of the commands and arguments with Action objects.\n","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":22}}},{"hash":"a5ed208b0eff6b8ffa83824ed1430b3d3af7ee95","isMergeCommit":false,"messageTitle":"InputParser.java: Trim whitespace in arguments","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":3}}},{"hash":"cc2ad4156aa8a7da0af11e6c682089b66262ff30","isMergeCommit":false,"messageTitle":"Argument.java: Method to match argument names","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":8}}},{"hash":"edd1520a9b6d0b7ffe361f334dda62bd09237b66","isMergeCommit":false,"messageTitle":"Add Printer class","messageBody":"Add Printer.java to encapsulate the printing of ChatBot messages to the console.\n","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":33}}},{"hash":"fdd8abfa565bd96f4c4cf27b52da8e5cd55815d5","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0}}},{"hash":"6ce36dbab84a2d53f44d22fe4f9112d55c0c2db4","isMergeCommit":false,"messageTitle":"Handle invalid command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"2268d3a42d6fb7402ee224c2db06e1413fecab17","isMergeCommit":false,"messageTitle":"Rename methods and enums","messageBody":"To make the ChatBot methods and enums names more consistent and readable.\n","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":26}}},{"hash":"cdfde896b1da5b37df915ec77eca8a25a12e19e2","isMergeCommit":false,"messageTitle":"Remove add command","messageBody":"Adding a generic task no longer happens due to the implementation of invalid commands.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":16}}},{"hash":"5163d62686c4429c2f3937c6f79132fd47ded737","isMergeCommit":false,"messageTitle":"Update Commands enum with name and usage","messageBody":"Store command names and usage in the enum.\n","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":26}}},{"hash":"d02a0facf85bd29952ab687cbc81c05372db3211","isMergeCommit":false,"messageTitle":"Add validation to commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":10}}}]},{"date":"2024-01-23","commitResults":[{"hash":"c244d764d3b50e3b597a44453fc7ab7479830e2c","isMergeCommit":false,"messageTitle":"Refactor Command to use Arguments","messageBody":"Command isn\u0027t able to validate an Action, but requires a separate check in ChatBot.java.\n\nUsing Arguments allows for implementing more versatile commands, and simplifies the process of validating of the arguments.\n\nLet\u0027s,\n* Command take in Arguments that define its name and usage.\n","fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":86}}},{"hash":"afa567c0e9e3c3d8025e47ca7a97b8ed8cd90797","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2}}},{"hash":"9808cb63c6bce2bcf55c2a1e7fb0abd1e0f9819c","isMergeCommit":false,"messageTitle":"Refactor and restructure codebase","messageBody":"Making subtypes of Action that perform behaviour related to each command follows the principles object-oriented programming.\n\nLet\u0027s,\n* Make subclasses for Action to encapsulate the behaviour of different actions.\n* Move classes into their packages to organize the codebase.\n","fileTypesAndContributionMap":{"java":{"insertions":449,"deletions":274}}},{"hash":"cda68eab7dadc0b306c2e5f87d058e157ad0e16b","isMergeCommit":false,"messageTitle":"Command.java: Update generateUsageHint method","messageBody":"Let\u0027s remove the spacing at the end of the usage hint.\n","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"01c004f5cb69b6276fefd7ca992c9fcbd67d06db","isMergeCommit":false,"messageTitle":"Update javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":170,"deletions":86}}},{"hash":"19fb477352f3892e88e4a4cd6012d79074b360f1","isMergeCommit":false,"messageTitle":"Add Exceptions to handle unexpected input","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":151,"deletions":0}}},{"hash":"cfbba91529fb77ed146c1eae15175f93eebe5789","isMergeCommit":false,"messageTitle":"Use exceptions to handle errors","messageBody":"InvalidAction.java is removed as an exception handles the state when an invalid argument is entered.\n\nLet\u0027s,\n* Remove InvalidAction.java\n* Use Exceptions to handle errors\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":212,"deletions":111}}},{"hash":"94b063a33714d111fda6da4b3dfff9a055209f38","isMergeCommit":false,"messageTitle":"Add delete task command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":124,"deletions":52}}},{"hash":"d61e158c27622ec17020c3a2e6d4c4681df5d6b6","isMergeCommit":false,"messageTitle":"action: Refactor handleAddSuccess","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":20}}},{"hash":"3c4996cd6178fc2d85406b610125a0d48c43b96d","isMergeCommit":false,"messageTitle":"action.exception: Update exception messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"ab98c9345000a6803d28e62508361b6466bd1ed1","isMergeCommit":false,"messageTitle":"text-ui-test: Update test cases","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":23,"deletions":0}}},{"hash":"f3b519e8b0eca68ea0af2996b3328279d24d91ab","isMergeCommit":false,"messageTitle":"Refactor: Move Argument and Command to action.util","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"040a1d40944412fb094a3fadcbbd3455e03c3d78","isMergeCommit":false,"messageTitle":"InputParser.java: Improve input parsing","messageBody":"Only when a word starts with \"/\", will it be considered as the start of a new argument.\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":50,"deletions":37}}},{"hash":"a4980b0ca43fe7d3bd406a9cfe3dbd8af276aea4","isMergeCommit":false,"messageTitle":"UnrecognizedArgumentException.java: Refactor constructor arguments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-24","commitResults":[{"hash":"dc67bc88fff5a4d75521b559644ef05bdad33d8d","isMergeCommit":false,"messageTitle":"Move validation of missing values to Action constructor","messageBody":"This refactoring makes the code cleaner.\n\nLet\u0027s,\n* Move validation of missing arguments to Action constructor\n* Make variables in Argument and Command private\n* Add UnexpectedArgumentValueException.java\n* Update EXPECTED.TXT with new behaviour from UnexpectedArgumentValueException\n","fileTypesAndContributionMap":{"java":{"insertions":196,"deletions":127}}},{"hash":"87aba22ab05df6d97731a727b44398617ec021a4","isMergeCommit":false,"messageTitle":"action package: Remove throw exception when no exception is thrown","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":12}}}]},{"date":"2024-01-25","commitResults":[{"hash":"f1e86f270a0bc9b364430726f82691276d391a53","isMergeCommit":false,"messageTitle":"Action.java: Add factory method","messageBody":"The logic for determining the type of Action created should not be in InputParser.java, but in Action.java.\n","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":25}}},{"hash":"240abe4cde92a99281a5b9da499be5262b88b2d8","isMergeCommit":false,"messageTitle":"Add ExpectedArgument.java","messageBody":"Since Arguments in Command.java are being misused as expected arguments rather than supplied arguments.\n","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":51}}}]},{"date":"2024-01-29","commitResults":[{"hash":"15b7c82704a3e11ca103868f0e2b3d0029d29789","isMergeCommit":false,"messageTitle":"Validate in Command.java","messageBody":"Move the logic of validateExpectedArguments to Command class.\n\nCommand should encapsulate the logic of validating expected arguments.\n\nValidation of arguments is now in one less place.\n","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":17}}},{"hash":"019b92402d967a63868a8bc27ce42fdf8209e920","isMergeCommit":false,"messageTitle":"Add save feature","messageBody":"Saves the tasks in the hard disk automatically whenever the task list changes. The tasks are saved as a human-readable list, in order for the user to read their list using the save file.\n\nChanges are made to support the new save feature.\n\nLet\u0027s,\n* save the task list automatically\n* update tasks to support reading of a task string\n* add LocalStorage.java to encapsulate storing of files\n* add a print queue to store messages such as the message when a save file is found, which can be printed together with the chat message\n* add ./data/ folder to git ignore\n","fileTypesAndContributionMap":{"java":{"insertions":429,"deletions":28}}},{"hash":"ab04bcb3f474704d2fc1a3de356e341e4ff6422f","isMergeCommit":true,"messageTitle":"Merge save with master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tituschewxj":{"java":1911,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":37}},"authorContributionVariance":{"tituschewxj":335676.38},"authorDisplayNameMap":{"tituschewxj":"CS2103T-F13-1 TITU.. JUN"}} +{"authorDailyContributionsMap":{"tituschewxj":[{"date":"2024-01-21","commitResults":[{"hash":"030bbf92c5118ccb71f9fb85e11e5dbe0f89b266","isMergeCommit":false,"messageTitle":"Add ChatBot.java","messageBody":"Add a class to encapsulate the behaviour of a Chat Bot.\n","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"a5702c23100eb11954e157d8c05cc65a204ede26","isMergeCommit":false,"messageTitle":"Update Duke main method","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"7c148d860a88a24c581523af3dbc83ef3358cbee","isMergeCommit":false,"messageTitle":"ChatBot.java: Add indentation and read input","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":9}}},{"hash":"0465e630be9fa9e030ca4ad6d0d15c597a96b9d7","isMergeCommit":false,"messageTitle":"Duke.java: Run chatbot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}},{"hash":"bd25984417aea003e8fe4835ac26fbd59f75d8f0","isMergeCommit":false,"messageTitle":"ChatBot.java: Add adding and listing functionality","messageBody":"Parsing of input with commands Enum is used to help identify which command is being called.\n","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":8}}},{"hash":"7b14a320b7fc2ad019f9e1c68bfacfb37f7ea40c","isMergeCommit":false,"messageTitle":"ChatBot.java: Refactor indentation code","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"8175dd60ef16a2768770bb55dc60475e78d117c8","isMergeCommit":false,"messageTitle":"Task.java: Create Task Class","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":3}}},{"hash":"12fb24e58de4ff1d84aea95f1d9879e86f8e87f8","isMergeCommit":false,"messageTitle":"ChatBot.java: Parse mark and unmark commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"04a980578132408287e67ba63e541a3925fff970","isMergeCommit":false,"messageTitle":"Create TaskList Class","messageBody":"","tags":["Level-3","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":14}}},{"hash":"74d375619ac32cd324719d83843897078326f3bb","isMergeCommit":false,"messageTitle":"Refactor if-else conditions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":8}}},{"hash":"f6c82b0e16ec288107a35ee79ca66518ba745703","isMergeCommit":false,"messageTitle":"Add Deadline Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"9ac47ee729babcc1389f40e40566410f39d8b607","isMergeCommit":false,"messageTitle":"Add ToDo Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"085f8e85662a6fcc126ea3ac5ef77a8b0e45429f","isMergeCommit":false,"messageTitle":"Add Event Class","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"c2fa549079fe38e82ec36e41369b86095c2dfc7f","isMergeCommit":false,"messageTitle":"Deadline.java: Fix toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"cb76484b4789dbd99dbba9af83ac2780bdeb8c53","isMergeCommit":false,"messageTitle":"Add Argument Class","messageBody":"This class encapsulates an argument and it\u0027s value.\n","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"24bbbe782b75b8793e1eaca2dd77321c650fdda2","isMergeCommit":false,"messageTitle":"Refactor Command Enum to separate file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"3df2b95aaf181e4662092ac5f883a133d545f3db","isMergeCommit":false,"messageTitle":"Add Action class","messageBody":"This class encapsulates the command and it\u0027s arguments.\n","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"06d4d415a78cb3a3ce73b41f22030af434d31d59","isMergeCommit":false,"messageTitle":"Add InputParser class","messageBody":"This class handles the parsing of the input and it\u0027s arguments.\n","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":0}}},{"hash":"2de41dbb909b9a5346907aa16666f0681369bc7a","isMergeCommit":false,"messageTitle":"TaskList.java: Add todo, deadline, event tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"952a6d3d460ca70a2bb880b3af29aab2564a9743","isMergeCommit":false,"messageTitle":"TaskList.java: Add methods","messageBody":"Add methods to get most recent task and get number of tasks.\n","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"0b28406102e9a967ce70f081502021f1629428ae","isMergeCommit":false,"messageTitle":"Chatbot.java: Refactor away Command Enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":38}}},{"hash":"80178f8807cb8585f2cf371b2a17e196f82416bc","isMergeCommit":false,"messageTitle":"Chatbot.java: Refactor away input parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":49}}},{"hash":"293072abe988c67df033053fcc17fcd390a60b3b","isMergeCommit":false,"messageTitle":"Chatbot.java: Add Actions to executable operations","messageBody":"Abstract away the complexity of the commands and arguments with Action objects.\n","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":22}}},{"hash":"a5ed208b0eff6b8ffa83824ed1430b3d3af7ee95","isMergeCommit":false,"messageTitle":"InputParser.java: Trim whitespace in arguments","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":3}}},{"hash":"cc2ad4156aa8a7da0af11e6c682089b66262ff30","isMergeCommit":false,"messageTitle":"Argument.java: Method to match argument names","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":8}}},{"hash":"edd1520a9b6d0b7ffe361f334dda62bd09237b66","isMergeCommit":false,"messageTitle":"Add Printer class","messageBody":"Add Printer.java to encapsulate the printing of ChatBot messages to the console.\n","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":33}}},{"hash":"fdd8abfa565bd96f4c4cf27b52da8e5cd55815d5","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0}}},{"hash":"6ce36dbab84a2d53f44d22fe4f9112d55c0c2db4","isMergeCommit":false,"messageTitle":"Handle invalid command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"2268d3a42d6fb7402ee224c2db06e1413fecab17","isMergeCommit":false,"messageTitle":"Rename methods and enums","messageBody":"To make the ChatBot methods and enums names more consistent and readable.\n","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":26}}},{"hash":"cdfde896b1da5b37df915ec77eca8a25a12e19e2","isMergeCommit":false,"messageTitle":"Remove add command","messageBody":"Adding a generic task no longer happens due to the implementation of invalid commands.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":16}}},{"hash":"5163d62686c4429c2f3937c6f79132fd47ded737","isMergeCommit":false,"messageTitle":"Update Commands enum with name and usage","messageBody":"Store command names and usage in the enum.\n","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":26}}},{"hash":"d02a0facf85bd29952ab687cbc81c05372db3211","isMergeCommit":false,"messageTitle":"Add validation to commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":10}}}]},{"date":"2024-01-23","commitResults":[{"hash":"c244d764d3b50e3b597a44453fc7ab7479830e2c","isMergeCommit":false,"messageTitle":"Refactor Command to use Arguments","messageBody":"Command isn\u0027t able to validate an Action, but requires a separate check in ChatBot.java.\n\nUsing Arguments allows for implementing more versatile commands, and simplifies the process of validating of the arguments.\n\nLet\u0027s,\n* Command take in Arguments that define its name and usage.\n","fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":86}}},{"hash":"afa567c0e9e3c3d8025e47ca7a97b8ed8cd90797","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2}}},{"hash":"9808cb63c6bce2bcf55c2a1e7fb0abd1e0f9819c","isMergeCommit":false,"messageTitle":"Refactor and restructure codebase","messageBody":"Making subtypes of Action that perform behaviour related to each command follows the principles object-oriented programming.\n\nLet\u0027s,\n* Make subclasses for Action to encapsulate the behaviour of different actions.\n* Move classes into their packages to organize the codebase.\n","fileTypesAndContributionMap":{"java":{"insertions":449,"deletions":274}}},{"hash":"cda68eab7dadc0b306c2e5f87d058e157ad0e16b","isMergeCommit":false,"messageTitle":"Command.java: Update generateUsageHint method","messageBody":"Let\u0027s remove the spacing at the end of the usage hint.\n","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"01c004f5cb69b6276fefd7ca992c9fcbd67d06db","isMergeCommit":false,"messageTitle":"Update javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":170,"deletions":86}}},{"hash":"19fb477352f3892e88e4a4cd6012d79074b360f1","isMergeCommit":false,"messageTitle":"Add Exceptions to handle unexpected input","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":151,"deletions":0}}},{"hash":"cfbba91529fb77ed146c1eae15175f93eebe5789","isMergeCommit":false,"messageTitle":"Use exceptions to handle errors","messageBody":"InvalidAction.java is removed as an exception handles the state when an invalid argument is entered.\n\nLet\u0027s,\n* Remove InvalidAction.java\n* Use Exceptions to handle errors\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":212,"deletions":111}}},{"hash":"94b063a33714d111fda6da4b3dfff9a055209f38","isMergeCommit":false,"messageTitle":"Add delete task command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":124,"deletions":52}}},{"hash":"d61e158c27622ec17020c3a2e6d4c4681df5d6b6","isMergeCommit":false,"messageTitle":"action: Refactor handleAddSuccess","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":20}}},{"hash":"3c4996cd6178fc2d85406b610125a0d48c43b96d","isMergeCommit":false,"messageTitle":"action.exception: Update exception messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"ab98c9345000a6803d28e62508361b6466bd1ed1","isMergeCommit":false,"messageTitle":"text-ui-test: Update test cases","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":23,"deletions":0}}},{"hash":"f3b519e8b0eca68ea0af2996b3328279d24d91ab","isMergeCommit":false,"messageTitle":"Refactor: Move Argument and Command to action.util","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"040a1d40944412fb094a3fadcbbd3455e03c3d78","isMergeCommit":false,"messageTitle":"InputParser.java: Improve input parsing","messageBody":"Only when a word starts with \"/\", will it be considered as the start of a new argument.\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":50,"deletions":37}}},{"hash":"a4980b0ca43fe7d3bd406a9cfe3dbd8af276aea4","isMergeCommit":false,"messageTitle":"UnrecognizedArgumentException.java: Refactor constructor arguments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-24","commitResults":[{"hash":"dc67bc88fff5a4d75521b559644ef05bdad33d8d","isMergeCommit":false,"messageTitle":"Move validation of missing values to Action constructor","messageBody":"This refactoring makes the code cleaner.\n\nLet\u0027s,\n* Move validation of missing arguments to Action constructor\n* Make variables in Argument and Command private\n* Add UnexpectedArgumentValueException.java\n* Update EXPECTED.TXT with new behaviour from UnexpectedArgumentValueException\n","fileTypesAndContributionMap":{"java":{"insertions":196,"deletions":127}}},{"hash":"87aba22ab05df6d97731a727b44398617ec021a4","isMergeCommit":false,"messageTitle":"action package: Remove throw exception when no exception is thrown","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":12}}}]},{"date":"2024-01-25","commitResults":[{"hash":"f1e86f270a0bc9b364430726f82691276d391a53","isMergeCommit":false,"messageTitle":"Action.java: Add factory method","messageBody":"The logic for determining the type of Action created should not be in InputParser.java, but in Action.java.\n","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":25}}},{"hash":"240abe4cde92a99281a5b9da499be5262b88b2d8","isMergeCommit":false,"messageTitle":"Add ExpectedArgument.java","messageBody":"Since Arguments in Command.java are being misused as expected arguments rather than supplied arguments.\n","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":51}}}]},{"date":"2024-01-29","commitResults":[{"hash":"15b7c82704a3e11ca103868f0e2b3d0029d29789","isMergeCommit":false,"messageTitle":"Validate in Command.java","messageBody":"Move the logic of validateExpectedArguments to Command class.\n\nCommand should encapsulate the logic of validating expected arguments.\n\nValidation of arguments is now in one less place.\n","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":17}}},{"hash":"019b92402d967a63868a8bc27ce42fdf8209e920","isMergeCommit":false,"messageTitle":"Add save feature","messageBody":"Saves the tasks in the hard disk automatically whenever the task list changes. The tasks are saved as a human-readable list, in order for the user to read their list using the save file.\n\nChanges are made to support the new save feature.\n\nLet\u0027s,\n* save the task list automatically\n* update tasks to support reading of a task string\n* add LocalStorage.java to encapsulate storing of files\n* add a print queue to store messages such as the message when a save file is found, which can be printed together with the chat message\n* add ./data/ folder to git ignore\n","fileTypesAndContributionMap":{"java":{"insertions":429,"deletions":28}}},{"hash":"ab04bcb3f474704d2fc1a3de356e341e4ff6422f","isMergeCommit":true,"messageTitle":"Merge save with master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"d8bf95f75b6a85bf1e59466a658dc9f895bfb164","isMergeCommit":false,"messageTitle":"Store dates as java.time.LocalDate","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":95,"deletions":9}}},{"hash":"f37e9a1ae400135eab1e8a0cfad298ba83db93c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"4ae89eee792ed300ae891ab69e20aa2d70e3badf","isMergeCommit":false,"messageTitle":"Organize into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":141,"deletions":136},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"77563b8916b605570e312e30e8fab401e60a8bd6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tituschewxj":{"java":2006,"md":2,"fxml":0,"sh":2,"bat":2,"gradle":0,"txt":37}},"authorContributionVariance":{"tituschewxj":307706.3},"authorDisplayNameMap":{"tituschewxj":"CS2103T-F13-1 TITU.. JUN"}} diff --git a/tohlh_ip_master/authorship.json b/tohlh_ip_master/authorship.json index 9c29e433..def8a133 100644 --- a/tohlh_ip_master/authorship.json +++ b/tohlh_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"# Henry project template","lastModifiedDate":"2024-01-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":"tohlh"},"content":"3. After that, locate the `src/main/java/Henry.java` file, right-click it, and choose `Run Henry.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":"2024-01-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":{"-":22,"tohlh":2}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" private final String date;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" public Deadline(String description, String date) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" if (date.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No due date specified!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + date + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":16}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" private final String from;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" private final String to;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":" public Event(String description, String from, String to) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" if (from.isEmpty() || from.equals(\" \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"Missing time !!!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":" } else if (to.isEmpty() || to.equals(\" \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"Missing time!!!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":22}},{"path":"src/main/java/Henry.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"public class Henry {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":" private enum CommandType {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":" LIST, UNMARK, MARK, DELETE, TODO, DEADLINE, EVENT, BYE, UNKNOWN","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" private static ArrayList\u003cTask\u003e items \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" public static void greet() {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" String logo \u003d \" _ _ \\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":" \" | | | | \\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" \" | |__| | ___ _ __ _ __ _ _ \\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" \" | __ |/ _ \\\\ \u0027_ \\\\| \u0027__| | | |\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" \" | | | | __/ | | | | | |_| |\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" \" |_| |_|\\\\___|_| |_|_| \\\\__, |\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" \" __/ |\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" \" |___/ \\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" String greetMessage \u003d \"Hello! I\u0027m Henry\\nWhat can I do for you?\";","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" System.out.println(greetMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" public static void bye() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" System.out.println(\"See you again bro!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" items.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" System.out.println(\"Added this task\");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" System.out.println(items.get(items.size() - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" System.out.printf(\"Now you have %d tasks in the list :(\\n\", items.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" public static void markTask(int index) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" if (index \u003c 0 || index \u003e\u003d items.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"The index is out of bounds!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" items.get(index).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" System.out.println(\"This task is marked as done XD\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" System.out.println(items.get(index));","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" public static void unmarkTask(int index) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" if (index \u003c 0 || index \u003e\u003d items.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"The index is out of bounds!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" items.get(index).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" System.out.println(\"This task is marked as undone :(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" System.out.println(items.get(index));","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" public static void deleteTask(int index) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" if (index \u003c 0 || index \u003e\u003d items.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"The index is out of bounds!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" System.out.println(\"This task is deleted :)\");","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" System.out.println(items.get(index));","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" items.remove(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" private static void handleCommand(CommandType commandType, String params) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" case LIST:","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":" System.out.println(\"Here is a list of tasks:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":" for (int i \u003d 0; i \u003c items.size(); i \u003d i + 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" System.out.printf(\"%d. %s\\n\", i + 1, items.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" case MARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No index provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" markTask(Integer.parseInt(params) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" case UNMARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No index provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" unmarkTask(Integer.parseInt(params) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" case TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No description provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" addTask(new Todo(params));","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No description and /by provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" if (!params.contains(\"/by\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"When this has to be done by?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"tohlh"},"content":" String[] deadlineParams \u003d params.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"tohlh"},"content":" addTask(new Deadline(deadlineParams[0], deadlineParams[1]));","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":" case EVENT:","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No description, /from and /to provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" if (!params.contains(\"/from\") || !params.contains(\"/to\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"Please provide /from and /to\");","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" String[] eventParams \u003d params.split(\" /from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" addTask(new Event(eventParams[0], eventParams[1], eventParams[2]));","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" case DELETE:","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No index provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" deleteTask(Integer.parseInt(params) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"I don\u0027t understand this command...\");","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" } catch (HenryException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" greet();","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":" String currentLine \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" String[] command \u003d currentLine.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":" CommandType commandType;","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" String params \u003d command.length \u003c 2 ? \"\" : command[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"tohlh"},"content":" commandType \u003d CommandType.valueOf(command[0].toUpperCase());","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"tohlh"},"content":" if (commandType.equals(CommandType.BYE)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" bye();","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"tohlh"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":" commandType \u003d CommandType.UNKNOWN;","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" handleCommand(commandType, params);","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":" } catch(HenryException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":147}},{"path":"src/main/java/HenryException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"public class HenryException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" HenryException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" return \"Whoops... \" + this.getMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":10}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":" public Task(String description) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" if (description.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No description of task!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public void markAsDone() throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" if (this.isDone) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"This was already marked.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" public void unmarkAsDone() throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" if (!this.isDone) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"This was already unmarked.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), description);","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":35}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" public Todo(String description) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":9}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"deadline return book /by Thurs 1000","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"event CS3230 exam /from 1300 /to 1500","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"unmark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":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":"tohlh"},"content":"java -classpath ..\\bin Henry \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"tohlh":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":"tohlh"},"content":"java -classpath ../bin Henry \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"-":37,"tohlh":1}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"# Henry project template","lastModifiedDate":"2024-01-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":"tohlh"},"content":"3. After that, locate the `src/main/java/Henry.java` file, right-click it, and choose `Run Henry.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":"2024-01-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":{"-":22,"tohlh":2}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" private final String date;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" public Deadline(String description, String date) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" if (date.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No due date specified!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + date + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" return String.format(\"D | %s | %s\", super.toFileString(), date);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":21}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" private final String from;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" private final String to;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":" public Event(String description, String from, String to) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" if (from.isEmpty() || from.equals(\" \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"Missing time !!!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":" } else if (to.isEmpty() || to.equals(\" \")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"Missing time!!!\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" return String.format(\"E | %s | %s | %s\", super.toFileString(), from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":27}},{"path":"src/main/java/Henry.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"public class Henry {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" private enum CommandType {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" LIST, UNMARK, MARK, DELETE, TODO, DEADLINE, EVENT, BYE, UNKNOWN","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" private static ArrayList\u003cTask\u003e items \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" public static void greet() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" String logo \u003d \" _ _ \\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" \" | | | | \\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" \" | |__| | ___ _ __ _ __ _ _ \\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" \" | __ |/ _ \\\\ \u0027_ \\\\| \u0027__| | | |\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" \" | | | | __/ | | | | | |_| |\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" \" |_| |_|\\\\___|_| |_|_| \\\\__, |\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" \" __/ |\\n\" +","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" \" |___/ \\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" String greetMessage \u003d \"Hello! I\u0027m Henry\\nWhat can I do for you?\";","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" System.out.println(greetMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" public static void bye() {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" System.out.println(\"See you again bro!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" public static void loadTaskFromFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" Path path \u003d Paths.get(\"data\", \"henry.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" File file \u003d path.toFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" BufferedReader br \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" String line \u003d br.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" String[] currLine \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" switch (currLine[0]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" items.add(new Todo(currLine[2]));","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" items.add(new Deadline(currLine[2], currLine[3]));","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" items.add(new Event(currLine[2], currLine[3], currLine[4]));","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" if (currLine[1].equals(\"1\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" items.get(items.size() - 1).markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":" line \u003d br.readLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" } catch (IOException | HenryException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" public static void saveTasksToFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" Path path \u003d Paths.get(\"data\", \"henry.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":" File file \u003d path.toFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" for (Task item : items) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" fw.write(item.toFileString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" items.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" System.out.println(\"Added this task\");","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" System.out.println(items.get(items.size() - 1));","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" System.out.printf(\"Now you have %d tasks in the list :(\\n\", items.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"tohlh"},"content":" public static void markTask(int index) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"tohlh"},"content":" if (index \u003c 0 || index \u003e\u003d items.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"The index is out of bounds!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"tohlh"},"content":" items.get(index).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"tohlh"},"content":" System.out.println(\"This task is marked as done XD\");","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"tohlh"},"content":" System.out.println(items.get(index));","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"tohlh"},"content":" public static void unmarkTask(int index) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" if (index \u003c 0 || index \u003e\u003d items.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"The index is out of bounds!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" items.get(index).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" System.out.println(\"This task is marked as undone :(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" System.out.println(items.get(index));","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" public static void deleteTask(int index) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" if (index \u003c 0 || index \u003e\u003d items.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"The index is out of bounds!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" System.out.println(\"This task is deleted :)\");","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" System.out.println(items.get(index));","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" items.remove(index);","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" private static void handleCommand(CommandType commandType, String params) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" case LIST:","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" System.out.println(\"Here is a list of tasks:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" for (int i \u003d 0; i \u003c items.size(); i \u003d i + 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" System.out.printf(\"%d. %s\\n\", i + 1, items.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" case MARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No index provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" markTask(Integer.parseInt(params) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":" case UNMARK:","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No index provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" unmarkTask(Integer.parseInt(params) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"tohlh"},"content":" case TODO:","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No description provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":" addTask(new Todo(params));","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No description and /by provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"tohlh"},"content":" if (!params.contains(\"/by\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"When this has to be done by?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"tohlh"},"content":" String[] deadlineParams \u003d params.split(\" /by \");","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"tohlh"},"content":" addTask(new Deadline(deadlineParams[0], deadlineParams[1]));","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"tohlh"},"content":" case EVENT:","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No description, /from and /to provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"tohlh"},"content":" if (!params.contains(\"/from\") || !params.contains(\"/to\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"Please provide /from and /to\");","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"tohlh"},"content":" String[] eventParams \u003d params.split(\" /from | /to \");","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"tohlh"},"content":" addTask(new Event(eventParams[0], eventParams[1], eventParams[2]));","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"tohlh"},"content":" case DELETE:","lastModifiedDate":"2024-01-25"},{"lineNumber":163,"author":{"gitId":"tohlh"},"content":" if (params.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No index provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"tohlh"},"content":" deleteTask(Integer.parseInt(params) - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"tohlh"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"tohlh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"I don\u0027t understand this command...\");","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"tohlh"},"content":" } catch (HenryException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"tohlh"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"tohlh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"tohlh"},"content":" loadTaskFromFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"tohlh"},"content":" greet();","lastModifiedDate":"2024-01-25"},{"lineNumber":180,"author":{"gitId":"tohlh"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":181,"author":{"gitId":"tohlh"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"tohlh"},"content":" String currentLine \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"tohlh"},"content":" String[] command \u003d currentLine.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"tohlh"},"content":" CommandType commandType;","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"tohlh"},"content":" String params \u003d command.length \u003c 2 ? \"\" : command[1];","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"tohlh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"tohlh"},"content":" commandType \u003d CommandType.valueOf(command[0].toUpperCase());","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"tohlh"},"content":" if (commandType.equals(CommandType.BYE)) {","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"tohlh"},"content":" saveTasksToFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"tohlh"},"content":" bye();","lastModifiedDate":"2024-01-25"},{"lineNumber":192,"author":{"gitId":"tohlh"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"tohlh"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"tohlh"},"content":" commandType \u003d CommandType.UNKNOWN;","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"tohlh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"tohlh"},"content":" handleCommand(commandType, params);","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"tohlh"},"content":" } catch(HenryException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"tohlh"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":205}},{"path":"src/main/java/HenryException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"public class HenryException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" HenryException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" return \"Whoops... \" + this.getMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":10}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":" public Task(String description) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" if (description.isBlank()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"No description of task!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public void markAsDone() throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" if (this.isDone) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"This was already marked.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" public void unmarkAsDone() throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" if (!this.isDone) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" throw new HenryException(\"This was already unmarked.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" return String.format(\"[%s] %s\", getStatusIcon(), description);","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" return String.format(\"%s | %s\", isDone ? \"1\" : \"0\", description);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":39}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" public Todo(String description) throws HenryException {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" return String.format(\"T | %s\", super.toFileString());","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"deadline return book /by Thurs 1000","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"event CS3230 exam /from 1300 /to 1500","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"unmark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tohlh":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":"tohlh"},"content":"java -classpath ..\\bin Henry \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"tohlh":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":"tohlh"},"content":"java -classpath ../bin Henry \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"-":37,"tohlh":1}}] diff --git a/tohlh_ip_master/commits.json b/tohlh_ip_master/commits.json index 194843c0..f3b20ae7 100644 --- a/tohlh_ip_master/commits.json +++ b/tohlh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tohlh":[{"date":"2024-01-25","commitResults":[{"hash":"241099d42b65ebac0af33cfc5b0496d4dd27e9eb","isMergeCommit":false,"messageTitle":"Rename, greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"96f011fcbcf9111140d5098d7aee0d94619d7d70","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"17c18a13d50fccb4a2171aec89e6ee046532e4fa","isMergeCommit":false,"messageTitle":"Add and list items","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"cf4e88ab93d93079f4f227f62aeabc0509c87551","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"405d52fdacb183e61bdf5ecd0f0984f18e44aeb9","isMergeCommit":false,"messageTitle":"Mark and unmark Tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"4af649c9b96193ef90afa318768e1d01ea754f09","isMergeCommit":false,"messageTitle":"Add Todo, Event and Deadline classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":0}}},{"hash":"47eebbe1118db8e1480b259672a1d3458e09d96c","isMergeCommit":false,"messageTitle":"Use Todo, Event and Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"dcbbdebec7934b4291a15592c4e801c6435c3aaf","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"86390b32dea80b528b20dc69fed629a8478315a7","isMergeCommit":false,"messageTitle":"Refactor into methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":18}}},{"hash":"6f6dac9d6060d26878760433ac8089421c0fb693","isMergeCommit":false,"messageTitle":"Add HenryException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"0d11c9703a1a4713ca71e5444026c937a83d6362","isMergeCommit":false,"messageTitle":"Error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":22}}},{"hash":"b0515c593903e93d0cfd6d2ccf9a336b0ac8a174","isMergeCommit":false,"messageTitle":"Better command handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":63}}},{"hash":"5e143eaad168888332323e469450b8f21012c2fa","isMergeCommit":false,"messageTitle":"Delete items","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":14}}},{"hash":"dffdeb36ea229b491d4749449d35edbe8c6a8448","isMergeCommit":false,"messageTitle":"Use enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"tohlh":{"java":239,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"tohlh":35838.492},"authorDisplayNameMap":{"tohlh":"CS2103T-W10-4 TOH ..HENG"}} +{"authorDailyContributionsMap":{"tohlh":[{"date":"2024-01-25","commitResults":[{"hash":"241099d42b65ebac0af33cfc5b0496d4dd27e9eb","isMergeCommit":false,"messageTitle":"Rename, greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"96f011fcbcf9111140d5098d7aee0d94619d7d70","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"17c18a13d50fccb4a2171aec89e6ee046532e4fa","isMergeCommit":false,"messageTitle":"Add and list items","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"cf4e88ab93d93079f4f227f62aeabc0509c87551","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"405d52fdacb183e61bdf5ecd0f0984f18e44aeb9","isMergeCommit":false,"messageTitle":"Mark and unmark Tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"4af649c9b96193ef90afa318768e1d01ea754f09","isMergeCommit":false,"messageTitle":"Add Todo, Event and Deadline classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":0}}},{"hash":"47eebbe1118db8e1480b259672a1d3458e09d96c","isMergeCommit":false,"messageTitle":"Use Todo, Event and Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":3}}},{"hash":"dcbbdebec7934b4291a15592c4e801c6435c3aaf","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"86390b32dea80b528b20dc69fed629a8478315a7","isMergeCommit":false,"messageTitle":"Refactor into methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":18}}},{"hash":"6f6dac9d6060d26878760433ac8089421c0fb693","isMergeCommit":false,"messageTitle":"Add HenryException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"0d11c9703a1a4713ca71e5444026c937a83d6362","isMergeCommit":false,"messageTitle":"Error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":22}}},{"hash":"b0515c593903e93d0cfd6d2ccf9a336b0ac8a174","isMergeCommit":false,"messageTitle":"Better command handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":63}}},{"hash":"5e143eaad168888332323e469450b8f21012c2fa","isMergeCommit":false,"messageTitle":"Delete items","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":14}}},{"hash":"dffdeb36ea229b491d4749449d35edbe8c6a8448","isMergeCommit":false,"messageTitle":"Use enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":12}}}]},{"date":"2024-01-30","commitResults":[{"hash":"e5afe3e2d8fa939ea12279a85c1d3ac92d294412","isMergeCommit":false,"messageTitle":"Add saving Tasks to file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":134,"deletions":58}}},{"hash":"2e3d3dd22a1155c140af10df239e0077a175cb54","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tohlh":{"java":315,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"tohlh":23730.912},"authorDisplayNameMap":{"tohlh":"CS2103T-W10-4 TOH ..HENG"}} diff --git a/vnnamng_ip_master/authorship.json b/vnnamng_ip_master/authorship.json index dd2ca5ee..fd902879 100644 --- a/vnnamng_ip_master/authorship.json +++ b/vnnamng_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":"vnnamng"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-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":{"vnnamng":1,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" storage.loadTasksFromFileToTaskList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" ui.showLine(); // show the divider line (\"_______\")","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" c.execute(storage, ui, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException | ChatBotCommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" } finally {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" new Duke(\"tasks.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"vnnamng":47,"-":2}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class AddCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" public AddCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" switch (this.keyword) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addToDo(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addDeadline(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addEvent(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" ui.showAddedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" ui.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":46}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" protected final String keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" protected final String parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" protected Command(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" this.parameters \u003d parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" abstract public void execute(Storage storage, Ui ui, TaskList taskList) throws ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public DeleteCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.deleteTask(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" ui.showDeletedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" ui.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":29}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public ExitCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @return true","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" storage.saveTaskListToFile(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" ui.showFarewell();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":33}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public ListCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" ui.showTaskList(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public MarkCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.markTaskAsDone(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":28}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public UnmarkCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.markTaskAsUndone(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":27}},{"path":"src/main/java/duke/exception/ChatBotCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ChatBotCommandException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" public ChatBotCommandException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":8}},{"path":"src/main/java/duke/exception/ChatBotParameterException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ChatBotParameterException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" public ChatBotParameterException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":7}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.command.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" public static String[] parseSavedTask(String taskString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" return taskString.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" public static Command parseCommand(String command) throws ChatBotCommandException {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" if (command.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotCommandException(\"Empty command.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" String[] splitCommandArr \u003d command.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" String keyword \u003d splitCommandArr[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" String parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" parameters \u003d splitCommandArr[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" parameters \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" switch (keyword) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" return new AddCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" return new ExitCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" return new ListCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" return new MarkCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" return new UnmarkCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" return new DeleteCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotCommandException(\"Invalid command.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" public static String[] parseToDo(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description for duke.task.ToDo \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" \"try: todo \u003ctodo_name\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" return new String[]{parameters};","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" public static String[] parseDeadline(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"There is no description and by for duke.task.Deadline \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" \"try: deadline \u003cdeadline_name\u003e /by \u003cby\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d parameters.split(\" /by \");","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" if (parametersArr.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description or by for duke.task.Deadline \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" \"try: deadline \u003cdeadline_name\u003e /by \u003cby\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" return parametersArr;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" public static String[] parseEvent(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"There is no description and from and to for duke.task.Event \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":" \"try: event \u003cevent_name\u003e /by \u003cfrom\u003e /to \u003cto\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d parameters.split(\" /from | /to \");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" if (parametersArr.length \u003c 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description and/or from and/or to for duke.task.Event \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":" \"try: event \u003cevent_name\u003e /by \u003cfrom\u003e /to \u003cto\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" return parametersArr;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" public static LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"d/M/yyyy Hmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" return LocalDateTime.parse(dateTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" public static int parseInteger(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing task number \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":" \"try: mark/unmark/delete \u003ctask_number\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"vnnamng"},"content":" return Integer.parseInt(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"vnnamng"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Invalid task number \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"vnnamng"},"content":" \"try: mark/unmark/delete \u003ctask_number\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":103}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" private final String fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" private static final String DATA_FOLDER \u003d \"data\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" public Storage(String fileName) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" public StringBuilder createSaveDataFromTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" StringBuilder saveData \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" for (Task task: tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" saveData.append(task.createSaveData());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" return saveData;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" public void saveTaskListToFile(TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" Files.createDirectories(Paths.get(DATA_FOLDER));","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" Files.writeString(this.getFileLocationPath(), this.createSaveDataFromTaskList(tasks),","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" StandardOpenOption.CREATE);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Folder Does not Exists\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" public Path getFileLocationPath() {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return Paths.get(DATA_FOLDER, this.fileName);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" public void loadTasksFromFileToTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" Path filePath \u003d this.getFileLocationPath();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" List\u003cString\u003e tasks \u003d Files.readAllLines(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" for (String taskString : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":" String[] parameters \u003d Parser.parseSavedTask(taskString);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" switch (parameters[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" case (\"T\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" taskList.addToDo(parameters[2], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" case (\"D\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" taskList.addDeadline(parameters[2], parameters[3], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" case (\"E\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" taskList.addEvent(parameters[2], parameters[3], parameters[4], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":73}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public Deadline(String description, LocalDateTime by, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" public String getFormattedBy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" return String.format(\"D | %d | %s | %s\\n\", (super.isDone() ? 1 : 0), this.description, this.by);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.getFormattedBy() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":27}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" public Event(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" return String.format(\"E | %d | %s | %s | %s\\n\", (super.isDone() ? 1 : 0), this.description, this.from, this.to);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" return isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" return String.format(\"T | %d | %s\\n\", ((this.isDone) ? 1 : 0), this.description);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" return \"[\" + this.getStatusIcon() + \"]\" + \" \" + this.description;","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" public void markDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"vnnamng":41}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" protected List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" * Returns an iterator over elements of type {@code duke.task.Task}.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" * @return an Iterator.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" return tasks.iterator();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" public Task addToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" ToDo toDo \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" this.addTask(toDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" return toDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" public Task addToDo(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseToDo(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return this.addToDo(parametersArr[0], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" public Task addDeadline(String description, String by, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" LocalDateTime byDateTime \u003d Parser.parseDateTime(by);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" Deadline deadline \u003d new Deadline(description, byDateTime, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" this.addTask(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" return deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" public Task addDeadline(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseDeadline(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" return this.addDeadline(parametersArr[0], parametersArr[1], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" public Task addEvent(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseEvent(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" return this.addEvent(parametersArr[0], parametersArr[1], parametersArr[2], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" public Task addEvent(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" Event event \u003d new Event(description, from, to, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" this.addTask(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" return event;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" public int size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":" public Task markTaskAsDone(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" Task taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":" if (taskToBeMarked.isDone()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"This task is already marked done!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked.markDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":" return taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" public Task markTaskAsUndone(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" Task taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"vnnamng"},"content":" if (!taskToBeMarked.isDone()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"This task is already marked undone!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked.markUndone();","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"vnnamng"},"content":" return taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"vnnamng"},"content":" public Task deleteTask(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"vnnamng"},"content":" Task taskToBeDeleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"vnnamng"},"content":" taskToBeDeleted \u003d this.tasks.remove(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"vnnamng"},"content":" return taskToBeDeleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":115}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":12}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" private static final String LOGO \u003d \" ___ ___ ___ ___ ___ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" \" /\\\\ \\\\ /\\\\ \\\\ ___ /\\\\__\\\\ /\\\\ \\\\ /\\\\__\\\\ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" \" /::\\\\ \\\\ /::\\\\ \\\\ /\\\\ \\\\ /::| | /::\\\\ \\\\ /::| | \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" \" /:/\\\\:\\\\ \\\\ /:/\\\\:\\\\ \\\\ \\\\:\\\\ \\\\ /:|:| | /:/\\\\:\\\\ \\\\ /:|:| | \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" \" /::\\\\~\\\\:\\\\ \\\\ /::\\\\~\\\\:\\\\ \\\\ /::\\\\__\\\\ /:/|:|__|__ /:/ \\\\:\\\\ \\\\ /:/|:| |__ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" \" /:/\\\\:\\\\ \\\\:\\\\__\\\\/:/\\\\:\\\\ \\\\:\\\\__\\\\ __/:/\\\\/__//:/ |::::\\\\__\\\\/:/__/ \\\\:\\\\__\\\\/:/ |:| /\\\\__\\\\\\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__\\\\:\\\\/:/ /\\\\/__\\\\:\\\\/:/ //\\\\/:/ / \\\\/__/~~/:/ /\\\\:\\\\ \\\\ /:/ /\\\\/__|:|/:/ /\\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" \" \\\\::/ / \\\\::/ / \\\\::/__/ /:/ / \\\\:\\\\ /:/ / |:/:/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__/ /:/ / \\\\:\\\\__\\\\ /:/ / \\\\:\\\\/:/ / |::/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" \" /:/ / \\\\/__/ /:/ / \\\\::/ / /:/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__/ \\\\/__/ \\\\/__/ \\\\/__/ \\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" private static final List\u003cString\u003e GREETINGS \u003d List.of(","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" \"Ah, there you are! Hello! Paimon wondered where you were! This is going to be so much fun, right?\",","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" \"Ahoy there! It\u0027s great to see you! Paimon\u0027s hungry!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" \"Ah, Paimon missed you! It\u0027s been so long...\",","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" \"Ad astra abyssosque, welcome to Paimon\u0027s house!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" \"Good morning, Traveler. Ah... what\u0027s it like out today? Paimon wants to hear your story.\"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" private static final List\u003cString\u003e FAREWELLS \u003d List.of(","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" \"Farewell, it was fun to meet you! Take care, see you later, and may you find many new treasures\",","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" \"Farewell, until we meet again!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" \"Safe travels, and take care!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" \"Good luck! And don\u0027t spend all your Mora in one place.\",","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" \"Adios!\"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" public Ui() {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" private static final String HORIZONTAL_LINE \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" \"___________________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" public void showLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" System.out.println(errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" System.out.println(LOGO);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" System.out.println(GREETINGS.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" public void showFarewell() {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" System.out.println(FAREWELLS.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" public void showTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" this.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" System.out.printf(\"%d. %s\\n\", count, task);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" public void showAddedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" public void showTaskListStatus(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" System.out.printf(\"Now you have %d tasks in the list.%n\", taskList.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" public void showDeletedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":94}},{"path":"src/test/java/duke/task/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task; //same package as the class being tested","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"public class ToDoTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public void dummyTest(){","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" assertEquals(2, 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" public void anotherDummyTest(){","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" assertEquals(4, 4);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"vnnamng":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"random command","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"todo Hello World","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"deadline Goodbye World /by tmr","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"event Hello and Goodbye World /from now /to next year","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":"mark 3","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":17}},{"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":"vnnamng"},"content":"java -classpath ..\\bin Duke \"test-mode\" \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"vnnamng":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":"vnnamng"},"content":" rm EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"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":"vnnamng"},"content":"# run the program, feed commands from input.txt file and redirect the output to the EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":"java -classpath ../bin Duke \"test-mode\" \u003c input.txt \u003e EXPECTED.TXT","lastModifiedDate":"2024-01-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":"vnnamng"},"content":"dos2unix EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-22"},{"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":"vnnamng"},"content":"diff EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-22"},{"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":{"vnnamng":5,"-":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":"-"},"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":"vnnamng"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-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":"vnnamng"},"content":" archiveVersion \u003d \u00270.1.0\u0027","lastModifiedDate":"2024-01-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":{"vnnamng":2,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" storage.loadTasksFromFileToTaskList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" ui.showLine(); // show the divider line (\"_______\")","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" c.execute(storage, ui, tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException | ChatBotCommandException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" } finally {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" ui.showLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" new Duke(\"tasks.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"vnnamng":47,"-":2}},{"path":"src/main/java/duke/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class AddCommand extends Command{","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" public AddCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" switch (this.keyword) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addToDo(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addDeadline(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" task \u003d taskList.addEvent(this.parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" ui.showAddedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" ui.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":46}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" protected final String keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" protected final String parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" protected Command(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" this.parameters \u003d parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" abstract public void execute(Storage storage, Ui ui, TaskList taskList) throws ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public DeleteCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.deleteTask(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" ui.showDeletedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" ui.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":29}},{"path":"src/main/java/duke/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public ExitCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @return true","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" storage.saveTaskListToFile(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" ui.showFarewell();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":33}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public ListCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" ui.showTaskList(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public MarkCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.markTaskAsDone(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" ui.showMarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":28}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public UnmarkCommand(String keyword, String parameters) {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" super(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" * @param storage","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" * @param ui","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" * @param taskList","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void execute(Storage storage, Ui ui, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" Task task \u003d taskList.markTaskAsUndone(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" ui.showUnmarkedTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":27}},{"path":"src/main/java/duke/exception/ChatBotCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ChatBotCommandException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" public ChatBotCommandException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":8}},{"path":"src/main/java/duke/exception/ChatBotParameterException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ChatBotParameterException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" public ChatBotParameterException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":7}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.command.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotCommandException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" public static String[] parseSavedTask(String taskString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" return taskString.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" public static Command parseCommand(String command) throws ChatBotCommandException {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" if (command.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotCommandException(\"Empty command.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" String[] splitCommandArr \u003d command.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" String keyword \u003d splitCommandArr[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" String parameters;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" parameters \u003d splitCommandArr[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" parameters \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" switch (keyword) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" return new AddCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" return new ExitCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" return new ListCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" return new MarkCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" return new UnmarkCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" return new DeleteCommand(keyword, parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotCommandException(\"Invalid command.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" public static String[] parseToDo(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description for duke.task.ToDo \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" \"try: todo \u003ctodo_name\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" return new String[]{parameters};","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" public static String[] parseDeadline(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"There is no description and by for duke.task.Deadline \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" \"try: deadline \u003cdeadline_name\u003e /by \u003cby\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d parameters.split(\" /by \");","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" if (parametersArr.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description or by for duke.task.Deadline \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" \"try: deadline \u003cdeadline_name\u003e /by \u003cby\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" return parametersArr;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" public static String[] parseEvent(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"There is no description and from and to for duke.task.Event \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":" \"try: event \u003cevent_name\u003e /by \u003cfrom\u003e /to \u003cto\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d parameters.split(\" /from | /to \");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" if (parametersArr.length \u003c 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing description and/or from and/or to for duke.task.Event \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":" \"try: event \u003cevent_name\u003e /by \u003cfrom\u003e /to \u003cto\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" return parametersArr;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" public static LocalDateTime parseDateTime(String dateTime) throws ChatBotParameterException {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"d/M/yyyy Hmm\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":" return LocalDateTime.parse(dateTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Invalid Date Time format, try d/M/yyy Hmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"vnnamng"},"content":" public static int parseInteger(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"vnnamng"},"content":" if (parameters.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Missing task number \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"vnnamng"},"content":" \"try: mark/unmark/delete \u003ctask_number\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"vnnamng"},"content":" return Integer.parseInt(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"vnnamng"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"Invalid task number \\n\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"vnnamng"},"content":" \"try: mark/unmark/delete \u003ctask_number\u003e\");","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":107}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" private final String fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" private static final String DATA_FOLDER \u003d \"data\";","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public Storage(String fileName) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" this.fileName \u003d fileName;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" public StringBuilder createSaveDataFromTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" StringBuilder saveData \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" for (Task task: tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" saveData.append(task.createSaveData());","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" return saveData;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" public void saveTaskListToFile(TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" Files.createDirectories(Paths.get(DATA_FOLDER));","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" Files.writeString(this.getFileLocationPath(), this.createSaveDataFromTaskList(tasks),","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" StandardOpenOption.CREATE);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Folder Does not Exists\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" public Path getFileLocationPath() {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" return Paths.get(DATA_FOLDER, this.fileName);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" public void loadTasksFromFileToTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" Path filePath \u003d this.getFileLocationPath();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" List\u003cString\u003e tasks \u003d Files.readAllLines(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":" for (String taskString : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" String[] parameters \u003d Parser.parseSavedTask(taskString);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" switch (parameters[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" case (\"T\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" taskList.addToDo(parameters[2], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" case (\"D\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" taskList.addDeadline(parameters[2], parameters[3], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" case (\"E\"):","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" taskList.addEvent(parameters[2], parameters[3], parameters[4], parameters[1].equals(\"1\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":" } catch (IOException | ChatBotParameterException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":74}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" public Deadline(String description, LocalDateTime by, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" public String getFormattedBy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" return this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" return String.format(\"D | %d | %s | %s\\n\", (super.isDone() ? 1 : 0), this.description, this.by);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.getFormattedBy() + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":27}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" public Event(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" return String.format(\"E | %d | %s | %s | %s\\n\", (super.isDone() ? 1 : 0), this.description, this.from, this.to);","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":22}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" return isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" public String createSaveData() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" return String.format(\"T | %d | %s\\n\", ((this.isDone) ? 1 : 0), this.description);","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" return \"[\" + this.getStatusIcon() + \"]\" + \" \" + this.description;","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" public void markDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"vnnamng":41}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" protected List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" * Returns an iterator over elements of type {@code duke.task.Task}.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" * @return an Iterator.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" return tasks.iterator();","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" public Task addToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" ToDo toDo \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" this.addTask(toDo);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" return toDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" public Task addToDo(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseToDo(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" return this.addToDo(parametersArr[0], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" public Task addDeadline(String description, String by, boolean isDone) throws ChatBotParameterException {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" LocalDateTime byDateTime \u003d Parser.parseDateTime(by);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":" Deadline deadline \u003d new Deadline(description, byDateTime, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" this.addTask(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" return deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" public Task addDeadline(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseDeadline(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" return this.addDeadline(parametersArr[0], parametersArr[1], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" public Task addEvent(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" String[] parametersArr \u003d Parser.parseEvent(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" return this.addEvent(parametersArr[0], parametersArr[1], parametersArr[2], false);","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" public Task addEvent(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" Event event \u003d new Event(description, from, to, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" this.addTask(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" return event;","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" public int size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":" public Task markTaskAsDone(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" Task taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":" if (taskToBeMarked.isDone()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"This task is already marked done!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked.markDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":" return taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" public Task markTaskAsUndone(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" Task taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked \u003d this.tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"vnnamng"},"content":" if (!taskToBeMarked.isDone()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"This task is already marked undone!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"vnnamng"},"content":" taskToBeMarked.markUndone();","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"vnnamng"},"content":" return taskToBeMarked;","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"vnnamng"},"content":" public Task deleteTask(String parameters) throws ChatBotParameterException {","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"vnnamng"},"content":" int taskNumber \u003d Parser.parseInteger(parameters);","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"vnnamng"},"content":" Task taskToBeDeleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"vnnamng"},"content":" taskToBeDeleted \u003d this.tasks.remove(taskNumber - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"vnnamng"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"vnnamng"},"content":" throw new ChatBotParameterException(\"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"vnnamng"},"content":" return taskToBeDeleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":115}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":12}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":" private static final String LOGO \u003d \" ___ ___ ___ ___ ___ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":" \" /\\\\ \\\\ /\\\\ \\\\ ___ /\\\\__\\\\ /\\\\ \\\\ /\\\\__\\\\ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" \" /::\\\\ \\\\ /::\\\\ \\\\ /\\\\ \\\\ /::| | /::\\\\ \\\\ /::| | \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" \" /:/\\\\:\\\\ \\\\ /:/\\\\:\\\\ \\\\ \\\\:\\\\ \\\\ /:|:| | /:/\\\\:\\\\ \\\\ /:|:| | \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" \" /::\\\\~\\\\:\\\\ \\\\ /::\\\\~\\\\:\\\\ \\\\ /::\\\\__\\\\ /:/|:|__|__ /:/ \\\\:\\\\ \\\\ /:/|:| |__ \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" \" /:/\\\\:\\\\ \\\\:\\\\__\\\\/:/\\\\:\\\\ \\\\:\\\\__\\\\ __/:/\\\\/__//:/ |::::\\\\__\\\\/:/__/ \\\\:\\\\__\\\\/:/ |:| /\\\\__\\\\\\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__\\\\:\\\\/:/ /\\\\/__\\\\:\\\\/:/ //\\\\/:/ / \\\\/__/~~/:/ /\\\\:\\\\ \\\\ /:/ /\\\\/__|:|/:/ /\\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" \" \\\\::/ / \\\\::/ / \\\\::/__/ /:/ / \\\\:\\\\ /:/ / |:/:/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__/ /:/ / \\\\:\\\\__\\\\ /:/ / \\\\:\\\\/:/ / |::/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" \" /:/ / \\\\/__/ /:/ / \\\\::/ / /:/ / \\n\"+","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" \" \\\\/__/ \\\\/__/ \\\\/__/ \\\\/__/ \\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" private static final List\u003cString\u003e GREETINGS \u003d List.of(","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" \"Ah, there you are! Hello! Paimon wondered where you were! This is going to be so much fun, right?\",","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" \"Ahoy there! It\u0027s great to see you! Paimon\u0027s hungry!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" \"Ah, Paimon missed you! It\u0027s been so long...\",","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" \"Ad astra abyssosque, welcome to Paimon\u0027s house!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" \"Good morning, Traveler. Ah... what\u0027s it like out today? Paimon wants to hear your story.\"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" private static final List\u003cString\u003e FAREWELLS \u003d List.of(","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" \"Farewell, it was fun to meet you! Take care, see you later, and may you find many new treasures\",","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" \"Farewell, until we meet again!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" \"Safe travels, and take care!\",","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" \"Good luck! And don\u0027t spend all your Mora in one place.\",","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" \"Adios!\"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" public Ui() {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" private static final String HORIZONTAL_LINE \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" \"___________________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" public void showLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" System.out.println(errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" System.out.println(LOGO);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" System.out.println(GREETINGS.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" public void showFarewell() {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" this.scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" System.out.println(FAREWELLS.get(1));","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" public void showTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":" this.showTaskListStatus(taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"vnnamng"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"vnnamng"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"vnnamng"},"content":" System.out.printf(\"%d. %s\\n\", count, task);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"vnnamng"},"content":" count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"vnnamng"},"content":" public void showAddedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Got it. I\u0027ve added this task: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"vnnamng"},"content":" public void showTaskListStatus(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"vnnamng"},"content":" System.out.printf(\"Now you have %d tasks in the list.%n\", taskList.size());","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"vnnamng"},"content":" public void showMarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"vnnamng"},"content":" public void showUnmarkedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"vnnamng"},"content":" public void showDeletedTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"vnnamng"},"content":" System.out.println(\"Noted. I\u0027ve removed this task: \\n\" + task.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"vnnamng":94}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" void parseDateTime_normalFormat_success() throws ChatBotParameterException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" assertEquals(LocalDateTime.of(2024,1,30,12,1),","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" Parser.parseDateTime(\"30/1/2024 1201\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" void parseDateTime_zeroMonthFormat_success() throws ChatBotParameterException {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" assertEquals(LocalDateTime.of(2024,1,30,12,1),","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" Parser.parseDateTime(\"30/01/2024 1201\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" void parseDateTime_zeroDayFormat_success() throws ChatBotParameterException {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" assertEquals(LocalDateTime.of(2024,1,1,12,1),","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" Parser.parseDateTime(\"01/1/2024 1201\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" void parseDateTime_storageDateTime_success() throws ChatBotParameterException {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":" assertEquals(LocalDateTime.of(2024,2,2,6,0),","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" Parser.parseDateTime(\"2024-02-02T06:00\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" void parseDateTime_noTime_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" assertEquals(LocalDateTime.of(2024,1,1,12,0),","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" Parser.parseDateTime(\"1/1/2024\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" assertEquals(\"Invalid Date Time format, try d/M/yyy Hmm\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"vnnamng"},"content":" void parseInteger_normalInt_success() throws ChatBotParameterException {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"vnnamng"},"content":" assertEquals(1, Parser.parseInteger(\"1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"vnnamng"},"content":" assertEquals(-1, Parser.parseInteger(\"-1\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"vnnamng"},"content":" assertEquals(1, Parser.parseInteger(\"01\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"vnnamng"},"content":" void parseInteger_invalidString_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"vnnamng"},"content":" assertEquals(1234, Parser.parseInteger(\"123-4\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"vnnamng"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"vnnamng"},"content":" assertEquals(\"Invalid task number \\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"vnnamng"},"content":" \"try: mark/unmark/delete \u003ctask_number\u003e\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"vnnamng":67}},{"path":"src/test/java/duke/storage/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"class StorageTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" void createSaveDataFromTaskList_normalTask_success() throws ChatBotParameterException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" Storage storage \u003d new Storage(\"test.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" String testCase \u003d \"E | 1 | hello | tmr | weekend\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" \"D | 0 | deadline | 2002-09-05T16:00\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" \"T | 0 | 1\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" TaskList taskListToBeTested \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addEvent(\"hello\", \"tmr\", \"weekend\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addDeadline(\"deadline\", \"5/9/2002 1600\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addToDo(\"1\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" assertEquals(testCase, storage.createSaveDataFromTaskList(taskListToBeTested).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" void getFileLocationPath_normalFileName_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" Storage storage \u003d new Storage(\"test.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" assertEquals(Paths.get(\"data\",\"test.txt\"), storage.getFileLocationPath());","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"vnnamng":33}},{"path":"src/test/java/duke/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"import duke.exception.ChatBotParameterException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":" void markTaskAsDone_normal_success() throws ChatBotParameterException {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":" TaskList taskListToBeTested \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addEvent(\"hello\", \"tmr\", \"weekend\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addDeadline(\"deadline\", \"5/9/2002 1600\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addToDo(\"1\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"vnnamng"},"content":" assertTrue(taskListToBeTested.markTaskAsDone(\"2\").isDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"vnnamng"},"content":" void markTaskAsDone_markTrueAlready_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"vnnamng"},"content":" TaskList taskListToBeTested \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addEvent(\"hello\", \"tmr\", \"weekend\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addDeadline(\"deadline\", \"5/9/2002 1600\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addToDo(\"1\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"vnnamng"},"content":" assertTrue(taskListToBeTested.markTaskAsDone(\"1\").isDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"vnnamng"},"content":" assertEquals(e.getMessage(), \"This task is already marked done!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"vnnamng"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"vnnamng"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"vnnamng"},"content":" void markTaskAsDone_taskOutOfBound_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"vnnamng"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"vnnamng"},"content":" TaskList taskListToBeTested \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addEvent(\"hello\", \"tmr\", \"weekend\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addDeadline(\"deadline\", \"5/9/2002 1600\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"vnnamng"},"content":" taskListToBeTested.addToDo(\"1\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"vnnamng"},"content":" assertTrue(taskListToBeTested.markTaskAsDone(\"4\").isDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"vnnamng"},"content":" } catch (ChatBotParameterException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"vnnamng"},"content":" assertEquals(e.getMessage(), \"The task does not exists in the task list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"vnnamng"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"vnnamng"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"vnnamng":46}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"vnnamng"},"content":"random command","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"vnnamng"},"content":"todo Hello World","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"vnnamng"},"content":"deadline Goodbye World /by tmr","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"vnnamng"},"content":"event Hello and Goodbye World /from now /to next year","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"vnnamng"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"vnnamng"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"vnnamng"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"vnnamng"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"vnnamng"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"vnnamng"},"content":"mark 3","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"vnnamng"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"vnnamng"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"vnnamng":17}},{"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":"vnnamng"},"content":"java -classpath ..\\bin Duke \"test-mode\" \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"vnnamng":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":"vnnamng"},"content":" rm EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"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":"vnnamng"},"content":"# run the program, feed commands from input.txt file and redirect the output to the EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"vnnamng"},"content":"java -classpath ../bin Duke \"test-mode\" \u003c input.txt \u003e EXPECTED.TXT","lastModifiedDate":"2024-01-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":"vnnamng"},"content":"dos2unix EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-22"},{"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":"vnnamng"},"content":"diff EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-22"},{"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":{"vnnamng":5,"-":33}}] diff --git a/vnnamng_ip_master/commits.json b/vnnamng_ip_master/commits.json index 44dcb0b8..a736eb5a 100644 --- a/vnnamng_ip_master/commits.json +++ b/vnnamng_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"vnnamng":[{"date":"2024-01-20","commitResults":[{"hash":"7889fbfaf51380597adb2bb8284bda9a47756d32","isMergeCommit":false,"messageTitle":"Add Paimon ASCII Art into Duke main()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"7e260940793b624f8f64ffffc342028e5b6c1109","isMergeCommit":false,"messageTitle":"Add greeting in Duke main, Create boilerplate for ChatBot class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":0}}},{"hash":"68a52e1d9ae5aa006f2da0eb39caf5fe30d6ca41","isMergeCommit":false,"messageTitle":"ChatBot.java: add commands field and methods, add randomized dialoue options","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":0}}},{"hash":"3ca960911ce3fb5cfc4dc1b35f5f15ea3f10e235","isMergeCommit":false,"messageTitle":"Duke.java: Refactor Paimon creation method","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}}]},{"date":"2024-01-21","commitResults":[{"hash":"aa8f82f33a75db2071a8af7b3b79d788a297cf49","isMergeCommit":false,"messageTitle":"Duke,java: add echo effect for Paimon bot in main","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"ffb152d7c32284a72994a7de7d2f1027797f7926","isMergeCommit":false,"messageTitle":"Add Task.java: new Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"2d5cd3a565eeeff868fbb662f0edcb1ad7e48cb1","isMergeCommit":false,"messageTitle":"ChatBot.java: Add Tasks field and methods to ChatBot Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"af2a53bb7aba62c0f1319421e5dbbe5965db616e","isMergeCommit":false,"messageTitle":"ChatBot.java: Fix ImmutableList into ArrayList for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":3}}},{"hash":"1dec30d357a7abc9652619ce5e1ae618b3f4806d","isMergeCommit":false,"messageTitle":"Duke.java: Add switch-cases for adding tasks and list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":7}}},{"hash":"663f61fad0c01f08a456471f78ae84c345bbc6d4","isMergeCommit":false,"messageTitle":"Task.java: add mark methods and new toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"6efa2e2bda1f3d1a2fd6293c8af3ccf5ea825836","isMergeCommit":false,"messageTitle":"Add Chat Interface for mark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":3}}},{"hash":"24fbb38bff8f95a7ff253fa206577f315c2e8693","isMergeCommit":false,"messageTitle":"Add mark and unmark functions working implementation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":1}}},{"hash":"cdad8cd03a00b9c98e6518e16f8ae118f93a0fdd","isMergeCommit":false,"messageTitle":"Fix mark function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"39c43c095f1f2dff212076e6c3d6a9086950e799","isMergeCommit":false,"messageTitle":"Add ToDo, Deadline, Event classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"332ac750e9505f3036e3581f9f8d69a5e8d1f60d","isMergeCommit":false,"messageTitle":"Create add ToDo functions and implementations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":5}}},{"hash":"52419a8833257f8f10aec27ffc3ce8abf2b5b031","isMergeCommit":false,"messageTitle":"Add some Deadline features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":14}}},{"hash":"ef2f674f0f3dd717ff8857be097a91657f21138f","isMergeCommit":false,"messageTitle":"Add Events methods and fine-tune interface","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"a75c79711f5ab07c24bf914c8607d74a2ff19c42","isMergeCommit":false,"messageTitle":"Add test-mode for the Chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"db8fbb3ff0de3c27aac8a4c89f62ead696f4bef5","isMergeCommit":false,"messageTitle":"Add ui-testing function, with Command Line Args to enter test-mode","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":11,"deletions":16},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":5,"deletions":5}}},{"hash":"29d072d2e17bc629a8cabe3663f870308cc919de","isMergeCommit":false,"messageTitle":"Create and implement parameter exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"b63009dc3bd71379a9b5cb299ea5be91141199e7","isMergeCommit":false,"messageTitle":"Actual create and implement parameter exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":7}}},{"hash":"f1677b37be5278c27e343c252ae3ade176a3faff","isMergeCommit":false,"messageTitle":"Chatbot.java: Fix spelling error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"3756fd39590e1545820e1eb66fddd4496a1b2598","isMergeCommit":false,"messageTitle":"Fix parameters exception and add command exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":27}}}]},{"date":"2024-01-23","commitResults":[{"hash":"6e9a876e9f46f906be40d14c8fd1a100c99761ef","isMergeCommit":false,"messageTitle":"Chatbot.java: Add mark and unmark functions exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":20}}},{"hash":"f71bc7bdf6e39a7764d327e86b7bfa12d8aced58","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"b155c5e6c23836b26381f2c856ef8fa0b785e7f7","isMergeCommit":false,"messageTitle":"Fix Switch case coding style in Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":28}}},{"hash":"8e9f0cec544c4a02a2c1e20b65f460183b358cf3","isMergeCommit":false,"messageTitle":"Add save feature for ChatBot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":1}}},{"hash":"42db2d9b7c5a61f8d1c10033c157257c17ca34d3","isMergeCommit":false,"messageTitle":"Add Load Tasks from File feature for Chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":15}}},{"hash":"77180863be1d5a7515fbbefbcbc7621c1b0d6d18","isMergeCommit":true,"messageTitle":"Add Save Feature for Chatbot","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e96549f8778363bafd986034f5c6639c19ec53c","isMergeCommit":false,"messageTitle":"Add some rough implementation of LocalDateTime in Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"db461d71a9c9f5270caeb082fe97f3ab898bdb05","isMergeCommit":false,"messageTitle":"fix errors when file does not exist when loading","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"5da736bec8e02053848736d81ff169fd936ce72e","isMergeCommit":false,"messageTitle":"Add fully working implementation of DateTime in Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"7ff918eaba1b625ffbd99a4622157c9e7726c2e5","isMergeCommit":true,"messageTitle":"Add DateTime implementation for Deadline","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"349b0ebf5e354f0115d017259dd01808aea2e459","isMergeCommit":false,"messageTitle":"Clean unused methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":65}}},{"hash":"fd2b3724311707a0b63a8ebc971437b8c36d7ba3","isMergeCommit":false,"messageTitle":"Add new Storage, TaskList, Parser and Command class for more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":186,"deletions":0}}},{"hash":"c038b144337a5f7122f09cbc78cc6ad3d2236bba","isMergeCommit":false,"messageTitle":"Adding Working Add/List/Exit commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":280,"deletions":248}}},{"hash":"97aa5e9dabf5f56ee862195bec11396bde8875f4","isMergeCommit":false,"messageTitle":"Add working Mark Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":43}}},{"hash":"5a1da37e6b769deeaf0f04316ebbfc5a15d9bd4d","isMergeCommit":false,"messageTitle":"Add working unmark Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}},{"hash":"ce41f67bf45f25844abacd4e33ff03366923babe","isMergeCommit":false,"messageTitle":"Add working Deleted Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":19}}},{"hash":"bf4eddacf4b1a2755adcd0a526b9dedf7f29202b","isMergeCommit":false,"messageTitle":"Clean up imports and unused classes, Add some customisation potential for greet and bye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":208}}},{"hash":"129d075fa5f849dc0b7f82ee2f69885b5194d2e2","isMergeCommit":false,"messageTitle":"Clean unused constructors and imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":18}}},{"hash":"f4f4a77312fe9c132e5e6d36150f8af58da28f4d","isMergeCommit":false,"messageTitle":"Add more readable UI replies for the ChatBot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"85d7f14c8161094605907901050366b816060d0d","isMergeCommit":true,"messageTitle":"Refactor to make the code more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"790a82036d0ee031e017c528b75f756bd1df079c","isMergeCommit":false,"messageTitle":"Divide classes into command, task, storage, ui, exception, parser packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":15}}},{"hash":"b298a6781f9a3fb3198d3c9b4dd2dfccbbcaeb28","isMergeCommit":true,"messageTitle":"Divide classes into task, command, parser, ui, storage, exception packages","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"8671544c4ecf471b1b315a70390f6aaff33939fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/vnnamng/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"22cb5b10ad0cdf9a2e18692990b6a928d0aa135a","isMergeCommit":false,"messageTitle":"Fix package problem with Duke Class not in duke folder","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"7f1a9625137429f8ef80cbd1501649db759bb543","isMergeCommit":false,"messageTitle":"Changing to correct main class for gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"8ddd17cb95975caac7642094db7e9cdd9d0070e8","isMergeCommit":false,"messageTitle":"Add dummy tests to check for gradle test","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"vnnamng":{"java":773,"md":0,"fxml":0,"sh":5,"bat":1,"gradle":1,"txt":17}},"authorContributionVariance":{"vnnamng":201236.56},"authorDisplayNameMap":{"vnnamng":"NGUY.. NAM"}} +{"authorDailyContributionsMap":{"vnnamng":[{"date":"2024-01-20","commitResults":[{"hash":"7889fbfaf51380597adb2bb8284bda9a47756d32","isMergeCommit":false,"messageTitle":"Add Paimon ASCII Art into Duke main()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"7e260940793b624f8f64ffffc342028e5b6c1109","isMergeCommit":false,"messageTitle":"Add greeting in Duke main, Create boilerplate for ChatBot class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":0}}},{"hash":"68a52e1d9ae5aa006f2da0eb39caf5fe30d6ca41","isMergeCommit":false,"messageTitle":"ChatBot.java: add commands field and methods, add randomized dialoue options","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":0}}},{"hash":"3ca960911ce3fb5cfc4dc1b35f5f15ea3f10e235","isMergeCommit":false,"messageTitle":"Duke.java: Refactor Paimon creation method","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}}]},{"date":"2024-01-21","commitResults":[{"hash":"aa8f82f33a75db2071a8af7b3b79d788a297cf49","isMergeCommit":false,"messageTitle":"Duke,java: add echo effect for Paimon bot in main","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"ffb152d7c32284a72994a7de7d2f1027797f7926","isMergeCommit":false,"messageTitle":"Add Task.java: new Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"2d5cd3a565eeeff868fbb662f0edcb1ad7e48cb1","isMergeCommit":false,"messageTitle":"ChatBot.java: Add Tasks field and methods to ChatBot Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"af2a53bb7aba62c0f1319421e5dbbe5965db616e","isMergeCommit":false,"messageTitle":"ChatBot.java: Fix ImmutableList into ArrayList for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":3}}},{"hash":"1dec30d357a7abc9652619ce5e1ae618b3f4806d","isMergeCommit":false,"messageTitle":"Duke.java: Add switch-cases for adding tasks and list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":7}}},{"hash":"663f61fad0c01f08a456471f78ae84c345bbc6d4","isMergeCommit":false,"messageTitle":"Task.java: add mark methods and new toString","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2024-01-22","commitResults":[{"hash":"6efa2e2bda1f3d1a2fd6293c8af3ccf5ea825836","isMergeCommit":false,"messageTitle":"Add Chat Interface for mark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":3}}},{"hash":"24fbb38bff8f95a7ff253fa206577f315c2e8693","isMergeCommit":false,"messageTitle":"Add mark and unmark functions working implementation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":1}}},{"hash":"cdad8cd03a00b9c98e6518e16f8ae118f93a0fdd","isMergeCommit":false,"messageTitle":"Fix mark function","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"39c43c095f1f2dff212076e6c3d6a9086950e799","isMergeCommit":false,"messageTitle":"Add ToDo, Deadline, Event classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"332ac750e9505f3036e3581f9f8d69a5e8d1f60d","isMergeCommit":false,"messageTitle":"Create add ToDo functions and implementations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":5}}},{"hash":"52419a8833257f8f10aec27ffc3ce8abf2b5b031","isMergeCommit":false,"messageTitle":"Add some Deadline features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":14}}},{"hash":"ef2f674f0f3dd717ff8857be097a91657f21138f","isMergeCommit":false,"messageTitle":"Add Events methods and fine-tune interface","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"a75c79711f5ab07c24bf914c8607d74a2ff19c42","isMergeCommit":false,"messageTitle":"Add test-mode for the Chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"db8fbb3ff0de3c27aac8a4c89f62ead696f4bef5","isMergeCommit":false,"messageTitle":"Add ui-testing function, with Command Line Args to enter test-mode","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":11,"deletions":16},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":5,"deletions":5}}},{"hash":"29d072d2e17bc629a8cabe3663f870308cc919de","isMergeCommit":false,"messageTitle":"Create and implement parameter exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"b63009dc3bd71379a9b5cb299ea5be91141199e7","isMergeCommit":false,"messageTitle":"Actual create and implement parameter exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":7}}},{"hash":"f1677b37be5278c27e343c252ae3ade176a3faff","isMergeCommit":false,"messageTitle":"Chatbot.java: Fix spelling error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"3756fd39590e1545820e1eb66fddd4496a1b2598","isMergeCommit":false,"messageTitle":"Fix parameters exception and add command exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":27}}}]},{"date":"2024-01-23","commitResults":[{"hash":"6e9a876e9f46f906be40d14c8fd1a100c99761ef","isMergeCommit":false,"messageTitle":"Chatbot.java: Add mark and unmark functions exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":20}}},{"hash":"f71bc7bdf6e39a7764d327e86b7bfa12d8aced58","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"b155c5e6c23836b26381f2c856ef8fa0b785e7f7","isMergeCommit":false,"messageTitle":"Fix Switch case coding style in Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":28}}},{"hash":"8e9f0cec544c4a02a2c1e20b65f460183b358cf3","isMergeCommit":false,"messageTitle":"Add save feature for ChatBot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":1}}},{"hash":"42db2d9b7c5a61f8d1c10033c157257c17ca34d3","isMergeCommit":false,"messageTitle":"Add Load Tasks from File feature for Chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":15}}},{"hash":"77180863be1d5a7515fbbefbcbc7621c1b0d6d18","isMergeCommit":true,"messageTitle":"Add Save Feature for Chatbot","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e96549f8778363bafd986034f5c6639c19ec53c","isMergeCommit":false,"messageTitle":"Add some rough implementation of LocalDateTime in Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"db461d71a9c9f5270caeb082fe97f3ab898bdb05","isMergeCommit":false,"messageTitle":"fix errors when file does not exist when loading","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"5da736bec8e02053848736d81ff169fd936ce72e","isMergeCommit":false,"messageTitle":"Add fully working implementation of DateTime in Deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"7ff918eaba1b625ffbd99a4622157c9e7726c2e5","isMergeCommit":true,"messageTitle":"Add DateTime implementation for Deadline","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"349b0ebf5e354f0115d017259dd01808aea2e459","isMergeCommit":false,"messageTitle":"Clean unused methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":65}}},{"hash":"fd2b3724311707a0b63a8ebc971437b8c36d7ba3","isMergeCommit":false,"messageTitle":"Add new Storage, TaskList, Parser and Command class for more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":186,"deletions":0}}},{"hash":"c038b144337a5f7122f09cbc78cc6ad3d2236bba","isMergeCommit":false,"messageTitle":"Adding Working Add/List/Exit commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":280,"deletions":248}}},{"hash":"97aa5e9dabf5f56ee862195bec11396bde8875f4","isMergeCommit":false,"messageTitle":"Add working Mark Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":43}}},{"hash":"5a1da37e6b769deeaf0f04316ebbfc5a15d9bd4d","isMergeCommit":false,"messageTitle":"Add working unmark Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}},{"hash":"ce41f67bf45f25844abacd4e33ff03366923babe","isMergeCommit":false,"messageTitle":"Add working Deleted Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":19}}},{"hash":"bf4eddacf4b1a2755adcd0a526b9dedf7f29202b","isMergeCommit":false,"messageTitle":"Clean up imports and unused classes, Add some customisation potential for greet and bye","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":208}}},{"hash":"129d075fa5f849dc0b7f82ee2f69885b5194d2e2","isMergeCommit":false,"messageTitle":"Clean unused constructors and imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":18}}},{"hash":"f4f4a77312fe9c132e5e6d36150f8af58da28f4d","isMergeCommit":false,"messageTitle":"Add more readable UI replies for the ChatBot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"85d7f14c8161094605907901050366b816060d0d","isMergeCommit":true,"messageTitle":"Refactor to make the code more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"790a82036d0ee031e017c528b75f756bd1df079c","isMergeCommit":false,"messageTitle":"Divide classes into command, task, storage, ui, exception, parser packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":15}}},{"hash":"b298a6781f9a3fb3198d3c9b4dd2dfccbbcaeb28","isMergeCommit":true,"messageTitle":"Divide classes into task, command, parser, ui, storage, exception packages","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"8671544c4ecf471b1b315a70390f6aaff33939fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/vnnamng/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"22cb5b10ad0cdf9a2e18692990b6a928d0aa135a","isMergeCommit":false,"messageTitle":"Fix package problem with Duke Class not in duke folder","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"7f1a9625137429f8ef80cbd1501649db759bb543","isMergeCommit":false,"messageTitle":"Changing to correct main class for gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"8ddd17cb95975caac7642094db7e9cdd9d0070e8","isMergeCommit":false,"messageTitle":"Add dummy tests to check for gradle test","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"4e30f96bb074420e1feb36c1bfea1cbcb29db045","isMergeCommit":false,"messageTitle":"Add some Unit Test for Parser, Storage and TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":21}}},{"hash":"3946d4f8739e734a294a6dfc0d081efe464cce47","isMergeCommit":false,"messageTitle":"Add archieve version for gradle build","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"vnnamng":{"java":907,"md":0,"fxml":0,"sh":5,"bat":1,"gradle":2,"txt":17}},"authorContributionVariance":{"vnnamng":198332.05},"authorDisplayNameMap":{"vnnamng":"NGUY.. NAM"}} diff --git a/wang-xinrong_ip_master/authorship.json b/wang-xinrong_ip_master/authorship.json index f5d24dca..91c37079 100644 --- a/wang-xinrong_ip_master/authorship.json +++ b/wang-xinrong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"Initial planning for the implementation of the Duke project Chatbot","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"date: 25 Jan 2024","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"Overall Description:","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":"The project aims to build a Personal Assistant Chatbot that helps a person to keep track of various things","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":"Level 0","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":"- rename: Liv","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":"- Greet the user once launched","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":"- Exits after the conversation is finished","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":"- Try to adhere to singleton principle by keeping only one Liv active","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":"- abstract greet() and exit() behaviour","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":"- store lines locally in functions, simply as strings. ","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":"\t- rationale: given the purpose of the bot being to track various things, it is likely not to need many lines","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":"Level 1","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":"- echo the user input when it is not \"bye\"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":"- exits when the input is \"bye\"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":"- uses enum for states","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":"- implement a ProcessInput function to handle inputs","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"wang-xinrong"},"content":"Level 2","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"wang-xinrong"},"content":"- add: add items to the agenda","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"wang-xinrong"},"content":"- list: list the items added, in chronological order","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"wang-xinrong"},"content":"\t- the index by which it is listed must provide access to the item when searching/deleting","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"wang-xinrong"},"content":"- item: implement as class Task","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"wang-xinrong"},"content":"- list: implement with LinkedList","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"wang-xinrong"},"content":"\t- rationale: to allow ease of access and update","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"wang-xinrong"},"content":"Level 3:","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"wang-xinrong"},"content":"- mark task as done","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"wang-xinrong"},"content":"- mark task as not done","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"wang-xinrong"},"content":"- add isDone boolean field to Task class and implement relevant functions","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"wang-xinrong"},"content":"Level 4:","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"wang-xinrong"},"content":"- split task into three types:","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"wang-xinrong"},"content":"\t- todo: basically a task","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"wang-xinrong"},"content":"\t- deadline: a task with a deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"wang-xinrong"},"content":"\t\t- additional param: /by","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"wang-xinrong"},"content":"\t- events: a task with a start and end time","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"wang-xinrong"},"content":"\t\t- additional param: /from /to","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"wang-xinrong"},"content":"- when adding a task, finish by giving the number of tasks in the list","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"wang-xinrong"},"content":"Implementation:","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"wang-xinrong"},"content":"- make task an abstract class with the method ","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"wang-xinrong"},"content":"Challenges:","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"wang-xinrong"},"content":"- the different parsing delimiter for different tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"wang-xinrong"},"content":"\t- observation: the information can be processed and stored by individual classes","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"wang-xinrong"},"content":"Level 5:","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"wang-xinrong"},"content":"- error handling","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"wang-xinrong"},"content":"- introduced various exception classes","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"wang-xinrong"},"content":"Level 6:","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"wang-xinrong"},"content":"Requirement:","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"wang-xinrong"},"content":"- delete task","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"wang-xinrong"},"content":"- use delete method of LinkedList","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"wang-xinrong":108}},{"path":"src/main/java/CommandNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class CommandNotFoundException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":" public CommandNotFoundException(String command) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" super(\"Command not found: \" + command);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"wang-xinrong":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" private String by \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" public Deadline(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":" super(TaskType.DEADLINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" delimiter \u003d \"deadline|/by\";","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" command \u003d \"deadline\";","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":" setUpTask(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" public String printType() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":" return \"D\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":" public void setUpTask(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" input \u003d input.trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" if (!input.contains(command)) throw new RuntimeException(\"not deadline\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":" String[] inputArray \u003d Task.NextWords(input.split(delimiter));","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" description \u003d inputArray[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" by \u003d inputArray[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" } catch (ArrayIndexOutOfBoundsException | NullPointerException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":" throw new MissingInputFieldException(type);","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":" return \"[\" + printType() + \"]\" + \"[\" + getIsDoneStatus() + \"] \"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":" + description + \" \" + \"(by: \" + by + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"wang-xinrong"},"content":" public String convertToDataRow() {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"wang-xinrong"},"content":" return super.convertToDataRow() + dataStringSplitter + by;","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":40}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" private String from \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" private String to \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":" public Event(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" super(TaskType.EVENT);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" delimiter \u003d \"event|/from|/to\";","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":" command \u003d \"event\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":" setUpTask(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":" public String printType() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":" return \"E\";","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" public void setUpTask(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" input \u003d input.trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":" if (!input.contains(command)) throw new RuntimeException(\"not todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" String[] inputArray \u003d Task.NextWords(input.split(delimiter));","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" description \u003d inputArray[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" from \u003d inputArray[1].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":" to \u003d inputArray[2].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" } catch (ArrayIndexOutOfBoundsException | NullPointerException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" throw new MissingInputFieldException(type);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":" return \"[\" + printType() + \"]\" + \"[\" + getIsDoneStatus() + \"] \"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":" + description + \" \" + \"(from: \"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"wang-xinrong"},"content":" public String convertToDataRow() {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"wang-xinrong"},"content":" return super.convertToDataRow() + dataStringSplitter + from + dataStringSplitter + to;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":43}},{"path":"src/main/java/HorizontalLine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class HorizontalLine {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":" private static HorizontalLine instance \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" // default line length is set to 10","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" private static int lineLength \u003d 50;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" private HorizontalLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" // necessary setup","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" public static HorizontalLine getInstance() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" instance \u003d new HorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" return instance;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" public void setLineLength(int length) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" lineLength \u003d length;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" public void printLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" for (int i \u003d 0; i \u003c lineLength; i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" System.out.print(\"-\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":29}},{"path":"src/main/java/InputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public abstract class InputException extends Exception{","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":" public InputException(String message) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" super(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"wang-xinrong":5}},{"path":"src/main/java/Liv.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"import java.util.LinkedList;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":"// name of the chat bot","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"public class Liv {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":" // to adhere to the singleton pattern","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" private enum State {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" ACTIVE_TALKING,","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":" things to be handled in ACTIVE_TALKING state:","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":" - print words to say","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" ACTIVE_LISTENING,","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" things to be handled in ACTIVE_LISTENING state:","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" - take in user input","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" - process the input","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" INACTIVE","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" private static Liv instance \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":" private static HorizontalLine horizontalLine \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" private State currentState;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" private static Scanner scanner \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":" private static LinkedList\u003cTask\u003e tasks \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":" private static String dataFilePath \u003d \"Data/savedTasks.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":" private Liv() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":" // initial setup","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":" horizontalLine \u003d HorizontalLine.getInstance();","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":" currentState \u003d State.INACTIVE;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"wang-xinrong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"wang-xinrong"},"content":" tasks \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"wang-xinrong"},"content":" loadFromMemory();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"wang-xinrong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"wang-xinrong"},"content":" private void loadFromMemory() throws FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"wang-xinrong"},"content":" File file \u003d new File(dataFilePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"wang-xinrong"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"wang-xinrong"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"wang-xinrong"},"content":" loadSingleRowOfData(scanner.nextLine());","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"wang-xinrong"},"content":" private int getNumOfTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"wang-xinrong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"wang-xinrong"},"content":" private void loadSingleRowOfData(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"wang-xinrong"},"content":" tasks.add(Task.convertDataToTask(s));","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"wang-xinrong"},"content":" private void saveToMemory() {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"wang-xinrong"},"content":" String dataToWrite \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"wang-xinrong"},"content":" for (int i \u003d 1; i \u003c\u003d getNumOfTasks(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"wang-xinrong"},"content":" dataToWrite +\u003d tasks.get(i - 1).convertToDataRow();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"wang-xinrong"},"content":" if (i \u003c getNumOfTasks()) dataToWrite +\u003d System.lineSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"wang-xinrong"},"content":" writeToFile(dataFilePath, dataToWrite);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"wang-xinrong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"wang-xinrong"},"content":" private static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"wang-xinrong"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"wang-xinrong"},"content":" fileWriter.write(textToAdd);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"wang-xinrong"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"wang-xinrong"},"content":" public static Liv getInstance() {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"wang-xinrong"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"wang-xinrong"},"content":" instance \u003d new Liv();","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"wang-xinrong"},"content":" return instance;","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"wang-xinrong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"wang-xinrong"},"content":" getInstance().Start();","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"wang-xinrong"},"content":" private void Start() {","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"wang-xinrong"},"content":" instance.ToggleActiveState();","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"wang-xinrong"},"content":" instance.Greet();","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"wang-xinrong"},"content":" while (IsActive()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"wang-xinrong"},"content":" // should start the cycle talking","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"wang-xinrong"},"content":" String userInput \u003d StartListening();","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"wang-xinrong"},"content":" try{","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"wang-xinrong"},"content":" ProcessInput(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"wang-xinrong"},"content":" } catch (InputException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"wang-xinrong"},"content":" speak(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"wang-xinrong"},"content":" private void Greet() {","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(\"Hello there, Liv here.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(\"How may I help you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"wang-xinrong"},"content":" private void EndSession() {","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"wang-xinrong"},"content":" // should be called from ACTIVE_LISTENING STATE, exception handling?","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"wang-xinrong"},"content":" ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(\"Hope you find my service helpful.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(\"Till next time!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"wang-xinrong"},"content":" ToggleActiveState();","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"wang-xinrong"},"content":" private void ToggleConversationState() {","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"wang-xinrong"},"content":" horizontalLine.printLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"wang-xinrong"},"content":" if (currentState \u003d\u003d State.ACTIVE_TALKING) {","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"wang-xinrong"},"content":" currentState \u003d State.ACTIVE_LISTENING;","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"wang-xinrong"},"content":" if (currentState \u003d\u003d State.ACTIVE_LISTENING) {","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"wang-xinrong"},"content":" currentState \u003d State.ACTIVE_TALKING;","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"wang-xinrong"},"content":" private void ToggleActiveState() {","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"wang-xinrong"},"content":" horizontalLine.printLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"wang-xinrong"},"content":" if (currentState !\u003d State.INACTIVE) {","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"wang-xinrong"},"content":" currentState \u003d State.INACTIVE;","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"wang-xinrong"},"content":" if (currentState \u003d\u003d State.INACTIVE) {","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"wang-xinrong"},"content":" currentState \u003d State.ACTIVE_TALKING;","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"wang-xinrong"},"content":" private String StartListening() {","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"wang-xinrong"},"content":" // should be called from ACTIVE_TALKING STATE","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"wang-xinrong"},"content":" if (currentState \u003d\u003d State.ACTIVE_TALKING) ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"wang-xinrong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"wang-xinrong"},"content":" private void EndListening() {","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"wang-xinrong"},"content":" if (currentState \u003d\u003d State.ACTIVE_TALKING) ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"wang-xinrong"},"content":" private boolean IsActive() {","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"wang-xinrong"},"content":" return currentState !\u003d State.INACTIVE;","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"wang-xinrong"},"content":" private void ProcessInput(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"wang-xinrong"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"wang-xinrong"},"content":" // for multi-word commands","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"wang-xinrong"},"content":" if (words[0].equals(\"mark\") || words[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"wang-xinrong"},"content":" if (isInteger(words[1])) {","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"wang-xinrong"},"content":" boolean isDone \u003d words[0].equals(\"mark\");","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"wang-xinrong"},"content":" int taskIndex \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"wang-xinrong"},"content":" speak(setTaskDoneWithIndex(taskIndex, words[0], isDone));","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"wang-xinrong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"wang-xinrong"},"content":" speak(\"Action failed: task index input is not an integer\");","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"wang-xinrong"},"content":" if (words[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"wang-xinrong"},"content":" if (isInteger(words[1])) {","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"wang-xinrong"},"content":" int taskIndex \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"wang-xinrong"},"content":" Task deletedTask \u003d deleteTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"wang-xinrong"},"content":" speak(\"Noted. I\u0027ve removed this task:\"","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"wang-xinrong"},"content":" + \"\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"wang-xinrong"},"content":" + \" \"","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"wang-xinrong"},"content":" + deletedTask","lastModifiedDate":"2024-01-26"},{"lineNumber":186,"author":{"gitId":"wang-xinrong"},"content":" + \"\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":187,"author":{"gitId":"wang-xinrong"},"content":" + \"Now you have \" + getNumOfTasks() + \" tasks in the list.\");//input);","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":189,"author":{"gitId":"wang-xinrong"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":190,"author":{"gitId":"wang-xinrong"},"content":" speak(\"Action failed: task index input is not an integer\");","lastModifiedDate":"2024-01-26"},{"lineNumber":191,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":192,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":193,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":194,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":195,"author":{"gitId":"wang-xinrong"},"content":" if (words[0].equals(\"todo\")","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"wang-xinrong"},"content":" || words[0].equals(\"deadline\")","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"wang-xinrong"},"content":" || words[0].equals(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"wang-xinrong"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"wang-xinrong"},"content":" newTask \u003d Task.createTask(words[0], input);","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"wang-xinrong"},"content":" addTask(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"wang-xinrong"},"content":" speak(\"Got it. I\u0027ve added this task:\"","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"wang-xinrong"},"content":" + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"wang-xinrong"},"content":" + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"wang-xinrong"},"content":" + newTask","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"wang-xinrong"},"content":" + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"wang-xinrong"},"content":" + \"Now you have \" + getNumOfTasks() + \" tasks in the list.\");//input);","lastModifiedDate":"2024-01-29"},{"lineNumber":208,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":209,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"wang-xinrong"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"wang-xinrong"},"content":" EndSession();","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"wang-xinrong"},"content":" saveToMemory();","lastModifiedDate":"2024-01-29"},{"lineNumber":215,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"wang-xinrong"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"wang-xinrong"},"content":" listTasks();","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"wang-xinrong"},"content":" if (input.equals(\"print tasks\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":224,"author":{"gitId":"wang-xinrong"},"content":" speak(tasks.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":225,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":226,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":227,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":228,"author":{"gitId":"wang-xinrong"},"content":" throw new CommandNotFoundException(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":229,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"wang-xinrong"},"content":" private void speak(String output) {","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"wang-xinrong"},"content":" ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"wang-xinrong"},"content":" ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"wang-xinrong"},"content":" private void listTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"wang-xinrong"},"content":" ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":239,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"wang-xinrong"},"content":" for (int i \u003d 1; i \u003c\u003d getNumOfTasks(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":241,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(i + \".\" + tasks.get(i - 1).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"wang-xinrong"},"content":" ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"wang-xinrong"},"content":" private void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"wang-xinrong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":250,"author":{"gitId":"wang-xinrong"},"content":" private boolean isInteger(String str) {","lastModifiedDate":"2024-01-25"},{"lineNumber":251,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":252,"author":{"gitId":"wang-xinrong"},"content":" Integer.parseInt(str);","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"wang-xinrong"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"wang-xinrong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"wang-xinrong"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"wang-xinrong"},"content":" // takes in the listed index of the task (1 larger than storage index)","lastModifiedDate":"2024-01-25"},{"lineNumber":260,"author":{"gitId":"wang-xinrong"},"content":" private String setTaskDoneWithIndex(int index, String isDoneUpdateString, boolean isDone)","lastModifiedDate":"2024-01-29"},{"lineNumber":261,"author":{"gitId":"wang-xinrong"},"content":" throws TaskIndexOutOfBoundsException {","lastModifiedDate":"2024-01-26"},{"lineNumber":262,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":263,"author":{"gitId":"wang-xinrong"},"content":" tasks.get(index - 1).setIsDone(isDoneUpdateString, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":264,"author":{"gitId":"wang-xinrong"},"content":" return tasks.get(index - 1).updateIsDoneMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":265,"author":{"gitId":"wang-xinrong"},"content":" } catch (NullPointerException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":266,"author":{"gitId":"wang-xinrong"},"content":" throw new TaskIndexOutOfBoundsException(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":267,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":268,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":269,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":270,"author":{"gitId":"wang-xinrong"},"content":" private Task deleteTask(int index) throws TaskIndexOutOfBoundsException {","lastModifiedDate":"2024-01-26"},{"lineNumber":271,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":272,"author":{"gitId":"wang-xinrong"},"content":" Task deletedTask \u003d tasks.remove(index - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":273,"author":{"gitId":"wang-xinrong"},"content":" return deletedTask;","lastModifiedDate":"2024-01-26"},{"lineNumber":274,"author":{"gitId":"wang-xinrong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":275,"author":{"gitId":"wang-xinrong"},"content":" throw new TaskIndexOutOfBoundsException(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":276,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":277,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":278,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":278}},{"path":"src/main/java/MissingInputFieldException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class MissingInputFieldException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" public MissingInputFieldException(Task.TaskType type) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" super(\"Missing input fields: \" + type.toString().toLowerCase());","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"wang-xinrong":6}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" protected TaskType type;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" public static String delimiter;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" public static String command;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":" protected static String dataStringSplitter \u003d \" \\\\| \";","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" public enum TaskType {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" TODO,","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":" EVENT,","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" UNRECOGNIZED","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":" // temporary solution","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" public static String[] NextWords(String[] words) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" String[] result \u003d new String[words.length];","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":" int index \u003d 0;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" for (String s : words) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" if (!s.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":" result[index] \u003d s;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" index++;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":" return result;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":" public static Task createTask(String type, String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":" if (type.equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":" return new ToDo(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"wang-xinrong"},"content":" } else if (type.equals(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"wang-xinrong"},"content":" return new Deadline(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"wang-xinrong"},"content":" } else if (type.equals(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"wang-xinrong"},"content":" return new Event(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"wang-xinrong"},"content":" return null;","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"wang-xinrong"},"content":" public Task(TaskType type) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"wang-xinrong"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"wang-xinrong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"wang-xinrong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"wang-xinrong"},"content":" return description;","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"wang-xinrong"},"content":" public void setIsDone(String isDoneUpdateString, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"wang-xinrong"},"content":" // obsolete toggles","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"wang-xinrong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"wang-xinrong"},"content":" protected char getIsDoneStatus() {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"wang-xinrong"},"content":" return isDone ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"wang-xinrong"},"content":" public String updateIsDoneMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"wang-xinrong"},"content":" if (isDone) return \"Nice! I\u0027ve marked this task as done:\"","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"wang-xinrong"},"content":" + \u0027\\n\u0027","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"wang-xinrong"},"content":" + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"wang-xinrong"},"content":" + toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"wang-xinrong"},"content":" if (!isDone) return \"OK, I\u0027ve marked this task as not done yet:\"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"wang-xinrong"},"content":" + \u0027\\n\u0027","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"wang-xinrong"},"content":" + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"wang-xinrong"},"content":" + toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"wang-xinrong"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"wang-xinrong"},"content":" public String[] parseInput(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"wang-xinrong"},"content":" return input.split(delimiter);","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"wang-xinrong"},"content":" public String convertToDataRow() {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"wang-xinrong"},"content":" return printType() + \" | \" + boolToInt(isDone) + \" | \" + description;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"wang-xinrong"},"content":" private static int boolToInt(boolean b) {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"wang-xinrong"},"content":" return b ? 1 : 0;","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"wang-xinrong"},"content":" public abstract String printType();","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"wang-xinrong"},"content":" public abstract void setUpTask(String input) throws MissingInputFieldException;","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"wang-xinrong"},"content":" public static Task convertDataToTask(String dataRow) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"wang-xinrong"},"content":" String[] inputArray \u003d NextWords(Task.NextWords(dataRow.split(dataStringSplitter)));","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"wang-xinrong"},"content":" if (!isTaskStringArray(inputArray)) throw new RuntimeException(\"Data Corrupted: No Matching Task Type\");","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"wang-xinrong"},"content":" Task temp \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"wang-xinrong"},"content":" if (inputArray[0].equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"wang-xinrong"},"content":" temp \u003d createTask(\"todo\", \"todo \" + inputArray[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"wang-xinrong"},"content":" } else if (inputArray[0].equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"wang-xinrong"},"content":" temp \u003d createTask(\"event\", \"event \" + inputArray[2] + \" /from \" + inputArray[3] + \" /to\" + inputArray[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"wang-xinrong"},"content":" } else if (inputArray[0].equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"wang-xinrong"},"content":" temp \u003d createTask(\"deadline\", \"deadline \"+ inputArray[2] + \" /by \" + inputArray[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"wang-xinrong"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"wang-xinrong"},"content":" throw new RuntimeException(\"Data Corrupted: No Matching Task Type\");","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"wang-xinrong"},"content":" if (isTaskDataEntryDone(inputArray)) temp.isDone \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"wang-xinrong"},"content":" return temp;","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"wang-xinrong"},"content":" } catch (MissingInputFieldException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"wang-xinrong"},"content":" throw new RuntimeException(\"Data Corrupted: Missing Input Field\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"wang-xinrong"},"content":" private static boolean isTaskStringArray(String[] inputArray) {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"wang-xinrong"},"content":" return inputArray[0].equals(\"T\") ||","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"wang-xinrong"},"content":" inputArray[0].equals(\"E\") ||","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"wang-xinrong"},"content":" inputArray[0].equals(\"D\");","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"wang-xinrong"},"content":" private static boolean isTaskDataEntryDone(String[] inputArray) {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"wang-xinrong"},"content":" return inputArray[1].equals(\"1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":125}},{"path":"src/main/java/TaskIndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class TaskIndexOutOfBoundsException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" TaskIndexOutOfBoundsException(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" super(\"Task not found: task number \" + index);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"wang-xinrong":6}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" public ToDo(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" super(TaskType.TODO);","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" delimiter \u003d \"todo\";","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":" command \u003d \"todo\";","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" setUpTask(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" public String printType() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" return \"T\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" public void setUpTask(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":" input \u003d input.trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" if (!input.contains(command)) throw new RuntimeException(\"not todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" String[] inputArray \u003d Task.NextWords(input.split(delimiter));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" description \u003d inputArray[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" throw new MissingInputFieldException(type);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":" return \"[\" + printType() + \"]\" + \"[\" + getIsDoneStatus() + \"] \" + getDescription();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":" public String convertToDataRow() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":" return super.convertToDataRow();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":36}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"event yoga class /from Sat 2pm /to 3pm","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"todo practise speaking English","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":"unmark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":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":"wang-xinrong"},"content":"java -classpath ../bin Liv \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"wang-xinrong":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"Initial planning for the implementation of the Duke project Chatbot","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"date: 25 Jan 2024","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"Overall Description:","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":"The project aims to build a Personal Assistant Chatbot that helps a person to keep track of various things","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":"Level 0","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":"- rename: Liv","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":"- Greet the user once launched","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":"- Exits after the conversation is finished","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":"- Try to adhere to singleton principle by keeping only one Liv active","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":"- abstract greet() and exit() behaviour","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":"- store lines locally in functions, simply as strings. ","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":"\t- rationale: given the purpose of the bot being to track various things, it is likely not to need many lines","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":"Level 1","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":"- echo the user input when it is not \"bye\"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":"- exits when the input is \"bye\"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":"- uses enum for states","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":"- implement a ProcessInput function to handle inputs","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"wang-xinrong"},"content":"Level 2","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"wang-xinrong"},"content":"- add: add items to the agenda","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"wang-xinrong"},"content":"- list: list the items added, in chronological order","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"wang-xinrong"},"content":"\t- the index by which it is listed must provide access to the item when searching/deleting","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"wang-xinrong"},"content":"- item: implement as class Task","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"wang-xinrong"},"content":"- list: implement with LinkedList","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"wang-xinrong"},"content":"\t- rationale: to allow ease of access and update","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"wang-xinrong"},"content":"Level 3:","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"wang-xinrong"},"content":"- mark task as done","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"wang-xinrong"},"content":"- mark task as not done","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"wang-xinrong"},"content":"- add isDone boolean field to Task class and implement relevant functions","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"wang-xinrong"},"content":"Level 4:","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"wang-xinrong"},"content":"- split task into three types:","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"wang-xinrong"},"content":"\t- todo: basically a task","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"wang-xinrong"},"content":"\t- deadline: a task with a deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"wang-xinrong"},"content":"\t\t- additional param: /by","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"wang-xinrong"},"content":"\t- events: a task with a start and end time","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"wang-xinrong"},"content":"\t\t- additional param: /from /to","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"wang-xinrong"},"content":"- when adding a task, finish by giving the number of tasks in the list","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"wang-xinrong"},"content":"Implementation:","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"wang-xinrong"},"content":"- make task an abstract class with the method ","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"wang-xinrong"},"content":"Challenges:","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"wang-xinrong"},"content":"- the different parsing delimiter for different tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"wang-xinrong"},"content":"\t- observation: the information can be processed and stored by individual classes","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"wang-xinrong"},"content":"Level 5:","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"wang-xinrong"},"content":"Requirements:","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"wang-xinrong"},"content":"- error handling","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"wang-xinrong"},"content":"- introduced various exception classes","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"wang-xinrong"},"content":"_____________________________________________________","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"wang-xinrong"},"content":"Level 6:","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"wang-xinrong"},"content":"Requirement:","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"wang-xinrong"},"content":"- delete task","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"wang-xinrong"},"content":"Design:","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"wang-xinrong"},"content":"- use delete method of LinkedList","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"wang-xinrong":108}},{"path":"src/main/java/CommandNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class CommandNotFoundException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":" public CommandNotFoundException(String command) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" super(\"Command not found: \" + command);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"wang-xinrong":5}},{"path":"src/main/java/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"public class CommandParser {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":" private static DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"ddMMyy\u0027T\u0027HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" public static LocalDateTime parseDateAndTime(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" return LocalDateTime.parse(input, dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" public static String convertDateTimeToCommandFormat(LocalDateTime localDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" return localDateTime.format(dateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"wang-xinrong":14}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" private LocalDateTime by \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" public Deadline(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" super(TaskType.DEADLINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":" delimiter \u003d \"deadline|/by\";","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":" command \u003d \"deadline\";","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" setUpTask(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":" public String printType() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" return \"D\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" public void setUpTask(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":" input \u003d input.trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" if (!input.contains(command)) throw new RuntimeException(\"not deadline\");","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" String[] inputArray \u003d Task.NextWords(input.split(delimiter));","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" description \u003d inputArray[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":" by \u003d CommandParser.parseDateAndTime(inputArray[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" } catch (ArrayIndexOutOfBoundsException | NullPointerException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" throw new MissingInputFieldException(type);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":" return \"[\" + printType() + \"]\" + \"[\" + getIsDoneStatus() + \"] \"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":" + description + \" \" + \"(by: \" + Ui.printTime(by) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"wang-xinrong"},"content":" public String convertToDataRow() {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"wang-xinrong"},"content":" return super.convertToDataRow() + 0 + storageDataStringSplitter +","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"wang-xinrong"},"content":" Storage.convertDateTimeForStorage(by);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":43}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" private LocalDateTime from \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":" private LocalDateTime to \u003d null;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" public Event(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":" super(TaskType.EVENT);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":" delimiter \u003d \"event|/from|/to\";","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" command \u003d \"event\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" setUpTask(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" public String printType() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" return \"E\";","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" public void setUpTask(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" input \u003d input.trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" if (!input.contains(command)) throw new RuntimeException(\"not todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" String[] inputArray \u003d Task.NextWords(input.split(delimiter));","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":" description \u003d inputArray[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" from \u003d CommandParser.parseDateAndTime(inputArray[1].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" to \u003d CommandParser.parseDateAndTime(inputArray[2].trim());","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":" } catch (ArrayIndexOutOfBoundsException | NullPointerException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":" throw new MissingInputFieldException(type);","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":" return \"[\" + printType() + \"]\" + \"[\" + getIsDoneStatus() + \"] \"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"wang-xinrong"},"content":" + description + \" \" + \"(from: \"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"wang-xinrong"},"content":" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"wang-xinrong"},"content":" public String convertToDataRow() {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"wang-xinrong"},"content":" return super.convertToDataRow() + storageDataStringSplitter + Storage.convertDateTimeForStorage(from) +","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"wang-xinrong"},"content":" storageDataStringSplitter + Storage.convertDateTimeForStorage(to);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":46}},{"path":"src/main/java/HorizontalLine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class HorizontalLine {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":" private static HorizontalLine instance \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" // default line length is set to 10","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" private static int lineLength \u003d 50;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" private HorizontalLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" // necessary setup","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" public static HorizontalLine getInstance() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" instance \u003d new HorizontalLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" return instance;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" public void setLineLength(int length) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" lineLength \u003d length;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" public void printLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" for (int i \u003d 0; i \u003c lineLength; i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" System.out.print(\"-\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" System.out.println();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":29}},{"path":"src/main/java/InputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public abstract class InputException extends Exception{","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":" public InputException(String message) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" super(message);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"wang-xinrong":5}},{"path":"src/main/java/Liv.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"import java.util.LinkedList;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":"// name of the chat bot","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"public class Liv {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":" // to adhere to the singleton pattern","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" private enum State {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" ACTIVE_TALKING,","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":" things to be handled in ACTIVE_TALKING state:","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":" - print words to say","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" ACTIVE_LISTENING,","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":" /*","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" things to be handled in ACTIVE_LISTENING state:","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" - take in user input","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" - process the input","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" INACTIVE","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" private static Liv instance \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":" private static HorizontalLine horizontalLine \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" private State currentState;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" private static Scanner scanner \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":" private static LinkedList\u003cTask\u003e tasks \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":" private static String dataFilePath \u003d \"Data/savedTasks.txt\";","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":" private Liv() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":" // initial setup","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":" horizontalLine \u003d HorizontalLine.getInstance();","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":" currentState \u003d State.INACTIVE;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"wang-xinrong"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"wang-xinrong"},"content":" tasks \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"wang-xinrong"},"content":" loadFromMemory();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"wang-xinrong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"wang-xinrong"},"content":" private void loadFromMemory() throws FileNotFoundException {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"wang-xinrong"},"content":" File file \u003d new File(dataFilePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"wang-xinrong"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"wang-xinrong"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"wang-xinrong"},"content":" loadSingleRowOfData(scanner.nextLine());","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"wang-xinrong"},"content":" private int getNumOfTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"wang-xinrong"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"wang-xinrong"},"content":" private void loadSingleRowOfData(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"wang-xinrong"},"content":" tasks.add(Task.convertDataToTask(s));","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"wang-xinrong"},"content":" private void saveToMemory() {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"wang-xinrong"},"content":" String dataToWrite \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"wang-xinrong"},"content":" for (int i \u003d 1; i \u003c\u003d getNumOfTasks(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"wang-xinrong"},"content":" dataToWrite +\u003d tasks.get(i - 1).convertToDataRow();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"wang-xinrong"},"content":" if (i \u003c getNumOfTasks()) dataToWrite +\u003d System.lineSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"wang-xinrong"},"content":" writeToFile(dataFilePath, dataToWrite);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"wang-xinrong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"wang-xinrong"},"content":" private static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"wang-xinrong"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"wang-xinrong"},"content":" fileWriter.write(textToAdd);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"wang-xinrong"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"wang-xinrong"},"content":" public static Liv getInstance() {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"wang-xinrong"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"wang-xinrong"},"content":" instance \u003d new Liv();","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"wang-xinrong"},"content":" return instance;","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"wang-xinrong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"wang-xinrong"},"content":" getInstance().Start();","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"wang-xinrong"},"content":" private void Start() {","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"wang-xinrong"},"content":" instance.ToggleActiveState();","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"wang-xinrong"},"content":" instance.Greet();","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"wang-xinrong"},"content":" while (IsActive()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"wang-xinrong"},"content":" // should start the cycle talking","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"wang-xinrong"},"content":" String userInput \u003d StartListening();","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"wang-xinrong"},"content":" try{","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"wang-xinrong"},"content":" ProcessInput(userInput);","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"wang-xinrong"},"content":" } catch (InputException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"wang-xinrong"},"content":" speak(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"wang-xinrong"},"content":" private void Greet() {","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(\"Hello there, Liv here.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(\"How may I help you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"wang-xinrong"},"content":" private void EndSession() {","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"wang-xinrong"},"content":" // should be called from ACTIVE_LISTENING STATE, exception handling?","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"wang-xinrong"},"content":" ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(\"Hope you find my service helpful.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(\"Till next time!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"wang-xinrong"},"content":" ToggleActiveState();","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"wang-xinrong"},"content":" private void ToggleConversationState() {","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"wang-xinrong"},"content":" horizontalLine.printLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"wang-xinrong"},"content":" if (currentState \u003d\u003d State.ACTIVE_TALKING) {","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"wang-xinrong"},"content":" currentState \u003d State.ACTIVE_LISTENING;","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"wang-xinrong"},"content":" if (currentState \u003d\u003d State.ACTIVE_LISTENING) {","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"wang-xinrong"},"content":" currentState \u003d State.ACTIVE_TALKING;","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"wang-xinrong"},"content":" private void ToggleActiveState() {","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"wang-xinrong"},"content":" horizontalLine.printLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"wang-xinrong"},"content":" if (currentState !\u003d State.INACTIVE) {","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"wang-xinrong"},"content":" currentState \u003d State.INACTIVE;","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"wang-xinrong"},"content":" if (currentState \u003d\u003d State.INACTIVE) {","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"wang-xinrong"},"content":" currentState \u003d State.ACTIVE_TALKING;","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"wang-xinrong"},"content":" private String StartListening() {","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"wang-xinrong"},"content":" // should be called from ACTIVE_TALKING STATE","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"wang-xinrong"},"content":" if (currentState \u003d\u003d State.ACTIVE_TALKING) ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"wang-xinrong"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"wang-xinrong"},"content":" private void EndListening() {","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"wang-xinrong"},"content":" if (currentState \u003d\u003d State.ACTIVE_TALKING) ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":158,"author":{"gitId":"wang-xinrong"},"content":" private boolean IsActive() {","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"wang-xinrong"},"content":" return currentState !\u003d State.INACTIVE;","lastModifiedDate":"2024-01-25"},{"lineNumber":160,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":161,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":162,"author":{"gitId":"wang-xinrong"},"content":" private void ProcessInput(String input) throws InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":164,"author":{"gitId":"wang-xinrong"},"content":" String[] words \u003d input.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"wang-xinrong"},"content":" // for multi-word commands","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"wang-xinrong"},"content":" if (words[0].equals(\"mark\") || words[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"wang-xinrong"},"content":" if (isInteger(words[1])) {","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"wang-xinrong"},"content":" boolean isDone \u003d words[0].equals(\"mark\");","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"wang-xinrong"},"content":" int taskIndex \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"wang-xinrong"},"content":" speak(setTaskDoneWithIndex(taskIndex, words[0], isDone));","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"wang-xinrong"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"wang-xinrong"},"content":" speak(\"Action failed: task index input is not an integer\");","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"wang-xinrong"},"content":" if (words[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":179,"author":{"gitId":"wang-xinrong"},"content":" if (isInteger(words[1])) {","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"wang-xinrong"},"content":" int taskIndex \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":181,"author":{"gitId":"wang-xinrong"},"content":" Task deletedTask \u003d deleteTask(taskIndex);","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"wang-xinrong"},"content":" speak(\"Noted. I\u0027ve removed this task:\"","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"wang-xinrong"},"content":" + \"\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"wang-xinrong"},"content":" + \" \"","lastModifiedDate":"2024-01-26"},{"lineNumber":185,"author":{"gitId":"wang-xinrong"},"content":" + deletedTask","lastModifiedDate":"2024-01-26"},{"lineNumber":186,"author":{"gitId":"wang-xinrong"},"content":" + \"\\n\"","lastModifiedDate":"2024-01-26"},{"lineNumber":187,"author":{"gitId":"wang-xinrong"},"content":" + \"Now you have \" + getNumOfTasks() + \" tasks in the list.\");//input);","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":189,"author":{"gitId":"wang-xinrong"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":190,"author":{"gitId":"wang-xinrong"},"content":" speak(\"Action failed: task index input is not an integer\");","lastModifiedDate":"2024-01-26"},{"lineNumber":191,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":192,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":193,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":194,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":195,"author":{"gitId":"wang-xinrong"},"content":" if (words[0].equals(\"todo\")","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"wang-xinrong"},"content":" || words[0].equals(\"deadline\")","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"wang-xinrong"},"content":" || words[0].equals(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"wang-xinrong"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"wang-xinrong"},"content":" newTask \u003d Task.createTask(words[0], input);","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"wang-xinrong"},"content":" addTask(newTask);","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"wang-xinrong"},"content":" speak(\"Got it. I\u0027ve added this task:\"","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"wang-xinrong"},"content":" + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"wang-xinrong"},"content":" + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"wang-xinrong"},"content":" + newTask","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"wang-xinrong"},"content":" + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"wang-xinrong"},"content":" + \"Now you have \" + getNumOfTasks() + \" tasks in the list.\");//input);","lastModifiedDate":"2024-01-29"},{"lineNumber":208,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":209,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"wang-xinrong"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"wang-xinrong"},"content":" EndSession();","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"wang-xinrong"},"content":" saveToMemory();","lastModifiedDate":"2024-01-29"},{"lineNumber":215,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"wang-xinrong"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"wang-xinrong"},"content":" listTasks();","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"wang-xinrong"},"content":" if (input.equals(\"print tasks\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":224,"author":{"gitId":"wang-xinrong"},"content":" speak(tasks.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":225,"author":{"gitId":"wang-xinrong"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":226,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":227,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":228,"author":{"gitId":"wang-xinrong"},"content":" throw new CommandNotFoundException(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":229,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"wang-xinrong"},"content":" private void speak(String output) {","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"wang-xinrong"},"content":" ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(output);","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"wang-xinrong"},"content":" ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"wang-xinrong"},"content":" private void listTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"wang-xinrong"},"content":" ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":239,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"wang-xinrong"},"content":" for (int i \u003d 1; i \u003c\u003d getNumOfTasks(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":241,"author":{"gitId":"wang-xinrong"},"content":" System.out.println(i + \".\" + tasks.get(i - 1).toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"wang-xinrong"},"content":" ToggleConversationState();","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"wang-xinrong"},"content":" private void addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"wang-xinrong"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":250,"author":{"gitId":"wang-xinrong"},"content":" private boolean isInteger(String str) {","lastModifiedDate":"2024-01-25"},{"lineNumber":251,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":252,"author":{"gitId":"wang-xinrong"},"content":" Integer.parseInt(str);","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"wang-xinrong"},"content":" return true;","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"wang-xinrong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"wang-xinrong"},"content":" return false;","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"wang-xinrong"},"content":" // takes in the listed index of the task (1 larger than storage index)","lastModifiedDate":"2024-01-25"},{"lineNumber":260,"author":{"gitId":"wang-xinrong"},"content":" private String setTaskDoneWithIndex(int index, String isDoneUpdateString, boolean isDone)","lastModifiedDate":"2024-01-29"},{"lineNumber":261,"author":{"gitId":"wang-xinrong"},"content":" throws TaskIndexOutOfBoundsException {","lastModifiedDate":"2024-01-26"},{"lineNumber":262,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":263,"author":{"gitId":"wang-xinrong"},"content":" tasks.get(index - 1).setIsDone(isDoneUpdateString, isDone);","lastModifiedDate":"2024-01-29"},{"lineNumber":264,"author":{"gitId":"wang-xinrong"},"content":" return tasks.get(index - 1).updateIsDoneMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":265,"author":{"gitId":"wang-xinrong"},"content":" } catch (NullPointerException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":266,"author":{"gitId":"wang-xinrong"},"content":" throw new TaskIndexOutOfBoundsException(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":267,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":268,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":269,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":270,"author":{"gitId":"wang-xinrong"},"content":" private Task deleteTask(int index) throws TaskIndexOutOfBoundsException {","lastModifiedDate":"2024-01-26"},{"lineNumber":271,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":272,"author":{"gitId":"wang-xinrong"},"content":" Task deletedTask \u003d tasks.remove(index - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":273,"author":{"gitId":"wang-xinrong"},"content":" return deletedTask;","lastModifiedDate":"2024-01-26"},{"lineNumber":274,"author":{"gitId":"wang-xinrong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":275,"author":{"gitId":"wang-xinrong"},"content":" throw new TaskIndexOutOfBoundsException(index);","lastModifiedDate":"2024-01-26"},{"lineNumber":276,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":277,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":278,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":278}},{"path":"src/main/java/MissingInputFieldException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class MissingInputFieldException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" public MissingInputFieldException(Task.TaskType type) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" super(\"Missing input fields: \" + type.toString().toLowerCase());","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"wang-xinrong":6}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"import java.util.Date;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":" public static String convertDateTimeForStorage(LocalDateTime localDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" return CommandParser.convertDateTimeToCommandFormat(localDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"wang-xinrong":9}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" protected TaskType type;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" public static String delimiter;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" public static String command;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":" protected static String dataStringSplitter \u003d \" \\\\| \";","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" // temporary measure before storage related methods are migrated over to the storage class","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" protected static String storageDataStringSplitter \u003d \" | \";","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":" public enum TaskType {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":" TODO,","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" DEADLINE,","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" EVENT,","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":" UNRECOGNIZED","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" // temporary solution","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" public static String[] NextWords(String[] words) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" String[] result \u003d new String[words.length];","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" int index \u003d 0;","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":" for (String s : words) {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" if (!s.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" result[index] \u003d s;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":" index++;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":" return result;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":" public static Task createTask(String type, String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"wang-xinrong"},"content":" if (type.equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"wang-xinrong"},"content":" return new ToDo(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"wang-xinrong"},"content":" } else if (type.equals(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"wang-xinrong"},"content":" return new Deadline(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"wang-xinrong"},"content":" } else if (type.equals(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"wang-xinrong"},"content":" return new Event(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"wang-xinrong"},"content":" return null;","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"wang-xinrong"},"content":" public Task(TaskType type) {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"wang-xinrong"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"wang-xinrong"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"wang-xinrong"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"wang-xinrong"},"content":" return description;","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"wang-xinrong"},"content":" public void setIsDone(String isDoneUpdateString, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"wang-xinrong"},"content":" // obsolete toggles","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"wang-xinrong"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"wang-xinrong"},"content":" protected char getIsDoneStatus() {","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"wang-xinrong"},"content":" return isDone ? \u0027X\u0027 : \u0027 \u0027;","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"wang-xinrong"},"content":" public String updateIsDoneMessage() {","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"wang-xinrong"},"content":" if (isDone) return \"Nice! I\u0027ve marked this task as done:\"","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"wang-xinrong"},"content":" + \u0027\\n\u0027","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"wang-xinrong"},"content":" + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"wang-xinrong"},"content":" + toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"wang-xinrong"},"content":" if (!isDone) return \"OK, I\u0027ve marked this task as not done yet:\"","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"wang-xinrong"},"content":" + \u0027\\n\u0027","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"wang-xinrong"},"content":" + \" \"","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"wang-xinrong"},"content":" + toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"wang-xinrong"},"content":" return null;","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"wang-xinrong"},"content":" public String[] parseInput(String input) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"wang-xinrong"},"content":" return input.split(delimiter);","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"wang-xinrong"},"content":" public String convertToDataRow() {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"wang-xinrong"},"content":" return printType() + storageDataStringSplitter + boolToInt(isDone) + storageDataStringSplitter + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"wang-xinrong"},"content":" private static int boolToInt(boolean b) {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"wang-xinrong"},"content":" return b ? 1 : 0;","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"wang-xinrong"},"content":" public abstract String printType();","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"wang-xinrong"},"content":" public abstract void setUpTask(String input) throws MissingInputFieldException;","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"wang-xinrong"},"content":" public static Task convertDataToTask(String dataRow) {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"wang-xinrong"},"content":" String[] inputArray \u003d NextWords(Task.NextWords(dataRow.split(dataStringSplitter)));","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"wang-xinrong"},"content":" if (!isTaskStringArray(inputArray)) throw new RuntimeException(\"Data Corrupted: No Matching Task Type\");","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"wang-xinrong"},"content":" Task temp \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"wang-xinrong"},"content":" if (inputArray[0].equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"wang-xinrong"},"content":" temp \u003d createTask(\"todo\", \"todo \" + inputArray[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"wang-xinrong"},"content":" } else if (inputArray[0].equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"wang-xinrong"},"content":" temp \u003d createTask(\"event\", \"event \" + inputArray[2] + \" /from \" + inputArray[3] + \" /to\" + inputArray[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"wang-xinrong"},"content":" } else if (inputArray[0].equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"wang-xinrong"},"content":" temp \u003d createTask(\"deadline\", \"deadline \"+ inputArray[2] + \" /by \" + inputArray[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"wang-xinrong"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"wang-xinrong"},"content":" throw new RuntimeException(\"Data Corrupted: No Matching Task Type\");","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"wang-xinrong"},"content":" if (isTaskDataEntryDone(inputArray)) temp.isDone \u003d true;","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"wang-xinrong"},"content":" return temp;","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"wang-xinrong"},"content":" } catch (MissingInputFieldException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"wang-xinrong"},"content":" throw new RuntimeException(\"Data Corrupted: Missing Input Field\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"wang-xinrong"},"content":" private static boolean isTaskStringArray(String[] inputArray) {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"wang-xinrong"},"content":" return inputArray[0].equals(\"T\") ||","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"wang-xinrong"},"content":" inputArray[0].equals(\"E\") ||","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"wang-xinrong"},"content":" inputArray[0].equals(\"D\");","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"wang-xinrong"},"content":" private static boolean isTaskDataEntryDone(String[] inputArray) {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"wang-xinrong"},"content":" return inputArray[1].equals(\"1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":127}},{"path":"src/main/java/TaskIndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class TaskIndexOutOfBoundsException extends InputException {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" TaskIndexOutOfBoundsException(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" super(\"Task not found: task number \" + index);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"wang-xinrong":6}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":" public ToDo(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":" super(TaskType.TODO);","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" delimiter \u003d \"todo\";","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":" command \u003d \"todo\";","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" setUpTask(input);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":" public String printType() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":" return \"T\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"wang-xinrong"},"content":" public void setUpTask(String input) throws MissingInputFieldException {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"wang-xinrong"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"wang-xinrong"},"content":" input \u003d input.trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"wang-xinrong"},"content":" if (!input.contains(command)) throw new RuntimeException(\"not todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"wang-xinrong"},"content":" String[] inputArray \u003d Task.NextWords(input.split(delimiter));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"wang-xinrong"},"content":" description \u003d inputArray[0].trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"wang-xinrong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"wang-xinrong"},"content":" throw new MissingInputFieldException(type);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"wang-xinrong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"wang-xinrong"},"content":" return \"[\" + printType() + \"]\" + \"[\" + getIsDoneStatus() + \"] \" + getDescription();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"wang-xinrong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"wang-xinrong"},"content":" public String convertToDataRow() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"wang-xinrong"},"content":" return super.convertToDataRow();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":36}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":" private static DateTimeFormatter printDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd YYYY HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":" public static String printTime(LocalDateTime localDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":" return localDateTime.format(printDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"wang-xinrong":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wang-xinrong"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"wang-xinrong"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"wang-xinrong"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"wang-xinrong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"wang-xinrong"},"content":"event yoga class /from Sat 2pm /to 3pm","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"wang-xinrong"},"content":"todo practise speaking English","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"wang-xinrong"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"wang-xinrong"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"wang-xinrong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"wang-xinrong"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"wang-xinrong"},"content":"unmark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"wang-xinrong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"wang-xinrong"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"wang-xinrong":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":"wang-xinrong"},"content":"java -classpath ../bin Liv \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"wang-xinrong":1,"-":37}}] diff --git a/wang-xinrong_ip_master/commits.json b/wang-xinrong_ip_master/commits.json index 31926e9d..a65a846b 100644 --- a/wang-xinrong_ip_master/commits.json +++ b/wang-xinrong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"wang-xinrong":[{"date":"2024-01-25","commitResults":[{"hash":"ea93f7c2666526422a37e974ab88fbce5650270c","isMergeCommit":false,"messageTitle":"added Liv and HorizontalLine classes, updated README.md with planning records","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":10},"md":{"insertions":22,"deletions":24}}},{"hash":"894619510ea9c2727b9ffe0fa2db71bb10dc161e","isMergeCommit":false,"messageTitle":"added echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":5},"md":{"insertions":12,"deletions":0}}},{"hash":"f274a80a72b0615259cb0d626c715040f2a5ce5c","isMergeCommit":false,"messageTitle":"implemented add and list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1},"md":{"insertions":25,"deletions":2}}},{"hash":"e3bb3edad112c719f6aee78e34c53aa6137a73ff","isMergeCommit":false,"messageTitle":"implemented mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":5},"md":{"insertions":22,"deletions":0}}},{"hash":"5ef30fbb309a854d114dbb782262625efb79784c","isMergeCommit":false,"messageTitle":"implemented ToDo, Deadline and Event classes","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":156,"deletions":15},"md":{"insertions":21,"deletions":5}}},{"hash":"180a579ab0c399061cdc76d374e9678d7428c417","isMergeCommit":false,"messageTitle":"implemented aumotated TextUI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"af2b8a38186432a0db36446ef4e6dd50f4b792ef","isMergeCommit":false,"messageTitle":"implemented basic error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":70},"md":{"insertions":13,"deletions":0}}},{"hash":"2a880c32c01bc46d025411d902511f2aa96bf29e","isMergeCommit":false,"messageTitle":"implemented task deletion","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"ad1edc7c95cba825c85ba7b3bf1386f16ad7371a","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":80,"deletions":8}}},{"hash":"a65372fea4da8cffd04d9626016949c0b405a358","isMergeCommit":false,"messageTitle":"Add load functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":64,"deletions":33}}},{"hash":"e0186058235851a7a976d0a39c4ea96d688a047b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wang-xinrong":{"java":573,"md":108,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":13}},"authorContributionVariance":{"wang-xinrong":33329.11},"authorDisplayNameMap":{"wang-xinrong":"CS2103T-T11-4 WANG..RONG"}} +{"authorDailyContributionsMap":{"wang-xinrong":[{"date":"2024-01-25","commitResults":[{"hash":"ea93f7c2666526422a37e974ab88fbce5650270c","isMergeCommit":false,"messageTitle":"added Liv and HorizontalLine classes, updated README.md with planning records","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":10},"md":{"insertions":22,"deletions":24}}},{"hash":"894619510ea9c2727b9ffe0fa2db71bb10dc161e","isMergeCommit":false,"messageTitle":"added echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":5},"md":{"insertions":12,"deletions":0}}},{"hash":"f274a80a72b0615259cb0d626c715040f2a5ce5c","isMergeCommit":false,"messageTitle":"implemented add and list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1},"md":{"insertions":25,"deletions":2}}},{"hash":"e3bb3edad112c719f6aee78e34c53aa6137a73ff","isMergeCommit":false,"messageTitle":"implemented mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":5},"md":{"insertions":22,"deletions":0}}},{"hash":"5ef30fbb309a854d114dbb782262625efb79784c","isMergeCommit":false,"messageTitle":"implemented ToDo, Deadline and Event classes","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":156,"deletions":15},"md":{"insertions":21,"deletions":5}}},{"hash":"180a579ab0c399061cdc76d374e9678d7428c417","isMergeCommit":false,"messageTitle":"implemented aumotated TextUI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"af2b8a38186432a0db36446ef4e6dd50f4b792ef","isMergeCommit":false,"messageTitle":"implemented basic error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":70},"md":{"insertions":13,"deletions":0}}},{"hash":"2a880c32c01bc46d025411d902511f2aa96bf29e","isMergeCommit":false,"messageTitle":"implemented task deletion","messageBody":"","tags":["Level-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"ad1edc7c95cba825c85ba7b3bf1386f16ad7371a","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":80,"deletions":8}}},{"hash":"a65372fea4da8cffd04d9626016949c0b405a358","isMergeCommit":false,"messageTitle":"Add load functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":64,"deletions":33}}},{"hash":"e0186058235851a7a976d0a39c4ea96d688a047b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"b4070b8d1bfe04b4cdfddb91b146eb8fc35feb4d","isMergeCommit":false,"messageTitle":"add Dates and Times functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":10}}},{"hash":"8ed1e6837a3ac6ff795c92170461f054f44d9c8d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wang-xinrong":{"java":614,"md":108,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":13}},"authorContributionVariance":{"wang-xinrong":30631.244},"authorDisplayNameMap":{"wang-xinrong":"CS2103T-T11-4 WANG..RONG"}} diff --git a/yashma-sonara_ip_master/authorship.json b/yashma-sonara_ip_master/authorship.json index b8f29413..68ee1da8 100644 --- a/yashma-sonara_ip_master/authorship.json +++ b/yashma-sonara_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"T | 0 | j","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"T | 0 | f","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"E | 1 | e | sun from mon","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" protected String originalBy;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" private static final DateTimeFormatter OUTPUT_DATE_FORMATTER \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" this.originalBy \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" this.by \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" // Format: D | 0/1 | description | by date","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + this.originalBy;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" public String getBy() {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" return \" (by: \" + this.by.format(OUTPUT_DATE_FORMATTER) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" return \"[D]\" + super.toString() + this.getBy();","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":29}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-20"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-20"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" public enum Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" BYE, LIST, MARK, DELETE, TODO, DEADLINE, EVENT, UNKNOWN","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" ui.showWelcomeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" String userInput \u003d ui.getUserInput();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" if (userInput.equals(\"Bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" isExit \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" Parser.parseAndExecute(userInput, tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" ui.showGoodbyeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yashma-sonara":49,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"// DukeExceptions.java","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public static class EmptyTodoDescriptionException extends DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" public EmptyTodoDescriptionException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" super(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public static class UnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" public UnknownCommandException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" super(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":22}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public String getAt() {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" return this.start + \" from \" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" // Format: E | 0/1 | description | at from to","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + getAt();","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":25}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.io.IOError;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" public Parser() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" public static void parseAndExecute(String userInput, TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" //String[] words \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" String commandStr \u003d userInput.toUpperCase();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" switch (commandStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" case \"BYE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" // Handle BYE command","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" ui.showGoodbyeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" System.exit(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" case \"LIST\":","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" // Handle LIST command","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" tasks.listTasks(ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" case \"DELETE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" //if (words.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" // throw new DukeException(\"The task number to mark is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" //}","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" //nt taskNumberMark \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" if (ui.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" int num \u003d ui.getUserInputInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" tasks.removeTasks(num, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"The task number to mark is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" break; // Add break statement","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" case \"MARK\":","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":" // Handle MARK command","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" if (ui.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" int num \u003d ui.getUserInputInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" tasks.markTasks(num, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"The task number to mark is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"yashma-sonara"},"content":" case \"DEADLINE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yashma-sonara"},"content":" parseDeadline( tasks, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"yashma-sonara"},"content":" case \"EVENT\":","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"yashma-sonara"},"content":" parseEvent( tasks, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"yashma-sonara"},"content":" case \"TODO\":","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"yashma-sonara"},"content":" parseTodo( tasks, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"yashma-sonara"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"yashma-sonara"},"content":" public static void parseDeadline( TaskList tasks, Ui ui) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"yashma-sonara"},"content":" /*if (words.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Insufficient information for creating a deadline task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d words[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"yashma-sonara"},"content":" String byKeyword \u003d words[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"yashma-sonara"},"content":" String time \u003d words[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"yashma-sonara"},"content":" if (!byKeyword.equals(\"/by\") || description.isEmpty() || time.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description and deadline time cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"yashma-sonara"},"content":" // Attempt to create a Deadline with the provided description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Deadline(description, time));","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"yashma-sonara"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"yashma-sonara"},"content":" // Handle the case where the date format is incorrect","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"OOPS!!! Incorrect date format. Please enter the date in the format yyyy-MM-dd.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"yashma-sonara"},"content":" }*/","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"yashma-sonara"},"content":" String inputLine \u003d ui.getUserInput3().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"yashma-sonara"},"content":" // Check if there\u0027s \"/by\" in the input","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"yashma-sonara"},"content":" if (!inputLine.contains(\"/by\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! Please provide a deadline time using \u0027/by\u0027.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"yashma-sonara"},"content":" // Split the input into description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"yashma-sonara"},"content":" String[] parts \u003d inputLine.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"yashma-sonara"},"content":" String time \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"yashma-sonara"},"content":" // Check if description or time is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"yashma-sonara"},"content":" if (description.isEmpty() || time.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description and deadline time cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"yashma-sonara"},"content":" // Attempt to create a Deadline with the provided description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Deadline(description, time));","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"yashma-sonara"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"yashma-sonara"},"content":" // Handle the case where the date format is incorrect","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"OOPS!!! Incorrect date format. Please enter the date in the format yyyy-MM-dd.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"yashma-sonara"},"content":" public static void parseEvent( TaskList tasks, Ui ui) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"yashma-sonara"},"content":" /*if (words.length \u003c 6) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Insufficient information for creating a event task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d words[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"yashma-sonara"},"content":" String fromKeyword \u003d words[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"yashma-sonara"},"content":" String fromTime \u003d words[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"yashma-sonara"},"content":" String toKeyword \u003d words[4];","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"yashma-sonara"},"content":" String toTime \u003d words[5];","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"yashma-sonara"},"content":" if (!fromKeyword.equals(\"/from\") || !toKeyword.equals(\"/to\") || description.isEmpty() || fromTime.isEmpty() || toTime.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description and event time cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"yashma-sonara"},"content":" // Attempt to create a Deadline with the provided description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Event(description, fromTime, toTime));","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"yashma-sonara"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"yashma-sonara"},"content":" // Handle the case where the date format is incorrect","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(\"OOPS!!! Incorrect date format. Please enter the date in the format yyyy-MM-dd.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"yashma-sonara"},"content":" } */","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"yashma-sonara"},"content":" String inputLineEvent \u003d ui.getUserInput3().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"yashma-sonara"},"content":" if (!inputLineEvent.contains(\"/from\") || !inputLineEvent.contains(\"/to\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! Please provide event timing using \u0027/from\u0027 and \u0027/to\u0027.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"yashma-sonara"},"content":" String[] partsEvent \u003d inputLineEvent.split(\"/from\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"yashma-sonara"},"content":" String descriptionEvent \u003d partsEvent[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"yashma-sonara"},"content":" // Check if the description is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"yashma-sonara"},"content":" if (descriptionEvent.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"yashma-sonara"},"content":" partsEvent \u003d partsEvent[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"yashma-sonara"},"content":" String from \u003d partsEvent[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"yashma-sonara"},"content":" String to \u003d partsEvent[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"yashma-sonara"},"content":" // Check if \"from\" or \"to\" is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"yashma-sonara"},"content":" if (from.isEmpty() || to.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The event timing cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Event(descriptionEvent, from, to));","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"yashma-sonara"},"content":" public static void parseTodo( TaskList tasks, Ui ui) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"yashma-sonara"},"content":" /* if (words.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Insufficient information for creating a event task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d words[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Todo(description)); */","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"yashma-sonara"},"content":" String descriptionTodo \u003d ui.getUserInput2().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(descriptionTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"yashma-sonara"},"content":" // Check if description is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"yashma-sonara"},"content":" if (descriptionTodo.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Todo(descriptionTodo));","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"yashma-sonara"},"content":" public static Task parseTaskFromLine(String line) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"yashma-sonara"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid task format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"yashma-sonara"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"yashma-sonara"},"content":" boolean isDone \u003d Integer.parseInt(parts[1]) \u003d\u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"yashma-sonara"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"yashma-sonara"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"yashma-sonara"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"yashma-sonara"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid deadline format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"yashma-sonara"},"content":" String by \u003d parts[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"yashma-sonara"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid event format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"yashma-sonara"},"content":" String[] eventParts \u003d parts[3].split(\" from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"yashma-sonara"},"content":" if (eventParts.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid event format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"yashma-sonara"},"content":" String start \u003d eventParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"yashma-sonara"},"content":" String end \u003d eventParts[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"yashma-sonara"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid task type in file. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"yashma-sonara"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"yashma-sonara"},"content":" task.setStatus();","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"yashma-sonara"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":277}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" private String FILE_PATH;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" public Storage(String file) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" this.FILE_PATH \u003d file;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public void saveTasks(ArrayList\u003cTask\u003e store) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" file.getParentFile().mkdirs(); // Create parent directories if they don\u0027t exist","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" file.createNewFile(); // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" FileWriter fileWriter \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" for (Task task : store) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(\"b\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(\"line\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" fileScanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":55}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" private static int numOfTasks \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" numOfTasks++;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" public static void decrementTotal() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" numOfTasks--;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" public static int getNumOfTasks() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" return numOfTasks;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" public void setStatus() {","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" this.isDone \u003d !isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" return (\"[\" + this.getStatusIcon() + \"]\" + \" \" + this.description);","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"yashma-sonara":35}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" return this.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" public void addTasks(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" public void markTasks(int index, Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" tasks.get(index - 1).setStatus();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" ui.markedMessage(tasks.get(index - 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" public void removeTasks(int in, Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" Task temp \u003d tasks.get(in - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" tasks.remove(in - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" ui.deleteMessage(temp.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" ui.showError(\"OOPS!!! The task number is out of bounds. Please provide a valid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" public void listTasks(Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" ui.showMessage(\"There are no tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" ui.showMessage(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" ui.showMessage((i + 1) + \". \" + tasks.get(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":50}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" // Format: T | 0/1 | description","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" return \"[T]\" + super.toString() ;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":18}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" public void showWelcomeMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Hello! I\u0027m Duke. What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" public String getUserInput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" System.out.print(\"Enter your command: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" return scanner.next();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" public String getUserInput3() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" //System.out.print(\"Enter your command: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" public void deleteMessage(String str) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"I have deleted the below command: \\n\" + str);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" public String getUserInput2() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" //System.out.print(\"Enter your command: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" return scanner.next();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" public int getUserInputInt() {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" return scanner.nextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" public boolean hasNextInt() {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" return scanner.hasNextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" public void showGoodbyeMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Bye! Hope to see you again soon.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error: \" + errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error loading tasks from file. Starting with an empty task list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":" public void markedMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"\\t\" + \"Nice! I\u0027ve marked this task \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" \"as done:\" + \"\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" \"\\t \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"yashma-sonara"},"content":" public void showMessage(String str) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":60}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"todo Borrow a book","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"deadline Return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"event party /from Mon 2pm /to Mon 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":8}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"T | 0 | j","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"E | 1 | e | sun from mon","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"T | 0 | j","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-20"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-20"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" public enum Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" BYE, LIST, MARK, DELETE, TODO, DEADLINE, EVENT, UNKNOWN","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" ui.showWelcomeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" String userInput \u003d ui.getUserInput();","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" if (userInput.equals(\"Bye\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" isExit \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" Parser.parseAndExecute(userInput, tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" ui.showGoodbyeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" new Duke(\"data/duke.txt\").run();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yashma-sonara":53,"-":2}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"// DukeExceptions.java","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" public static class EmptyTodoDescriptionException extends DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" public EmptyTodoDescriptionException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" super(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" public static class UnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" public UnknownCommandException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" super(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":23}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"import java.io.IOError;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" public Parser() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" public static void parseAndExecute(String userInput, TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" //String[] words \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" String commandStr \u003d userInput.toUpperCase();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" switch (commandStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" case \"BYE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" // Handle BYE command","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" ui.showGoodbyeMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" System.exit(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" case \"LIST\":","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" // Handle LIST command","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" tasks.listTasks(ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" case \"DELETE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" //if (words.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" // throw new DukeException(\"The task number to mark is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" //}","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" //nt taskNumberMark \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" if (ui.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" int num \u003d ui.getUserInputInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" tasks.removeTasks(num, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"The task number to mark is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" break; // Add break statement","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" case \"MARK\":","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":" // Handle MARK command","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" if (ui.hasNextInt()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" int num \u003d ui.getUserInputInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":" tasks.markTasks(num, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"The task number to mark is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"yashma-sonara"},"content":" case \"DEADLINE\":","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"yashma-sonara"},"content":" parseDeadline( tasks, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"yashma-sonara"},"content":" case \"EVENT\":","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"yashma-sonara"},"content":" parseEvent( tasks, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"yashma-sonara"},"content":" case \"TODO\":","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"yashma-sonara"},"content":" parseTodo( tasks, ui);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"yashma-sonara"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"yashma-sonara"},"content":" public static void parseDeadline( TaskList tasks, Ui ui) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"yashma-sonara"},"content":" /*if (words.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Insufficient information for creating a deadline task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d words[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"yashma-sonara"},"content":" String byKeyword \u003d words[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"yashma-sonara"},"content":" String time \u003d words[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"yashma-sonara"},"content":" if (!byKeyword.equals(\"/by\") || description.isEmpty() || time.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description and deadline time cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"yashma-sonara"},"content":" // Attempt to create a Deadline with the provided description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Deadline(description, time));","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"yashma-sonara"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"yashma-sonara"},"content":" // Handle the case where the date format is incorrect","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"OOPS!!! Incorrect date format. Please enter the date in the format yyyy-MM-dd.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"yashma-sonara"},"content":" }*/","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"yashma-sonara"},"content":" String inputLine \u003d ui.getUserInput3().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"yashma-sonara"},"content":" // Check if there\u0027s \"/by\" in the input","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"yashma-sonara"},"content":" if (!inputLine.contains(\"/by\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! Please provide a deadline time using \u0027/by\u0027.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"yashma-sonara"},"content":" // Split the input into description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"yashma-sonara"},"content":" String[] parts \u003d inputLine.split(\"/by\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"yashma-sonara"},"content":" String time \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"yashma-sonara"},"content":" // Check if description or time is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"yashma-sonara"},"content":" if (description.isEmpty() || time.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description and deadline time cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"yashma-sonara"},"content":" // Attempt to create a Deadline with the provided description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Deadline(description, time));","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"yashma-sonara"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"yashma-sonara"},"content":" // Handle the case where the date format is incorrect","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"OOPS!!! Incorrect date format. Please enter the date in the format yyyy-MM-dd.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"yashma-sonara"},"content":" public static void parseEvent( TaskList tasks, Ui ui) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"yashma-sonara"},"content":" /*if (words.length \u003c 6) {","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Insufficient information for creating a event task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d words[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"yashma-sonara"},"content":" String fromKeyword \u003d words[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"yashma-sonara"},"content":" String fromTime \u003d words[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"yashma-sonara"},"content":" String toKeyword \u003d words[4];","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"yashma-sonara"},"content":" String toTime \u003d words[5];","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"yashma-sonara"},"content":" if (!fromKeyword.equals(\"/from\") || !toKeyword.equals(\"/to\") || description.isEmpty() || fromTime.isEmpty() || toTime.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description and event time cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"yashma-sonara"},"content":" // Attempt to create a Deadline with the provided description and time","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Event(description, fromTime, toTime));","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"yashma-sonara"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"yashma-sonara"},"content":" // Handle the case where the date format is incorrect","lastModifiedDate":"2024-01-30"},{"lineNumber":170,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(\"OOPS!!! Incorrect date format. Please enter the date in the format yyyy-MM-dd.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"yashma-sonara"},"content":" } */","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"yashma-sonara"},"content":" String inputLineEvent \u003d ui.getUserInput3().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"yashma-sonara"},"content":" if (!inputLineEvent.contains(\"/from\") || !inputLineEvent.contains(\"/to\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! Please provide event timing using \u0027/from\u0027 and \u0027/to\u0027.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"yashma-sonara"},"content":" String[] partsEvent \u003d inputLineEvent.split(\"/from\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"yashma-sonara"},"content":" String descriptionEvent \u003d partsEvent[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"yashma-sonara"},"content":" // Check if the description is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"author":{"gitId":"yashma-sonara"},"content":" if (descriptionEvent.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":189,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"yashma-sonara"},"content":" partsEvent \u003d partsEvent[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"yashma-sonara"},"content":" String from \u003d partsEvent[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"yashma-sonara"},"content":" String to \u003d partsEvent[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"yashma-sonara"},"content":" // Check if \"from\" or \"to\" is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"yashma-sonara"},"content":" if (from.isEmpty() || to.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The event timing cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Event(descriptionEvent, from, to));","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"yashma-sonara"},"content":" public static void parseTodo( TaskList tasks, Ui ui) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"yashma-sonara"},"content":" /* if (words.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Insufficient information for creating a event task.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d words[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Todo(description)); */","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"yashma-sonara"},"content":" String descriptionTodo \u003d ui.getUserInput2().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(descriptionTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"yashma-sonara"},"content":" // Check if description is empty","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"yashma-sonara"},"content":" if (descriptionTodo.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"yashma-sonara"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"yashma-sonara"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":234,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"yashma-sonara"},"content":" tasks.addTasks(new Todo(descriptionTodo));","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"yashma-sonara"},"content":" public static Task parseTaskFromLine(String line) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"yashma-sonara"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid task format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"yashma-sonara"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"yashma-sonara"},"content":" boolean isDone \u003d Integer.parseInt(parts[1]) \u003d\u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"yashma-sonara"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"yashma-sonara"},"content":" Task task;","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"yashma-sonara"},"content":" switch (type) {","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"yashma-sonara"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"yashma-sonara"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid deadline format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"yashma-sonara"},"content":" String by \u003d parts[3];","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"yashma-sonara"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"yashma-sonara"},"content":" if (parts.length \u003c 4) {","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid event format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"yashma-sonara"},"content":" String[] eventParts \u003d parts[3].split(\" from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"yashma-sonara"},"content":" if (eventParts.length \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid event format. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"yashma-sonara"},"content":" String start \u003d eventParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"yashma-sonara"},"content":" String end \u003d eventParts[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"yashma-sonara"},"content":" task \u003d new Event(description, start, end);","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"yashma-sonara"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"yashma-sonara"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"yashma-sonara"},"content":" throw new IOException(\"Invalid task type in file. Skipping line.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"yashma-sonara"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"yashma-sonara"},"content":" task.setStatus();","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"yashma-sonara"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":282}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" private String FILE_PATH;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" public Storage(String file) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" this.FILE_PATH \u003d file;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" public void saveTasks(ArrayList\u003cTask\u003e store) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" file.getParentFile().mkdirs(); // Create parent directories if they don\u0027t exist","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" file.createNewFile(); // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" FileWriter fileWriter \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" for (Task task : store) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(\"b\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" //System.out.println(\"line\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":" fileScanner.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":" return tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"yashma-sonara"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yashma-sonara"},"content":" throw new DukeException(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":60}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" public TaskList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" return this.tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" public void addTasks(Task t) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" public void markTasks(int index, Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" tasks.get(index - 1).setStatus();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" ui.markedMessage(tasks.get(index - 1));","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" ui.showError(\"OOPS!!! The task number is out of bounds. Please provide a valid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":" public void removeTasks(int in, Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" Task temp \u003d tasks.get(in - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" tasks.remove(in - 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":" ui.deleteMessage(temp.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" ui.showError(\"OOPS!!! The task number is out of bounds. Please provide a valid task number.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" public void listTasks(Ui ui) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":" ui.showMessage(\"There are no tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" ui.showMessage(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":" ui.showMessage((i + 1) + \". \" + tasks.get(i).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":58}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"package duke;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" public void showWelcomeMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Hello! I\u0027m Duke. What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" public String getUserInput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" System.out.print(\"Enter your command: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" return scanner.next();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" public String getUserInput3() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" //System.out.print(\"Enter your command: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" public void deleteMessage(String str) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"I have deleted the below command: \\n\" + str);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" public String getUserInput2() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":" //System.out.print(\"Enter your command: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" return scanner.next();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" public int getUserInputInt() {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":" return scanner.nextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yashma-sonara"},"content":" public boolean hasNextInt() {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yashma-sonara"},"content":" return scanner.hasNextInt();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yashma-sonara"},"content":" public void showGoodbyeMessage() {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Bye! Hope to see you again soon.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yashma-sonara"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error: \" + errorMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yashma-sonara"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"Error loading tasks from file. Starting with an empty task list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yashma-sonara"},"content":" public void markedMessage(Task task) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(\"\\t\" + \"Nice! I\u0027ve marked this task \" +","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yashma-sonara"},"content":" \"as done:\" + \"\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"yashma-sonara"},"content":" \"\\t \" + task);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"yashma-sonara"},"content":" public void showMessage(String str) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"yashma-sonara"},"content":" System.out.println(str);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yashma-sonara":65}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" protected String originalBy;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" private static final DateTimeFormatter OUTPUT_DATE_FORMATTER \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" this.originalBy \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" this.by \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" // Format: D | 0/1 | description | by date","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + this.originalBy;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" public String getBy() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" return \" (by: \" + this.by.format(OUTPUT_DATE_FORMATTER) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":" return \"[D]\" + super.toString() + this.getBy();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":30}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" protected String start;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" protected String end;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" public String getAt() {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" return this.start + \" from \" + this.end;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" // Format: E | 0/1 | description | at from to","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + getAt();","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":26}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" private static int numOfTasks \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" numOfTasks++;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"yashma-sonara"},"content":" public static void decrementTotal() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yashma-sonara"},"content":" numOfTasks--;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yashma-sonara"},"content":" public static int getNumOfTasks() {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yashma-sonara"},"content":" return numOfTasks;","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yashma-sonara"},"content":" public void setStatus() {","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"yashma-sonara"},"content":" this.isDone \u003d !isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"yashma-sonara"},"content":" return (\"[\" + this.getStatusIcon() + \"]\" + \" \" + this.description);","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"yashma-sonara":36}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"package duke.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"yashma-sonara"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"yashma-sonara"},"content":" // Format: T | 0/1 | description","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"yashma-sonara"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"yashma-sonara"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yashma-sonara"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yashma-sonara"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yashma-sonara"},"content":" return \"[T]\" + super.toString() ;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yashma-sonara"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yashma-sonara"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yashma-sonara"},"content":"todo Borrow a book","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yashma-sonara"},"content":"deadline Return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yashma-sonara"},"content":"event party /from Mon 2pm /to Mon 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yashma-sonara"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yashma-sonara"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yashma-sonara"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yashma-sonara":8}}] diff --git a/yashma-sonara_ip_master/commits.json b/yashma-sonara_ip_master/commits.json index 7042d6b0..f2db22b4 100644 --- a/yashma-sonara_ip_master/commits.json +++ b/yashma-sonara_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yashma-sonara":[{"date":"2024-01-20","commitResults":[{"hash":"67e2ea5ae58ced674395e2aa9286c78965377213","isMergeCommit":false,"messageTitle":"Completed Level-0 increment","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"9d7b0896ac362f09769bf660d40b0ca8e900c408","isMergeCommit":false,"messageTitle":"Completed Level-1 increment","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"342aed7cf231158b2e860eede769185bc04a22de","isMergeCommit":false,"messageTitle":"Completed Level-2 increment","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}}]},{"date":"2024-01-21","commitResults":[{"hash":"070ee9ac26d519f7ee8d09a05895fd4565ff70ea","isMergeCommit":false,"messageTitle":"Completed Level-3 increment","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":5}}}]},{"date":"2024-01-22","commitResults":[{"hash":"f3961ec9fa6df327a6b77e74ef61239e44f786a2","isMergeCommit":false,"messageTitle":"Completed Level 4 Increment","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":4}}},{"hash":"695135ea804c8514ce31ab767238edb79a249e39","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":5,"deletions":5}}},{"hash":"6c27cb2152eb07ca6b49b8eea0282041d49be060","isMergeCommit":false,"messageTitle":"Completed Level-5 minimally","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":2}}},{"hash":"7fd14bb1f559b61d89c1a520f11956463f008eef","isMergeCommit":false,"messageTitle":"Fix Deadline Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":16}}},{"hash":"873146ca5bf43348886adf40a3155a7c4a490544","isMergeCommit":false,"messageTitle":"Fix Event Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":18}}},{"hash":"9d47592e9b88523d8d5512a4a53e82b58a6252b0","isMergeCommit":false,"messageTitle":"Completed Level-6 Increment","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":3}}}]},{"date":"2024-01-23","commitResults":[{"hash":"5a49ba68b5127c58138e30c52c2350927195fc03","isMergeCommit":false,"messageTitle":"Completed A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":104}}}]},{"date":"2024-01-27","commitResults":[{"hash":"5fc3a1399d6ffa52201ab9c8e8ba748e7a14f454","isMergeCommit":false,"messageTitle":"Level 7: Implement automatic saving and loading of tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":99,"deletions":0}}},{"hash":"130ba59ff57c6aa46ee289ef8cd73b86847691d0","isMergeCommit":false,"messageTitle":"Level 7: Implement automatic saving","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":99,"deletions":0}}},{"hash":"70acdb9002c81aa85b4e685de90ec3f89b907510","isMergeCommit":false,"messageTitle":"Update to handle corrupted data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":54,"deletions":27}}},{"hash":"29e90a6cf6fcd05fb0b68013096dc768484f5d22","isMergeCommit":true,"messageTitle":"Merge branch-Level-7 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"06c4ffc64a442a87b57d0fd63786176661cb6c55","isMergeCommit":false,"messageTitle":"Update to add date and time for deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":22,"deletions":6}}},{"hash":"d3a9eb50eb890ee31d517d3ecfe4084d02232160","isMergeCommit":true,"messageTitle":"Merge branch-Level-8 into master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"e878fd4e348cad53303c451b9a6e326cd695a45b","isMergeCommit":false,"messageTitle":"Update add OOP classes and key functionalities work","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":461,"deletions":267}}},{"hash":"65015df8991566f1d7921f59b4e2c1d92f3992ac","isMergeCommit":false,"messageTitle":"Revert \"Update add OOP classes and key functionalities work\"","messageBody":"This reverts commit e878fd4e348cad53303c451b9a6e326cd695a45b.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4},"java":{"insertions":267,"deletions":461}}},{"hash":"85915f072a3913ca0690fbd04483147ce286a556","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Update add OOP classes and key functionalities work\"\"","messageBody":"This reverts commit 65015df8991566f1d7921f59b4e2c1d92f3992ac.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":461,"deletions":267}}},{"hash":"1e5da971b1f82e7020a1e1c620ba9a01bff83691","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 into A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"003247a2f6737de830d064a6669a5368b16c51d2","isMergeCommit":false,"messageTitle":"Update delete task and todo task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":12,"deletions":7}}},{"hash":"9d7fbf852b07b2f7a8bf6465fd3db8bbd874de17","isMergeCommit":false,"messageTitle":"update formatting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":8,"deletions":4}}},{"hash":"a6ab7fb5e3b59e6cbfb43190bc81ada976fdb577","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yashma-sonara":{"java":620,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"yashma-sonara":365145.75},"authorDisplayNameMap":{"yashma-sonara":"CS2103T-T09-1 SONA..SHMA"}} +{"authorDailyContributionsMap":{"yashma-sonara":[{"date":"2024-01-20","commitResults":[{"hash":"67e2ea5ae58ced674395e2aa9286c78965377213","isMergeCommit":false,"messageTitle":"Completed Level-0 increment","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"9d7b0896ac362f09769bf660d40b0ca8e900c408","isMergeCommit":false,"messageTitle":"Completed Level-1 increment","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"342aed7cf231158b2e860eede769185bc04a22de","isMergeCommit":false,"messageTitle":"Completed Level-2 increment","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}}]},{"date":"2024-01-21","commitResults":[{"hash":"070ee9ac26d519f7ee8d09a05895fd4565ff70ea","isMergeCommit":false,"messageTitle":"Completed Level-3 increment","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":5}}}]},{"date":"2024-01-22","commitResults":[{"hash":"f3961ec9fa6df327a6b77e74ef61239e44f786a2","isMergeCommit":false,"messageTitle":"Completed Level 4 Increment","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":4}}},{"hash":"695135ea804c8514ce31ab767238edb79a249e39","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":5,"deletions":5}}},{"hash":"6c27cb2152eb07ca6b49b8eea0282041d49be060","isMergeCommit":false,"messageTitle":"Completed Level-5 minimally","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":2}}},{"hash":"7fd14bb1f559b61d89c1a520f11956463f008eef","isMergeCommit":false,"messageTitle":"Fix Deadline Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":16}}},{"hash":"873146ca5bf43348886adf40a3155a7c4a490544","isMergeCommit":false,"messageTitle":"Fix Event Exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":18}}},{"hash":"9d47592e9b88523d8d5512a4a53e82b58a6252b0","isMergeCommit":false,"messageTitle":"Completed Level-6 Increment","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":3}}}]},{"date":"2024-01-23","commitResults":[{"hash":"5a49ba68b5127c58138e30c52c2350927195fc03","isMergeCommit":false,"messageTitle":"Completed A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":118,"deletions":104}}}]},{"date":"2024-01-27","commitResults":[{"hash":"5fc3a1399d6ffa52201ab9c8e8ba748e7a14f454","isMergeCommit":false,"messageTitle":"Level 7: Implement automatic saving and loading of tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":99,"deletions":0}}},{"hash":"130ba59ff57c6aa46ee289ef8cd73b86847691d0","isMergeCommit":false,"messageTitle":"Level 7: Implement automatic saving","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":99,"deletions":0}}},{"hash":"70acdb9002c81aa85b4e685de90ec3f89b907510","isMergeCommit":false,"messageTitle":"Update to handle corrupted data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":54,"deletions":27}}},{"hash":"29e90a6cf6fcd05fb0b68013096dc768484f5d22","isMergeCommit":true,"messageTitle":"Merge branch-Level-7 into master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"06c4ffc64a442a87b57d0fd63786176661cb6c55","isMergeCommit":false,"messageTitle":"Update to add date and time for deadline tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":22,"deletions":6}}},{"hash":"d3a9eb50eb890ee31d517d3ecfe4084d02232160","isMergeCommit":true,"messageTitle":"Merge branch-Level-8 into master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"e878fd4e348cad53303c451b9a6e326cd695a45b","isMergeCommit":false,"messageTitle":"Update add OOP classes and key functionalities work","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":461,"deletions":267}}},{"hash":"65015df8991566f1d7921f59b4e2c1d92f3992ac","isMergeCommit":false,"messageTitle":"Revert \"Update add OOP classes and key functionalities work\"","messageBody":"This reverts commit e878fd4e348cad53303c451b9a6e326cd695a45b.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4},"java":{"insertions":267,"deletions":461}}},{"hash":"85915f072a3913ca0690fbd04483147ce286a556","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Update add OOP classes and key functionalities work\"\"","messageBody":"This reverts commit 65015df8991566f1d7921f59b4e2c1d92f3992ac.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":461,"deletions":267}}},{"hash":"1e5da971b1f82e7020a1e1c620ba9a01bff83691","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 into A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"003247a2f6737de830d064a6669a5368b16c51d2","isMergeCommit":false,"messageTitle":"Update delete task and todo task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":12,"deletions":7}}},{"hash":"9d7fbf852b07b2f7a8bf6465fd3db8bbd874de17","isMergeCommit":false,"messageTitle":"update formatting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":8,"deletions":4}}},{"hash":"a6ab7fb5e3b59e6cbfb43190bc81ada976fdb577","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"4fe99ecc2291c3feaed1d6531afa1b7f7b8550a4","isMergeCommit":false,"messageTitle":"update mark formating","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":6,"deletions":3}}},{"hash":"a50147037f5542a92c199ea963a861c69d8a1216","isMergeCommit":false,"messageTitle":"add duke package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"e641c28798a2ed5076938e68e7cbc3ba56d17ac4","isMergeCommit":false,"messageTitle":"add task package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":21,"deletions":4}}},{"hash":"089d50e48f6d6bcad10dc0e55cc8efda7f580694","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yashma-sonara":{"java":652,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"yashma-sonara":380402.4},"authorDisplayNameMap":{"yashma-sonara":"CS2103T-T09-1 SONA..SHMA"}} diff --git a/yespiggy_ip_master/authorship.json b/yespiggy_ip_master/authorship.json index 400a5660..e3abce56 100644 --- a/yespiggy_ip_master/authorship.json +++ b/yespiggy_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yespiggy":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":" String sayHi \u003d \"Helloo! I\u0027m LilyBot ;)\\nWhat\u0027s up\u0027?\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":" String divider \u003d \"_____________________________________________\";","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":" String markDone \u003d \"Good job! I\u0027ve marked this task as done:\";","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":" String markNotDone \u003d \"Okie, Rest well. Marked this task as not done yet: \";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" String added \u003d \"Got it. I\u0027ve added this task:\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":" String dkEmpty \u003d \"Oops! Sorry, I don\u0027t know what that means. Description is empty\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":" ArrayList\u003cTask\u003e ls \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yespiggy"},"content":" //Scanner for getting user input","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" Scanner myCom \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":" System.out.println(sayHi + divider);","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yespiggy"},"content":" String command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"yespiggy"},"content":" while (!command.equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Here\u0027re the tasks in ur list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":" int counter \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yespiggy"},"content":" for (Task i : ls) {","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":" counter++;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yespiggy"},"content":" System.out.println(counter + \". \" + i.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" int taskNum \u003d Integer.valueOf(command.replaceAll(\"[^0-9]\", \"\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":" Task tk \u003d ls.get(taskNum - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" tk.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" System.out.println(markNotDone+\"\\n\"+ \" \" + tk.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Plz tell me which task.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"yespiggy"},"content":" } else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" int taskNum \u003d Integer.valueOf(command.replaceAll(\"[^0-9]\", \"\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"yespiggy"},"content":" Task tk \u003d ls.get(taskNum - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"yespiggy"},"content":" tk.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"yespiggy"},"content":" System.out.println(markDone+\"\\n\"+ \" \" + tk.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"yespiggy"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Plz tell me which task.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"yespiggy"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"yespiggy"},"content":" int taskNum \u003d Integer.valueOf(command.replaceAll(\"[^0-9]\", \"\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"yespiggy"},"content":" Task tk \u003d ls.get(taskNum - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Noted. Task Removed:\"+\"\\n\"+ \" \" + tk.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"yespiggy"},"content":" ls.remove(taskNum - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Now u have \" + ls.size() +","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"yespiggy"},"content":" \" tasks in the list.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Plz tell me which task.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"yespiggy"},"content":" String[] cmd \u003d command.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"yespiggy"},"content":" if (cmd[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new ToDo(cmd[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"yespiggy"},"content":" System.out.println(\" \" + added + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"yespiggy"},"content":" \" \" + t.toString() + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"yespiggy"},"content":" \" Now u have \" + ls.size() +","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"yespiggy"},"content":" \" tasks in the list.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"yespiggy"},"content":" System.out.println(dkEmpty + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"yespiggy"},"content":" else if (cmd[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"yespiggy"},"content":" String[] date \u003d cmd[1].split(\"/by\", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new Deadline(date[0], date[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"yespiggy"},"content":" System.out.println(\" \" + added + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"yespiggy"},"content":" \" \" + t.toString() + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"yespiggy"},"content":" \" Now u have \" + ls.size() +","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"yespiggy"},"content":" \" tasks in the list.\"+ \"\\n\" + divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Plz enter a date for the deadline using \u0027/by\u0027\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"yespiggy"},"content":" System.out.println(dkEmpty + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"yespiggy"},"content":" } else if (cmd[0].equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"yespiggy"},"content":" String[] date \u003d cmd[1].split(\"/\", 3);","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new Event(date[0], date[1], date[2]);","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"yespiggy"},"content":" System.out.println(\" \" + added + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"yespiggy"},"content":" \" \" + t.toString() + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"yespiggy"},"content":" \" Now u have \" + ls.size() +","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"yespiggy"},"content":" \" tasks in the list.\"+ \"\\n\" + divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Plz enter a date for the event using \u0027/from\u0027 and \u0027/to\u0027\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"yespiggy"},"content":" System.out.println(dkEmpty + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Oops! I don\u0027t understand the instruction.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":138,"author":{"gitId":"yespiggy"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":139,"author":{"gitId":"yespiggy"},"content":" String sayBye \u003d \"Bye Bye. See u later!\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":140,"author":{"gitId":"yespiggy"},"content":" System.out.println(sayBye + divider);","lastModifiedDate":"2024-01-22"},{"lineNumber":141,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yespiggy":140,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":" public DukeException(String warn) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":" super(warn);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"yespiggy":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":" return \"[E]\" + super.toString() + \"(\" + from + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yespiggy":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":" return description;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yespiggy"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"yespiggy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yespiggy":28}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yespiggy":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"todo join sports club","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"mark 4","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yespiggy":11}}] +[{"path":"duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"T\u003c\u003e1\u003c\u003eread bk","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"D\u003c\u003e1\u003c\u003ereturn bk \u003c\u003e June 6th","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"E\u003c\u003e0\u003c\u003eproject meeting \u003c\u003efrom Aug 6th 2pm to 4pm","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"T\u003c\u003e0\u003c\u003eborrow bk","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yespiggy":4}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":" public String getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yespiggy":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"import java.lang.reflect.Field;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":" private static void botUnknownFormat(int i) {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Oops, I don\u0027t understand the file format\");","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":" i \u003d i + 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Line \" + i + \" in the given file will be ignored\");","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":" private static ArrayList\u003cTask\u003e loadFile(File file) throws FileNotFoundException {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yespiggy"},"content":" ArrayList\u003cTask\u003e ls \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" ArrayList\u003cString\u003e existing \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yespiggy"},"content":" //Load the current content of the file","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yespiggy"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":" String st \u003d s.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":" existing.add(st);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yespiggy"},"content":" //Turn content in the file into a list","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yespiggy"},"content":" for (int i \u003d 0; i \u003c existing.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":" String tk \u003d existing.get(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":" String[] arr \u003d tk.split(\"\u003c\u003e\", 4);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yespiggy"},"content":" switch (arr[0]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yespiggy"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yespiggy"},"content":" if (Integer.valueOf(arr[1]) \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yespiggy"},"content":" //The task is not finished","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new ToDo(arr[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yespiggy"},"content":" } else if (Integer.valueOf(arr[1]) \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yespiggy"},"content":" //Task Finished","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new ToDo(arr[2]);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yespiggy"},"content":" t.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yespiggy"},"content":" botUnknownFormat(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yespiggy"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yespiggy"},"content":" botUnknownFormat(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yespiggy"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yespiggy"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yespiggy"},"content":" if (Integer.valueOf(arr[1]) \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"yespiggy"},"content":" //The ddl is not finished","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new Deadline(arr[2], arr[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"yespiggy"},"content":" } else if (Integer.valueOf(arr[1]) \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"yespiggy"},"content":" //DDL Finished","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new Deadline(arr[2], arr[3]);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"yespiggy"},"content":" t.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"yespiggy"},"content":" botUnknownFormat(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"yespiggy"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"yespiggy"},"content":" botUnknownFormat(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"yespiggy"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"yespiggy"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"yespiggy"},"content":" if (Integer.valueOf(arr[1]) \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"yespiggy"},"content":" //The event is not finished","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"yespiggy"},"content":" String[] temp \u003d arr[3].split(\"to\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"yespiggy"},"content":" String timeOfto \u003d \" to \" + temp[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new Event(arr[2], temp[0], timeOfto);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"yespiggy"},"content":" } else if (Integer.valueOf(arr[2]) \u003d\u003d 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"yespiggy"},"content":" //Event Finished","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"yespiggy"},"content":" String[] temp \u003d arr[3].split(\"to\", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"yespiggy"},"content":" String timeOfto \u003d \"to\" + temp[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new Event(arr[2], temp[0], timeOfto);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"yespiggy"},"content":" t.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"yespiggy"},"content":" botUnknownFormat(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"yespiggy"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"yespiggy"},"content":" botUnknownFormat(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"yespiggy"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"yespiggy"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"yespiggy"},"content":" //Format unknown","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"yespiggy"},"content":" botUnknownFormat(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"yespiggy"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"yespiggy"},"content":" return ls;","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"yespiggy"},"content":" private static void saveFile(File file, ArrayList\u003cTask\u003e ls) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"yespiggy"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"yespiggy"},"content":" String separator \u003d \"\u003c\u003e\";","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"yespiggy"},"content":" ArrayList\u003cString\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"yespiggy"},"content":" if (ls.size() \u003d\u003d 0 ) {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"yespiggy"},"content":" fw.write(\"\");","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"yespiggy"},"content":" for (Task task: ls) {","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"yespiggy"},"content":" if (task instanceof ToDo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"yespiggy"},"content":" String s;","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"yespiggy"},"content":" if (!task.getStatus()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"yespiggy"},"content":" s \u003d \"T\" + separator + \"0\" + separator + task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"yespiggy"},"content":" s \u003d \"T\" + separator + \"1\" + separator + task.getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"yespiggy"},"content":" arr.add(s);","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"yespiggy"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"yespiggy"},"content":" String s;","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"yespiggy"},"content":" if (!task.getStatus()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"yespiggy"},"content":" s \u003d \"D\" + separator + \"0\" + separator + task.getDescription() + separator + ((Deadline) task).getBy();","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"yespiggy"},"content":" s \u003d \"D\" + separator + \"1\" + separator + task.getDescription() + separator + ((Deadline) task).getBy();","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"yespiggy"},"content":" arr.add(s);","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"yespiggy"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"yespiggy"},"content":" String s;","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"yespiggy"},"content":" if (!task.getStatus()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"yespiggy"},"content":" s \u003d \"E\" + separator + \"0\" + separator + task.getDescription() + separator + ((Event) task).getFromTo();","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"yespiggy"},"content":" s \u003d \"E\" + separator + \"1\" + separator + task.getDescription() + separator + ((Event) task).getFromTo();","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"yespiggy"},"content":" arr.add(s);","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"The task you enter is of a type undefined here.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":141,"author":{"gitId":"yespiggy"},"content":" for (String str: arr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"yespiggy"},"content":" fw.write(str + System.lineSeparator());","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"yespiggy"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"yespiggy"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"yespiggy"},"content":" String sayHi \u003d \"Helloo! I\u0027m LilyBot ;)\\nWhat\u0027s up\u0027?\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":150,"author":{"gitId":"yespiggy"},"content":" String divider \u003d \"_____________________________________________\";","lastModifiedDate":"2024-01-22"},{"lineNumber":151,"author":{"gitId":"yespiggy"},"content":" String markDone \u003d \"Good job! I\u0027ve marked this task as done:\";","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"yespiggy"},"content":" String markNotDone \u003d \"Okie, Rest well. Marked this task as not done yet: \";","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"yespiggy"},"content":" String added \u003d \"Got it. I\u0027ve added this task:\";","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"yespiggy"},"content":" String dkEmpty \u003d \"Oops! Sorry, I don\u0027t know what that means. Description is empty\";","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"yespiggy"},"content":" ArrayList\u003cTask\u003e ls;","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"yespiggy"},"content":" String filePath \u003d new File(\"\").getAbsolutePath();","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"yespiggy"},"content":" filePath +\u003d \"/duke.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"yespiggy"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"yespiggy"},"content":" boolean ifExist \u003d file.exists();","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"yespiggy"},"content":" if (!ifExist) {","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"yespiggy"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"yespiggy"},"content":" //Get the existing tasks in the file","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"yespiggy"},"content":" ls \u003d loadFile(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":169,"author":{"gitId":"yespiggy"},"content":" //Scanner for getting user input","lastModifiedDate":"2024-01-22"},{"lineNumber":170,"author":{"gitId":"yespiggy"},"content":" Scanner myCom \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":171,"author":{"gitId":"yespiggy"},"content":" System.out.println(sayHi + divider);","lastModifiedDate":"2024-01-22"},{"lineNumber":172,"author":{"gitId":"yespiggy"},"content":" String command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":173,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":174,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"yespiggy"},"content":" while (!command.equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":176,"author":{"gitId":"yespiggy"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":177,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Here\u0027re the tasks in ur list:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"yespiggy"},"content":" int counter \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"yespiggy"},"content":" for (Task i : ls) {","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"yespiggy"},"content":" counter++;","lastModifiedDate":"2024-01-22"},{"lineNumber":181,"author":{"gitId":"yespiggy"},"content":" System.out.println(counter + \". \" + i.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":183,"author":{"gitId":"yespiggy"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-22"},{"lineNumber":184,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":185,"author":{"gitId":"yespiggy"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"yespiggy"},"content":" int taskNum \u003d Integer.valueOf(command.replaceAll(\"[^0-9]\", \"\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"yespiggy"},"content":" Task tk \u003d ls.get(taskNum - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"yespiggy"},"content":" tk.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"yespiggy"},"content":" System.out.println(markNotDone+\"\\n\"+ \" \" + tk.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"yespiggy"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Plz tell me which task.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"yespiggy"},"content":" } else if (command.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":200,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"yespiggy"},"content":" int taskNum \u003d Integer.valueOf(command.replaceAll(\"[^0-9]\", \"\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"yespiggy"},"content":" Task tk \u003d ls.get(taskNum - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":203,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":204,"author":{"gitId":"yespiggy"},"content":" tk.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":205,"author":{"gitId":"yespiggy"},"content":" System.out.println(markDone+\"\\n\"+ \" \" + tk.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":206,"author":{"gitId":"yespiggy"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":207,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":208,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":209,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Plz tell me which task.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":210,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":211,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":212,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":213,"author":{"gitId":"yespiggy"},"content":" } else if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":214,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":215,"author":{"gitId":"yespiggy"},"content":" int taskNum \u003d Integer.valueOf(command.replaceAll(\"[^0-9]\", \"\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":216,"author":{"gitId":"yespiggy"},"content":" Task tk \u003d ls.get(taskNum - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":217,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Noted. Task Removed:\"+\"\\n\"+ \" \" + tk.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":218,"author":{"gitId":"yespiggy"},"content":" ls.remove(taskNum - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":219,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":220,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Now u have \" + ls.size() +","lastModifiedDate":"2024-01-24"},{"lineNumber":221,"author":{"gitId":"yespiggy"},"content":" \" tasks in the list.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":223,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":224,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Plz tell me which task.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":225,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":226,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":227,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":228,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":229,"author":{"gitId":"yespiggy"},"content":" String[] cmd \u003d command.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":230,"author":{"gitId":"yespiggy"},"content":" if (cmd[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":231,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":232,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new ToDo(cmd[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":233,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":234,"author":{"gitId":"yespiggy"},"content":" System.out.println(\" \" + added + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":235,"author":{"gitId":"yespiggy"},"content":" \" \" + t.toString() + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":236,"author":{"gitId":"yespiggy"},"content":" \" Now u have \" + ls.size() +","lastModifiedDate":"2024-01-23"},{"lineNumber":237,"author":{"gitId":"yespiggy"},"content":" \" tasks in the list.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":238,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":239,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":240,"author":{"gitId":"yespiggy"},"content":" System.out.println(dkEmpty + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":241,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":242,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":243,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":244,"author":{"gitId":"yespiggy"},"content":" else if (cmd[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":245,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":246,"author":{"gitId":"yespiggy"},"content":" String[] date \u003d cmd[1].split(\"/by\", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":247,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":248,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new Deadline(date[0], date[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":249,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":250,"author":{"gitId":"yespiggy"},"content":" System.out.println(\" \" + added + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":251,"author":{"gitId":"yespiggy"},"content":" \" \" + t.toString() + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":252,"author":{"gitId":"yespiggy"},"content":" \" Now u have \" + ls.size() +","lastModifiedDate":"2024-01-23"},{"lineNumber":253,"author":{"gitId":"yespiggy"},"content":" \" tasks in the list.\"+ \"\\n\" + divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":254,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":255,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":256,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Plz enter a date for the deadline using \u0027/by\u0027\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":257,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":258,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":259,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"yespiggy"},"content":" System.out.println(dkEmpty + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":261,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":262,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":263,"author":{"gitId":"yespiggy"},"content":" } else if (cmd[0].equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":264,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":265,"author":{"gitId":"yespiggy"},"content":" String[] date \u003d cmd[1].split(\"/\", 3);","lastModifiedDate":"2024-01-23"},{"lineNumber":266,"author":{"gitId":"yespiggy"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":267,"author":{"gitId":"yespiggy"},"content":" Task t \u003d new Event(date[0], date[1], date[2]);","lastModifiedDate":"2024-01-23"},{"lineNumber":268,"author":{"gitId":"yespiggy"},"content":" ls.add(t);","lastModifiedDate":"2024-01-23"},{"lineNumber":269,"author":{"gitId":"yespiggy"},"content":" System.out.println(\" \" + added + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":270,"author":{"gitId":"yespiggy"},"content":" \" \" + t.toString() + \"\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":271,"author":{"gitId":"yespiggy"},"content":" \" Now u have \" + ls.size() +","lastModifiedDate":"2024-01-23"},{"lineNumber":272,"author":{"gitId":"yespiggy"},"content":" \" tasks in the list.\"+ \"\\n\" + divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":273,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":274,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":275,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Plz enter a date for the event using \u0027/from\u0027 and \u0027/to\u0027\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":276,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":277,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":278,"author":{"gitId":"yespiggy"},"content":" } catch (Exception exc) {","lastModifiedDate":"2024-01-24"},{"lineNumber":279,"author":{"gitId":"yespiggy"},"content":" System.out.println(dkEmpty + \"\\n\" + divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":280,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":281,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":282,"author":{"gitId":"yespiggy"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":283,"author":{"gitId":"yespiggy"},"content":" System.out.println(\"Oops! I don\u0027t understand the instruction.\" + \"\\n\" + divider);","lastModifiedDate":"2024-01-23"},{"lineNumber":284,"author":{"gitId":"yespiggy"},"content":" command \u003d myCom.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":285,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":286,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":287,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":288,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":289,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":290,"author":{"gitId":"yespiggy"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":291,"author":{"gitId":"yespiggy"},"content":" String sayBye \u003d \"Bye Bye. See u later!\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":292,"author":{"gitId":"yespiggy"},"content":" System.out.println(sayBye + divider);","lastModifiedDate":"2024-01-22"},{"lineNumber":293,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":294,"author":{"gitId":"yespiggy"},"content":" //Update the file","lastModifiedDate":"2024-01-30"},{"lineNumber":295,"author":{"gitId":"yespiggy"},"content":" saveFile(file, ls);","lastModifiedDate":"2024-01-30"},{"lineNumber":296,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":297,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yespiggy":296,"-":3}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":" public DukeException(String warn) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":" super(warn);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"yespiggy":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":" return \"[E]\" + super.toString() + \"(\" + from + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":" public String getFromTo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yespiggy"},"content":" return from + to;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yespiggy":19}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yespiggy"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yespiggy"},"content":" return isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yespiggy"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yespiggy"},"content":" return description;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"yespiggy"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yespiggy"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yespiggy"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yespiggy"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yespiggy"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yespiggy":32}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yespiggy"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yespiggy":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yespiggy"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yespiggy"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yespiggy"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yespiggy"},"content":"todo join sports club","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yespiggy"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yespiggy"},"content":"mark 4","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yespiggy"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yespiggy"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yespiggy"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yespiggy"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yespiggy"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yespiggy":11}}] diff --git a/yespiggy_ip_master/commits.json b/yespiggy_ip_master/commits.json index dddf5702..f041d42f 100644 --- a/yespiggy_ip_master/commits.json +++ b/yespiggy_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yespiggy":[{"date":"2024-01-22","commitResults":[{"hash":"4fa78eba58d472818dd900454e5008f97460ce2a","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"411b673704501ac82a152bffcf5fba869aadf358","isMergeCommit":false,"messageTitle":"Level 1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"49b4ae8f98cc382846e88b08d170d96537de4335","isMergeCommit":false,"messageTitle":"Level-2 Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":19}}}]},{"date":"2024-01-23","commitResults":[{"hash":"61f3e98fef5cf1b2c77f47e076a5e11b9b6a8dd5","isMergeCommit":false,"messageTitle":"Level-3 Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":4}}},{"hash":"183a95467ee2ae578a8ea3f126d5c024eef23dec","isMergeCommit":false,"messageTitle":"Level-4 ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":11}}},{"hash":"69232aa6b0c3033789190e7bf6f3642b3624ac2a","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-24","commitResults":[{"hash":"d39d0bed849d79237a361cb997daa89ebd5673a9","isMergeCommit":false,"messageTitle":"Level-5 Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":25}}},{"hash":"b3bddf95d896ec5334c9668e5093a746cb16788d","isMergeCommit":false,"messageTitle":"Level-6 Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"yespiggy":{"java":214,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"yespiggy":4631.25},"authorDisplayNameMap":{"yespiggy":"CS2103T-W09-2 YE S..IFAN"}} +{"authorDailyContributionsMap":{"yespiggy":[{"date":"2024-01-22","commitResults":[{"hash":"4fa78eba58d472818dd900454e5008f97460ce2a","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"411b673704501ac82a152bffcf5fba869aadf358","isMergeCommit":false,"messageTitle":"Level 1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"49b4ae8f98cc382846e88b08d170d96537de4335","isMergeCommit":false,"messageTitle":"Level-2 Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":19}}}]},{"date":"2024-01-23","commitResults":[{"hash":"61f3e98fef5cf1b2c77f47e076a5e11b9b6a8dd5","isMergeCommit":false,"messageTitle":"Level-3 Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":4}}},{"hash":"183a95467ee2ae578a8ea3f126d5c024eef23dec","isMergeCommit":false,"messageTitle":"Level-4 ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":11}}},{"hash":"69232aa6b0c3033789190e7bf6f3642b3624ac2a","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-24","commitResults":[{"hash":"d39d0bed849d79237a361cb997daa89ebd5673a9","isMergeCommit":false,"messageTitle":"Level-5 Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":25}}},{"hash":"b3bddf95d896ec5334c9668e5093a746cb16788d","isMergeCommit":false,"messageTitle":"Level-6 Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":12}}}]},{"date":"2024-01-30","commitResults":[{"hash":"4d441e1356c1a39291013f47b3cd09de2e75ded2","isMergeCommit":false,"messageTitle":"Level-7 Save to hard disk","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":170,"deletions":3}}},{"hash":"4c4239ff63e330eb00f0c3d8a38883ebfe998b5b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yespiggy":{"java":382,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"yespiggy":4797.5},"authorDisplayNameMap":{"yespiggy":"CS2103T-W09-2 YE S..IFAN"}} diff --git a/yiwern5_ip_master/authorship.json b/yiwern5_ip_master/authorship.json index b238e9d6..16702cad 100644 --- a/yiwern5_ip_master/authorship.json +++ b/yiwern5_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":"yiwern5"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-24"},{"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":"yiwern5"},"content":"checkstyle {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-24"},{"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":"yiwern5"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2024-01-24"},{"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":"yiwern5"},"content":" archiveFileName \u003d \u0027Iggly.jar\u0027","lastModifiedDate":"2024-01-25"},{"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":{"yiwern5":7,"-":40}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import command.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import command.ExitCommand;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import command.GreetCommand;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import duke.Parser;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * {@link Duke} is the main class of this program.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * @author Tsui Yi Wern (yiwern5)","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Constructor for {@link Duke} to initialize the storage or","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * get task list from the storage.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" * @param filePath the file path of the storage.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" if (storage.isFileExists()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" storage.createNewFile();","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" storage.update(taskList.getTaskList());","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" * Launch the program and initiate the command loop to process user input.","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" * It displays a greeting message by calling the {@link GreetCommand}.","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" public void launch() {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" new GreetCommand().execute(storage);","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" try (Scanner scanner \u003d new Scanner(System.in)) {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" System.out.print(\"Enter a command:\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" new ExitCommand().execute(storage);","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" Command c \u003d new Parser(input, taskList).parse();","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" c.execute(storage);","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" * The program\u0027s main function to start the application.","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" * @param args the arguments passed into the application.","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":" new Duke(\"./data.dat\").launch();","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":67,"-":4}},{"path":"src/main/java/command/AddTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import view.AddTaskView;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Command to add a {@link Task} to the {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public static final String TODO \u003d \"todo\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" public static final String EVENT \u003d \"event\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" public static final String DEADLINE \u003d \"deadline\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@link AddTaskCommand} object with the specified {@link Task} and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * This command is used to add a new task to the given task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * @param task The task to be added, in the form of {@code ToDo}, {@code Event} or {@code Deadline}.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task will be added.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" public AddTaskCommand(Task task, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link AddTaskCommand}, performing the necessary actions to carry out the specific functionality","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * related to adding a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" * This method adds the given task to the task list, update the storage and display the add task message by","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" * initialising the add task view.","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is used to update","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" * and save changes after executing the command.","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" storage.update(taskList.getTaskList());","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" AddTaskView addTaskView \u003d new AddTaskView(this.task, this.taskList);","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" addTaskView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":47}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link Command} class is an abstract base class representing a generic command in a","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * command-pattern-based design. Subclasses of this class provide concrete implementations","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" * for the {@code execute} method to define specific behaviors.","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link Command}, performing the necessary actions to carry out the specific functionality","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" * related to the command implementation.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is used to update","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * and save changes after executing the command.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" public abstract void execute(Storage storage);","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":19}},{"path":"src/main/java/command/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import view.DeleteTaskView;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Command to delete a {@link Task} from the {@link TaskList} using the task index.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link DeleteTaskCommand} object with the specified {@link Task} index and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" * This command is used to delete a task from the given task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task will be deleted.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" public DeleteTaskCommand(int index, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" this.task \u003d taskList.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link DeleteTaskCommand}, performing the necessary actions to carry out the specific functionality","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * related to deleting a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * This method deletes the given task index from the task list, update the storage and display the delete task","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" * message by initialising the delete task view.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is used to update","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" * and save changes after executing the command.","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" taskList.remove(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" storage.update(taskList.getTaskList());","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" DeleteTaskView deleteTaskView \u003d new DeleteTaskView(this.task, this.taskList);","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" deleteTaskView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":45}},{"path":"src/main/java/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import view.ExitView;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * Command to terminate the program.","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" private final ExitView exitView;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@code ExitCommand}.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" public ExitCommand() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" this.exitView \u003d new ExitView();","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link ExitCommand}, print exit message when the program is terminated.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" * This method display the exit message by initialising the exit view.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is not used in {@link ExitCommand}","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" exitView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":31}},{"path":"src/main/java/command/FindTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import view.FindTaskView;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" * Command to list out filtered tasks in the {@link TaskList} based on user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"public class FindTaskCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" private final String title;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link FindTaskCommand} object using user\u0027s input and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * This command is used to list filtered tasks in the given task list based on user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" * @param title The user\u0027s desired find task keyword.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list which requires filtering.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" public FindTaskCommand(String title, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" this.title \u003d title;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link FindTaskCommand}, filter a {@link TaskList} based on user\u0027s input and","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" * prints a filtered {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is not used in {@link FindTaskCommand}","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" TaskList filteredTaskList \u003d taskList.find(title);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" FindTaskView findTaskView \u003d new FindTaskView(filteredTaskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" findTaskView.display();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"yiwern5":39}},{"path":"src/main/java/command/GreetCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import view.GreetView;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * Command to greet user when program is started.","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class GreetCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final GreetView greetView;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@code GreetCommand}.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" public GreetCommand() {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" this.greetView \u003d new GreetView();","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link GreetCommand}, print a welcome message greeting the user.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * This method display the exit message by initialising the exit view.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is not used in {@link GreetCommand}","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" greetView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":30}},{"path":"src/main/java/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * The {@link InvalidCommand} class represents a command to handle invalid user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final String exception;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@link InvalidCommand} with a default exception message.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" public InvalidCommand() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" this.exception \u003d new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\").getMessage();","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link InvalidCommand}, print the error message when user input is invalid.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * This method display the error message by printing out the exception message.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is not used in {@link ExitCommand}","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" System.out.println(exception);","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":30}},{"path":"src/main/java/command/ListTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import view.TaskListView;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" * Command to list out all tasks in the {@code TaskList}.","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"public class ListTaskCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" private final TaskListView taskListView;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link ListTaskCommand} object using {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * This command is used to list all tasks in the given task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to be listed .","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" public ListTaskCommand(TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" this.taskListView \u003d new TaskListView(taskList);","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link ListTaskCommand}, prints {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" * This method display the task list using the task list view.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is not used in {@link ListTaskCommand}","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" taskListView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":36}},{"path":"src/main/java/command/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import view.MarkTaskView;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Command to mark a {@link Task} as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link MarkTaskCommand} object with the specified {@link Task} index and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" * This command is used to mark a task as done from the given task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task will be marked.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public MarkTaskCommand(int index, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" this.task \u003d taskList.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link MarkTaskCommand}, performing the necessary actions to carry out the specific functionality","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * related to marking a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" * This method marks the given task as done from the task list, update the storage and display the mark task","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" * message by initialising the mark task view.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is used to update","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" * and save changes after executing the command.","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" this.task.mark();","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" storage.update(taskList.getTaskList());","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" MarkTaskView markTaskView \u003d new MarkTaskView(this.task);","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" markTaskView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":46}},{"path":"src/main/java/command/UnmarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import view.UnmarkTaskView;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Command to mark a {@link Task} as not done.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link UnmarkTaskCommand} object with the specified {@link Task} index and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" * This command is used to mark a task as not done from the given task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * @param index The index of the task to be marked as not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task will be marked.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" public UnmarkTaskCommand(int index, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" this.task \u003d taskList.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link UnmarkTaskCommand}, performing the necessary actions to carry out the specific functionality","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * related to marking a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * This method marks the given task as not done from the task list, update the storage and display the unmark task","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" * message by initialising the unmark task view.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is used to update","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" * and save changes after executing the command.","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" this.task.unmark();","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" storage.update(taskList.getTaskList());","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" UnmarkTaskView unmarkTaskView \u003d new UnmarkTaskView(this.task);","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" unmarkTaskView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":45}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":" * The {@link DukeException} class represents a custom exception specific to the Duke application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":" * It extends the standard {@link Exception} class and provides a constructor to initialize the","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * exception message in a stylized format.","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link DukeException} with a formatted exception message.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * @param exception The specific error message associated with the exception.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" public DukeException(String exception) {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" super(","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! \" + exception + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":21}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import command.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import model.Deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import model.Event;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" * The {@link Parser} class is responsible for parsing user input and extracting relevant information","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * to perform actions within the program.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"public class Parser {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" private final String command;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link Parser} with the specified command string and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" * @param command The raw command string provided by the user for parsing.","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" * @param taskList The {@code TaskList} associated with the parser, providing context for command execution.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" public Parser(String command, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" * Parse user input and return the corresponding command based on user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" * @return a {@code Command} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user enters an invalid input.","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" public Command parse() throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" String[] splitTask \u003d command.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" Command command \u003d null;","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" switch(splitTask[0]) {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" case ListTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" command \u003d new ListTaskCommand(taskList);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" case MarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" command \u003d parseMark(splitTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" case UnmarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" command \u003d parseUnmark(splitTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" case AddTaskCommand.TODO:","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" task \u003d parseToDo(splitTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" command \u003d new AddTaskCommand(task, taskList);","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" case AddTaskCommand.EVENT:","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" task \u003d parseEvent(splitTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" command \u003d new AddTaskCommand(task, taskList);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" case AddTaskCommand.DEADLINE:","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" task \u003d parseDeadline(splitTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" command \u003d new AddTaskCommand(task, taskList);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" command \u003d parseDelete(splitTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" case FindTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":" command \u003d parseFind(splitTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"yiwern5"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"yiwern5"},"content":" command \u003d new InvalidCommand();","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"yiwern5"},"content":" return command;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"yiwern5"},"content":" * Parse a todo input.","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"yiwern5"},"content":" * @return a {@code ToDo} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user left the description empty.","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"yiwern5"},"content":" private static ToDo parseToDo(String[] todo) throws DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"yiwern5"},"content":" if (todo.length !\u003d 2 || todo[1].isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"yiwern5"},"content":" return new ToDo(todo[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"yiwern5"},"content":" * Parse an event input.","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"yiwern5"},"content":" * @return a {@code Event} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user left the description empty or entered invalid format.","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"yiwern5"},"content":" private static Event parseEvent(String[] event) throws DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"yiwern5"},"content":" if (event.length !\u003d 2 || event[1].isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"yiwern5"},"content":" String[] splitEvent \u003d event[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":98,"author":{"gitId":"yiwern5"},"content":" if (splitEvent.length !\u003d 2) {","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid input. Use: event event_title /from dd-mm-yyyy HHmm /to HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"yiwern5"},"content":" String[] splitDuration \u003d splitEvent[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"yiwern5"},"content":" if (splitDuration.length !\u003d 2) {","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid input. Use: event event_title /from dd-mm-yyyy HHmm /to HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"yiwern5"},"content":" String title \u003d splitEvent[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"yiwern5"},"content":" String from \u003d splitDuration[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"yiwern5"},"content":" String to \u003d splitDuration[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"yiwern5"},"content":" String temp \u003d null;","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"yiwern5"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-M-yyyy HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"yiwern5"},"content":" LocalDateTime fromDateTime \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"yiwern5"},"content":" temp \u003d fromDateTime.format(DateTimeFormatter.ofPattern(\"dd-M-yyyy\")) + \" \" + to;","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"yiwern5"},"content":" LocalDateTime toTime \u003d LocalDateTime.parse(temp, formatter);","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"yiwern5"},"content":" return new Event(title, fromDateTime, toTime);","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"yiwern5"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid date \u0026 time input. Use /from dd-mm-yyyy HHmm /to HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":120,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":121,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"yiwern5"},"content":" * Parse a deadline input.","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"yiwern5"},"content":" * @return a {@code Deadline} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user left the description empty or entered invalid format.","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"yiwern5"},"content":" private static Deadline parseDeadline(String[] deadline) throws DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"yiwern5"},"content":" if (deadline.length !\u003d 2 || deadline[1].isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":129,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":130,"author":{"gitId":"yiwern5"},"content":" String[] splitDeadline \u003d deadline[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"yiwern5"},"content":" if (splitDeadline.length !\u003d 2) {","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid input. Use: deadline deadline_title /by dd-mm-yyyy HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"yiwern5"},"content":" String title \u003d splitDeadline[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"yiwern5"},"content":" String time \u003d splitDeadline[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"yiwern5"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-M-yyyy HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"yiwern5"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(time, formatter);","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"yiwern5"},"content":" return new Deadline(title, dateTime);","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"yiwern5"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Use dd-mm-yyyy HHmm as the date format.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"yiwern5"},"content":" * Parse a mark task input.","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"yiwern5"},"content":" * @return a {@code MarkTaskCommand} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user entered invalid index.","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"yiwern5"},"content":" private MarkTaskCommand parseMark(String[] command) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":152,"author":{"gitId":"yiwern5"},"content":" int markIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":153,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":154,"author":{"gitId":"yiwern5"},"content":" return new MarkTaskCommand(markIndex, this.taskList);","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":156,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid index.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":157,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":158,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":159,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index of task cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":160,"author":{"gitId":"yiwern5"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":161,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index you\u0027ve input is not an integer.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":162,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":163,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":164,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":165,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":166,"author":{"gitId":"yiwern5"},"content":" * Parse an unmark task input.","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"yiwern5"},"content":" * @return a {@code UnmarkTaskCommand} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user entered invalid index.","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"yiwern5"},"content":" private UnmarkTaskCommand parseUnmark(String[] command) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":172,"author":{"gitId":"yiwern5"},"content":" int unmarkIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":173,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":174,"author":{"gitId":"yiwern5"},"content":" return new UnmarkTaskCommand(unmarkIndex, this.taskList);","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":176,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid index.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":177,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":178,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":179,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index of task cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":180,"author":{"gitId":"yiwern5"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":181,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index you\u0027ve input is not an integer.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":182,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":183,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":184,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":185,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":186,"author":{"gitId":"yiwern5"},"content":" * Parse a delete task input.","lastModifiedDate":"2024-01-25"},{"lineNumber":187,"author":{"gitId":"yiwern5"},"content":" * @return a {@code DeleteTaskCommand} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user entered invalid index.","lastModifiedDate":"2024-01-25"},{"lineNumber":189,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":190,"author":{"gitId":"yiwern5"},"content":" private DeleteTaskCommand parseDelete(String[] command) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":192,"author":{"gitId":"yiwern5"},"content":" int deleteIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":193,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":194,"author":{"gitId":"yiwern5"},"content":" return new DeleteTaskCommand(deleteIndex, this.taskList);","lastModifiedDate":"2024-01-23"},{"lineNumber":195,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":196,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid index.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":197,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":198,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":199,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index of task cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"yiwern5"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":201,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index you\u0027ve input is not an integer.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":202,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":203,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":204,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":205,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":206,"author":{"gitId":"yiwern5"},"content":" * Parse a find task input.","lastModifiedDate":"2024-01-29"},{"lineNumber":207,"author":{"gitId":"yiwern5"},"content":" * @return a {@link FindTaskCommand} based on user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":208,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user left the description empty.","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":210,"author":{"gitId":"yiwern5"},"content":" private FindTaskCommand parseFind(String[] input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":211,"author":{"gitId":"yiwern5"},"content":" if (input.length !\u003d 2 || input[1].isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":212,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The description of find cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":213,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":214,"author":{"gitId":"yiwern5"},"content":" return new FindTaskCommand(input[1], this.taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":215,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":216,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":216}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" * The {@link Storage} class is responsible for handling the reading, writing and saving task data to a file.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"public class Storage {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" private final File file;","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link Storage} instance with the specified file path.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" * @param filePath The file path where task data is stored or will be stored.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * Checks if the file associated with this storage exists.","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * @return {@code true} if the file exists, {@code false} otherwise.","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" public boolean isFileExists() {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" try (FileInputStream fileInputStream \u003d new FileInputStream(file)) {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" return true;","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" return false;","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" System.out.println(\"Error checking file existence: \" + e);","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" return false;","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" * Creates a new file at the specified file path.","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" public void createNewFile() {","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" this.file.createNewFile();","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" System.out.println(\"Unable to create new file.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" * Updates the file with the provided task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" * @param taskList The list of tasks to be written to the file.","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" public void update(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" try (FileOutputStream fileOutputStream \u003d new FileOutputStream(this.file);","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" ObjectOutputStream objectOutputStream \u003d new ObjectOutputStream(fileOutputStream)) {","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" objectOutputStream.writeObject(taskList);","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"yiwern5"},"content":" * Loads tasks from the file and returns them as an {@link ArrayList\u003cTask\u003e}.","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"yiwern5"},"content":" * @return The list of tasks loaded from the file. If an error occurs during loading,","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"yiwern5"},"content":" * an empty list is returned.","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"yiwern5"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"yiwern5"},"content":" try (FileInputStream fileInputStream \u003d new FileInputStream(file);","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"yiwern5"},"content":" ObjectInputStream objectInputStream \u003d new ObjectInputStream(fileInputStream)) {","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"yiwern5"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e taskList \u003d (ArrayList\u003cTask\u003e) objectInputStream.readObject();","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"yiwern5"},"content":" return taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"yiwern5"},"content":" } catch (IOException | ClassNotFoundException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"yiwern5"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"yiwern5"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":87}},{"path":"src/main/java/model/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * The {@link Deadline} class represents a task with a specific deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final LocalDateTime date;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link Deadline} instance with the specified title and deadline date.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" * @param title The title of the deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * @param date The deadline date and time.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" public Deadline(String title, LocalDateTime date) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" super(title);","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" * Returns a string representation of the deadline task, including its type, title, and deadline details.","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" * @return A formatted string representing the deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" return \"[D]\"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" + super.toString()","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" + \" (by: \" + date.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mma\"))","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" + \", \" + date.getDayOfWeek() + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":35}},{"path":"src/main/java/model/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * The {@link Event} class represents a task with a specific time range.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final LocalDateTime from;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" private final LocalDateTime to;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@link Event} instance with the specified title, start time, and end time.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * @param title The title of the event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" public Event(String title, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" super(title);","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" * Returns a string representation of the event task, including its type, title, and deadline details.","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" * @return A formatted string representing the event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" return \"[E]\"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" + super.toString()","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" + \" (on: \" + from.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mma\"))","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" + \" to \" + to.format(DateTimeFormatter.ofPattern(\"h:mma\")) + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":38}},{"path":"src/main/java/model/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link Task} class is an abstract base class representing a generic task in the Duke application.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * It implements the {@link Serializable} interface to support object serialization.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public abstract class Task implements Serializable {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final String title;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link Task} instance with the specified title. By default, the task is marked as not done.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * @param title The title of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" public Task(String title) {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" this.title \u003d title;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" * Returns a string representation of the task, including its status (done or not) and title.","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" * @return A formatted string representing the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" if (this.isDone) {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" return \"[X] \" + this.title;","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" return \"[ ] \" + this.title;","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" * Mark the task as completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" public void mark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" * Mark the task as not completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" public void unmark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" * Checks whether the task associated with this object has been completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" * @return {@code true} if the task is done, {@code false} otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" return this.isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" * Returns the title of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" * @return the title of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" public String getTitle() {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" return this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":68}},{"path":"src/main/java/model/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link TaskList} class encapsulates an {@link ArrayList\u003cTask\u003e} and provides methods to","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * manipulate and retrieve tasks.","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class TaskList {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" * Constructs an empty {@link TaskList} with an initial capacity of 100.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" public TaskList() {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link TaskList} with the specified list of tasks loaded from storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * @param taskList The list of tasks to be initialized with.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" * Returns the list of tasks.","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" return this.taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" * Returns the task at the specified index in the list.","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" return this.taskList.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" * Adds a task to the list.","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" * Removes a task from the list.","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" * @param task The task to be removed.","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" public void remove(Task task) {","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" this.taskList.remove(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":" * @return The number of tasks in the list.","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"yiwern5"},"content":" public int size() {","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"yiwern5"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"yiwern5"},"content":" * Returns the filtered task list based on user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"yiwern5"},"content":" * @param input user\u0027s desired find task keyword.","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"yiwern5"},"content":" * @return the filtered task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"yiwern5"},"content":" public TaskList find(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e filteredTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"yiwern5"},"content":" for (Task task: taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"yiwern5"},"content":" if (task.getTitle().contains(input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"yiwern5"},"content":" filteredTaskList.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"yiwern5"},"content":" return new TaskList(filteredTaskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yiwern5":89}},{"path":"src/main/java/model/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":" * The {@link ToDo} class represents a todo task.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link ToDo} instance with the specified title.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" * @param title The title of the ToDo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" public ToDo(String title) {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" super(title);","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" * Returns a string representation of the ToDo task, including its type and title.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * @return A formatted string representing the ToDo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":26}},{"path":"src/main/java/view/AddTaskView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * The {@link AddTaskView} class represents a view for displaying information after adding a {@link Task}.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class AddTaskView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" private final String size;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@link AddTaskView} with the specified {@link Task} and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * @param task The task that has been added.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task has been added.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" public AddTaskView(Task task, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" this.size \u003d String.valueOf(taskList.size());","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" * Displays information about the added task, including its details and the updated task list size.","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" + \" Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" + \" \" + this.task.toString() + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" + \" Now you have \" + this.size + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":37}},{"path":"src/main/java/view/DeleteTaskView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * The {@link DeleteTaskView} class represents a view for displaying information after deleting a {@link Task}.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class DeleteTaskView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" private final String size;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@link DeleteTaskView} with the specified {@link Task} and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * @param task The task that has been deleted.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task has been deleted.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" public DeleteTaskView(Task task, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" this.size \u003d String.valueOf(taskList.size());","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" * Displays information about the deleted task, including its details and the updated task list size.","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" + \" Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" + \" \" + this.task.toString() + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" + \" Now you have \" + this.size + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":37}},{"path":"src/main/java/view/ExitView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":" * The {@link ExitView} class represents a view for displaying a farewell message upon exiting the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"public class ExitView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Displays a farewell message when the program is terminated.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" + \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":19}},{"path":"src/main/java/view/FindTaskView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link FindTaskView} class represents a view for displaying the list of filtered tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"public class FindTaskView extends Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link FindTaskView} with the specified task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * @param taskList The {@link TaskList} containing the filtered tasks to be displayed.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" public FindTaskView(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Displays the list of filtered tasks along with an introductory message and a formatted task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" String list \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" list +\u003d (\" \" + (i + 1) + \". \" + taskList.get(i).toString() + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" \"Here are the matching tasks in your list:\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"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 \u003d :\u003d\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" + \":: Task List ::\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"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 \u003d :\u003d\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" + list","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"yiwern5":37}},{"path":"src/main/java/view/GreetView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":" * The {@link GreetView} class represents a view for displaying a welcome message upon starting the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"public class GreetView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Displays a welcome message when the program is started.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" \" ░░ ░░░░░░ ░░░░░░ ░░ ░░ ░░\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" + \" ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" + \" ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒▒▒\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" + \" ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" + \" ██ ██████ ██████ ███████ ██\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" + \" Hello! I\u0027m Iggly, your personal assistant chatbot.\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":25}},{"path":"src/main/java/view/MarkTaskView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link MarkTaskView} class represents a view for displaying information after marking a task as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"public class MarkTaskView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link MarkTaskView} with the specified task.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * @param task The task that has been marked as done.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" public MarkTaskView(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Displays information about the marked task, including its details and the updated status.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" + \" Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" + \" \" + this.task.toString() + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":32}},{"path":"src/main/java/view/TaskListView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link TaskListView} class represents a view for displaying the list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"public class TaskListView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link TaskListView} with the specified task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * @param taskList The {@link TaskList} containing the tasks to be displayed.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" public TaskListView(TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Displays the list of tasks along with an introductory message and a formatted task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" String list \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" list +\u003d (\" \" + (i + 1) + \". \" + taskList.get(i).toString() + \"\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" \"\\n\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 \u003d :\u003d\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" + \":: Task List ::\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"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 \u003d :\u003d\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" + list","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":36}},{"path":"src/main/java/view/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":" * The {@link Ui} class is an abstract base class representing the user interface in the Duke application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"public abstract class Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Displays information or messages to the user.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" public abstract void display();","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":12}},{"path":"src/main/java/view/UnmarkTaskView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link UnmarkTaskView} class represents a view for displaying information after marking a task as not done.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"public class UnmarkTaskView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link UnmarkTaskView} with the specified task.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * @param task The task that has been marked as not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" public UnmarkTaskView(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Displays information about the unmarked task, including its details and the updated status.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" + \" OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" + \" \" + this.task.toString() + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":32}},{"path":"src/test/java/command/AddTaskCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"import model.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"import model.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":"public class AddTaskCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" @AfterEach","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" public void cleanup() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" public void executeAddTodoTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" ToDo todo \u003d new ToDo(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(todo, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" addTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e updatedTaskList \u003d taskList.getTaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" assertEquals(1, updatedTaskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" assertEquals(todo, updatedTaskList.get(0));","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" public void executeAddEventTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" String from \u003d \"01-01-2024 0000\";","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" String to \u003d \"01-01-2024 2359\";","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-M-yyyy HHmm\");","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" Event event \u003d new Event(\"event\", startTime, endTime);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(event, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" addTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e updatedTaskList \u003d taskList.getTaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" assertEquals(1, updatedTaskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" assertEquals(event, updatedTaskList.get(0));","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" public void executeAddDeadlineTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" String by \u003d \"01-01-2024 0000\";","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-M-yyyy HHmm\");","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" LocalDateTime time \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" Deadline deadline \u003d new Deadline(\"deadline\", time);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"yiwern5"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(deadline, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"yiwern5"},"content":" addTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e updatedTaskList \u003d taskList.getTaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"yiwern5"},"content":" assertEquals(1, updatedTaskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"yiwern5"},"content":" assertEquals(deadline, updatedTaskList.get(0));","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":78}},{"path":"src/test/java/command/DeleteTaskCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" private static TaskList taskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" @BeforeAll","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" static void setUp() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" ToDo todo \u003d new ToDo(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(todo, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" addTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" @AfterEach","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" public void cleanup() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" public void executeDeleteTaskTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(0, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" deleteTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e updatedTaskList \u003d taskList.getTaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" assertEquals(0, updatedTaskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":48}},{"path":"src/test/java/command/MarkTaskCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"public class MarkTaskCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" @AfterEach","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" public void cleanup() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public void executeMarkTaskCommandTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" ToDo todo \u003d new ToDo(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(todo, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" addTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(0, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" markTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" assertTrue(todo.isDone());","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(0, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" unmarkTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" assertFalse(todo.isDone());","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":41}},{"path":"src/test/java/duke/DukeExceptionTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"class DukeExceptionTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" void dukeExceptionTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" String errorMessage \u003d \"Test error message\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" DukeException dukeException \u003d new DukeException(errorMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! \" + errorMessage + \"\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" dukeException.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":22}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertInstanceOf;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"import command.AddTaskCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"import command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"import command.DeleteTaskCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"import command.InvalidCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"import command.ListTaskCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":"import command.MarkTaskCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":"import command.UnmarkTaskCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":"import model.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" private static TaskList taskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" private Parser parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" private Command command;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" @BeforeAll","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" static void setUp() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" ToDo todo \u003d new ToDo(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-M-yyyy HHmm\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" LocalDateTime time \u003d LocalDateTime.parse(\"01-01-2024 0000\", formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" Deadline deadline \u003d new Deadline(\"deadline\", time);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" new AddTaskCommand(todo, taskList).execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" new AddTaskCommand(deadline, taskList).execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" @AfterEach","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" public void cleanup() {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" public void listTaskCommand_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(ListTaskCommand.COMMAND_WORD, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(ListTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" public void markTaskCommand_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(MarkTaskCommand.COMMAND_WORD + \" 1\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(MarkTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" public void unmarkTaskCommand_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(UnmarkTaskCommand.COMMAND_WORD + \" 1\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(UnmarkTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"yiwern5"},"content":" public void listTaskCommand_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(ListTaskCommand.COMMAND_WORD + \" 9\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid index.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"yiwern5"},"content":" public void markTaskCommand_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(MarkTaskCommand.COMMAND_WORD + \" 9\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid index.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"yiwern5"},"content":" public void unmarkTaskCommand_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(UnmarkTaskCommand.COMMAND_WORD + \" 9\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid index.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"yiwern5"},"content":" public void listTaskCommand_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(ListTaskCommand.COMMAND_WORD, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index of task cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"yiwern5"},"content":" public void markTaskCommand_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(MarkTaskCommand.COMMAND_WORD, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index of task cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"yiwern5"},"content":" public void unmarkTaskCommand_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(UnmarkTaskCommand.COMMAND_WORD, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index of task cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"yiwern5"},"content":" public void listTaskCommand_notAnInteger_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(ListTaskCommand.COMMAND_WORD + \" a\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index you\u0027ve input is not an integer.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"yiwern5"},"content":" public void markTaskCommand_notAnInteger_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(MarkTaskCommand.COMMAND_WORD + \" a\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index you\u0027ve input is not an integer.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"yiwern5"},"content":" public void unmarkTaskCommand_notAnInteger_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(UnmarkTaskCommand.COMMAND_WORD + \" a\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index you\u0027ve input is not an integer.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_todo_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.TODO + \" test\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(AddTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":213,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":215,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_event_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":216,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.EVENT + \" test /from 01-01-2024 0000 /to 2359\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(AddTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":220,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":222,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_deadline_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":223,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.DEADLINE + \" test /by 01-01-2024 0000\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(AddTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_todoEmptyDescription_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":230,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.TODO, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The description of a todo cannot be empty.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":239,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":242,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":244,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_eventEmptyDescription_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":245,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.EVENT, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":247,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":248,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":249,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":250,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":251,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The description of an event cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":252,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":253,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":254,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":255,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":256,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":257,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":258,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":259,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_deadlineEmptyDescription_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":260,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":261,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.DEADLINE, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":262,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":263,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":264,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":265,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":266,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The description of a deadline cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":267,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":268,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":269,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":270,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":271,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":272,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":273,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":274,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_eventNoTime_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":275,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":276,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.EVENT + \"test\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":277,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":278,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":279,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":280,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":281,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid input. Use: event event_title /from dd-mm-yyyy HHmm /to HHmm\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":282,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":283,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":284,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":285,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":286,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":287,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":288,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":289,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_deadlineNoTime_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":290,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":291,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.DEADLINE + \"test\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":292,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":293,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":294,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":295,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":296,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid input. Use: deadline deadline_title /by dd-mm-yyyy HHmm\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":297,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":298,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":299,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":300,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":301,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":302,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":303,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":304,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_eventEmptyTime_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":305,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":306,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.EVENT + \"test /from\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":307,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":308,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":309,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":310,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":311,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid date \u0026 time input. Use /from dd-mm-yyyy HHmm /to HHmm\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":312,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":313,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":314,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":315,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":316,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":317,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":318,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":319,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_deadlineEmptyTime_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":320,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":321,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.DEADLINE + \"test /by\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":322,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":323,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":324,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":325,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":326,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Use dd-mm-yyyy HHmm as the date format.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":327,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":328,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":329,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":330,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":331,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":332,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":333,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":334,"author":{"gitId":"yiwern5"},"content":" public void deleteTaskCommandTest_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":335,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(DeleteTaskCommand.COMMAND_WORD + \" 1\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":336,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":337,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(DeleteTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":338,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":339,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":340,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":341,"author":{"gitId":"yiwern5"},"content":" public void deleteTaskCommand_notAnInteger_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":342,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":343,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(DeleteTaskCommand.COMMAND_WORD + \" a\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":344,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":345,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":346,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":347,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":348,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index you\u0027ve input is not an integer.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":349,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":350,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":351,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":352,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":353,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":354,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":355,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":356,"author":{"gitId":"yiwern5"},"content":" public void deleteTaskCommand_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":357,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":358,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(DeleteTaskCommand.COMMAND_WORD, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":359,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":360,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":361,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":362,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":363,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index of task cannot be empty.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":364,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":365,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":366,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":367,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":368,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":369,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":370,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":371,"author":{"gitId":"yiwern5"},"content":" public void invalidCommandTest() throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":372,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(\"blah\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":373,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":374,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(InvalidCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":375,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":376,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":376}},{"path":"src/test/java/duke/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"public class StorageTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" void isFileExistsTest_returnsTrue() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" String filePath \u003d \"test.dat\";","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" storage.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" assertTrue(storage.isFileExists());","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" void isFileExistsTest_returnsFalse() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" String filePath \u003d \"test.dat\";","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" assertFalse(storage.isFileExists());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" void createNewFileTest_returnsTrue() {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" String filePath \u003d \"test.dat\";","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" storage.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" assertTrue(storage.isFileExists());","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" void updateAndLoadTest_returnsTrue() {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" String filePath \u003d \"test.dat\";","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e originalTaskList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" originalTaskList.add(new ToDo(\"todo\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" storage.update(originalTaskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e loadedTaskList \u003d storage.load();","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" assertEquals(originalTaskList.size(), loadedTaskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":65}},{"path":"src/test/java/model/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertInstanceOf;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" private static ToDo todo;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" private static Event event;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" private static Deadline deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" @BeforeAll","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" static void setUp() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" todo \u003d new ToDo(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" event \u003d new Event(\"event\", LocalDateTime.of(2024, 1, 1, 0, 0),","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" LocalDateTime.of(2024, 1, 1, 12, 0));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" deadline \u003d new Deadline(\"deadline\", LocalDateTime.of(2024, 1, 1, 12, 0));","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" public void todoTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" String expectedToString \u003d \"[T][ ] todo\";","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" String actualToString \u003d todo.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(ToDo.class, todo);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" assertEquals(expectedToString, actualToString);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" public void eventTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" String expectedToString \u003d \"[E][ ] event (on: 01 Jan 2024 12:00AM to 12:00PM)\";","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" String actualToString \u003d event.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(Event.class, event);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" assertEquals(expectedToString, actualToString);","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" public void deadlineTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" String expectedToString \u003d \"[D][ ] deadline (by: 01 Jan 2024 12:00PM, MONDAY)\";","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" String actualToString \u003d deadline.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(Deadline.class, deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" assertEquals(expectedToString, actualToString);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":50}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"deadline assignment /by 06-04-2024 2359","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"event ST2132 exam /from 07-05-2024 1600 /to 1800","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"unmark 8","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"event go library","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"deadline","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"blah","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"delete 1","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":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":"yiwern5"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-24"},{"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":"yiwern5"},"content":"checkstyle {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-24"},{"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":"yiwern5"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2024-01-24"},{"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":"yiwern5"},"content":" archiveFileName \u003d \u0027Iggly.jar\u0027","lastModifiedDate":"2024-01-25"},{"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":{"yiwern5":7,"-":40}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import command.Command;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import command.ExitCommand;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import command.GreetCommand;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import duke.Parser;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * {@link Duke} is the main class of this program.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * @author Tsui Yi Wern (yiwern5)","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Constructor for {@link Duke} to initialize the storage or","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * get task list from the storage.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" * @param filePath the file path of the storage.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" if (storage.isFileExists()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" storage.createNewFile();","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" storage.update(taskList.getTaskList());","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" * Launch the program and initiate the command loop to process user input.","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" * It displays a greeting message by calling the {@link GreetCommand}.","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" public void launch() {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" new GreetCommand().execute(storage);","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" try (Scanner scanner \u003d new Scanner(System.in)) {","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" System.out.print(\"Enter a command:\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" new ExitCommand().execute(storage);","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" Command c \u003d new Parser(input, taskList).parse();","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" c.execute(storage);","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" * The program\u0027s main function to start the application.","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" * @param args the arguments passed into the application.","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":" new Duke(\"./data.dat\").launch();","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":67,"-":4}},{"path":"src/main/java/command/AddTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import view.AddTaskView;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Command to add a {@link Task} to the {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public static final String TODO \u003d \"todo\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" public static final String EVENT \u003d \"event\";","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" public static final String DEADLINE \u003d \"deadline\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@link AddTaskCommand} object with the specified {@link Task} and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * This command is used to add a new task to the given task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * @param task The task to be added, in the form of {@code ToDo}, {@code Event} or {@code Deadline}.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task will be added.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" public AddTaskCommand(Task task, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link AddTaskCommand}, performing the necessary actions to carry out the specific functionality","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * related to adding a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" * This method adds the given task to the task list, update the storage and display the add task message by","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" * initialising the add task view.","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is used to update","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" * and save changes after executing the command.","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" storage.update(taskList.getTaskList());","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" AddTaskView addTaskView \u003d new AddTaskView(this.task, this.taskList);","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" addTaskView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":47}},{"path":"src/main/java/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link Command} class is an abstract base class representing a generic command in a","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * command-pattern-based design. Subclasses of this class provide concrete implementations","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" * for the {@code execute} method to define specific behaviors.","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link Command}, performing the necessary actions to carry out the specific functionality","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" * related to the command implementation.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is used to update","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * and save changes after executing the command.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" public abstract void execute(Storage storage);","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":19}},{"path":"src/main/java/command/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import view.DeleteTaskView;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Command to delete a {@link Task} from the {@link TaskList} using the task index.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link DeleteTaskCommand} object with the specified {@link Task} index and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" * This command is used to delete a task from the given task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task will be deleted.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" public DeleteTaskCommand(int index, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" this.task \u003d taskList.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link DeleteTaskCommand}, performing the necessary actions to carry out the specific functionality","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * related to deleting a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * This method deletes the given task index from the task list, update the storage and display the delete task","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" * message by initialising the delete task view.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is used to update","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" * and save changes after executing the command.","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" taskList.remove(task);","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" storage.update(taskList.getTaskList());","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" DeleteTaskView deleteTaskView \u003d new DeleteTaskView(this.task, this.taskList);","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" deleteTaskView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":45}},{"path":"src/main/java/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import view.ExitView;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * Command to terminate the program.","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" private final ExitView exitView;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@code ExitCommand}.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" public ExitCommand() {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" this.exitView \u003d new ExitView();","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link ExitCommand}, print exit message when the program is terminated.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" * This method display the exit message by initialising the exit view.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is not used in {@link ExitCommand}","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" exitView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":31}},{"path":"src/main/java/command/FindTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import view.FindTaskView;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" * Command to list out filtered tasks in the {@link TaskList} based on user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"public class FindTaskCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" private final String title;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link FindTaskCommand} object using user\u0027s input and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * This command is used to list filtered tasks in the given task list based on user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" * @param title The user\u0027s desired find task keyword.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list which requires filtering.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" public FindTaskCommand(String title, TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" this.title \u003d title;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link FindTaskCommand}, filter a {@link TaskList} based on user\u0027s input and","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" * prints a filtered {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is not used in {@link FindTaskCommand}","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" TaskList filteredTaskList \u003d taskList.find(title);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" FindTaskView findTaskView \u003d new FindTaskView(filteredTaskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" findTaskView.display();","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"yiwern5":39}},{"path":"src/main/java/command/GreetCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import view.GreetView;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * Command to greet user when program is started.","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class GreetCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final GreetView greetView;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@code GreetCommand}.","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" public GreetCommand() {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" this.greetView \u003d new GreetView();","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link GreetCommand}, print a welcome message greeting the user.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * This method display the exit message by initialising the exit view.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is not used in {@link GreetCommand}","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" greetView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":30}},{"path":"src/main/java/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * The {@link InvalidCommand} class represents a command to handle invalid user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final String exception;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@link InvalidCommand} with a default exception message.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" public InvalidCommand() {","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" this.exception \u003d new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\").getMessage();","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link InvalidCommand}, print the error message when user input is invalid.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * This method display the error message by printing out the exception message.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is not used in {@link ExitCommand}","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" System.out.println(exception);","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":30}},{"path":"src/main/java/command/ListTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import view.TaskListView;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" * Command to list out all tasks in the {@code TaskList}.","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"public class ListTaskCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" private final TaskListView taskListView;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link ListTaskCommand} object using {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * This command is used to list all tasks in the given task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to be listed .","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" public ListTaskCommand(TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" this.taskListView \u003d new TaskListView(taskList);","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link ListTaskCommand}, prints {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" * This method display the task list using the task list view.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is not used in {@link ListTaskCommand}","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" taskListView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":36}},{"path":"src/main/java/command/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import view.MarkTaskView;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Command to mark a {@link Task} as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link MarkTaskCommand} object with the specified {@link Task} index and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" * This command is used to mark a task as done from the given task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task will be marked.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public MarkTaskCommand(int index, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" this.task \u003d taskList.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link MarkTaskCommand}, performing the necessary actions to carry out the specific functionality","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * related to marking a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" * This method marks the given task as done from the task list, update the storage and display the mark task","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" * message by initialising the mark task view.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is used to update","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" * and save changes after executing the command.","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" this.task.mark();","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" storage.update(taskList.getTaskList());","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" MarkTaskView markTaskView \u003d new MarkTaskView(this.task);","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" markTaskView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":46}},{"path":"src/main/java/command/UnmarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import view.UnmarkTaskView;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Command to mark a {@link Task} as not done.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link UnmarkTaskCommand} object with the specified {@link Task} index and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" * This command is used to mark a task as not done from the given task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * @param index The index of the task to be marked as not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task will be marked.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" public UnmarkTaskCommand(int index, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" this.task \u003d taskList.get(index);","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" * Executes the {@link UnmarkTaskCommand}, performing the necessary actions to carry out the specific functionality","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * related to marking a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * This method marks the given task as not done from the task list, update the storage and display the unmark task","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" * message by initialising the unmark task view.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" * @param storage The storage object that manages the data persistence. It is used to update","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" * and save changes after executing the command.","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" public void execute(Storage storage) {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" this.task.unmark();","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" storage.update(taskList.getTaskList());","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" UnmarkTaskView unmarkTaskView \u003d new UnmarkTaskView(this.task);","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" unmarkTaskView.display();","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":45}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":" * The {@link DukeException} class represents a custom exception specific to the Duke application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":" * It extends the standard {@link Exception} class and provides a constructor to initialize the","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * exception message in a stylized format.","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link DukeException} with a formatted exception message.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * @param exception The specific error message associated with the exception.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" public DukeException(String exception) {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" super(","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! \" + exception + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":21}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import command.AddTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import command.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import command.DeleteTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"import command.FindTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"import command.InvalidCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import command.ListTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"import command.MarkTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"import command.UnmarkTaskCommand;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"import model.Deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"import model.Event;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * The {@link Parser} class is responsible for parsing user input and extracting relevant information","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" * to perform actions within the program.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":"public class Parser {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" private final String command;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link Parser} with the specified command string and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * @param command The raw command string provided by the user for parsing.","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" * @param taskList The {@code TaskList} associated with the parser, providing context for command execution.","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" public Parser(String command, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" * Parse user input and return the corresponding command based on user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" * @return a {@code Command} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user enters an invalid input.","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" public Command parse() throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" String[] splitTask \u003d command.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" Command command \u003d null;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" switch(splitTask[0]) {","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" case ListTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" command \u003d new ListTaskCommand(taskList);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" case MarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" command \u003d parseMark(splitTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" case UnmarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" command \u003d parseUnmark(splitTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" case AddTaskCommand.TODO:","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" task \u003d parseToDo(splitTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" command \u003d new AddTaskCommand(task, taskList);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" case AddTaskCommand.EVENT:","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" task \u003d parseEvent(splitTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" command \u003d new AddTaskCommand(task, taskList);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" case AddTaskCommand.DEADLINE:","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":" task \u003d parseDeadline(splitTask);","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":" command \u003d new AddTaskCommand(task, taskList);","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"yiwern5"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"yiwern5"},"content":" command \u003d parseDelete(splitTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"yiwern5"},"content":" case FindTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"yiwern5"},"content":" command \u003d parseFind(splitTask);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"yiwern5"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"yiwern5"},"content":" default:","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"yiwern5"},"content":" command \u003d new InvalidCommand();","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"yiwern5"},"content":" return command;","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"yiwern5"},"content":" * Parse a todo input.","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"yiwern5"},"content":" * @return a {@code ToDo} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user left the description empty.","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"yiwern5"},"content":" private static ToDo parseToDo(String[] todo) throws DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"yiwern5"},"content":" if (todo.length !\u003d 2 || todo[1].isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":92,"author":{"gitId":"yiwern5"},"content":" return new ToDo(todo[1]);","lastModifiedDate":"2024-01-22"},{"lineNumber":93,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"yiwern5"},"content":" * Parse an event input.","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"yiwern5"},"content":" * @return a {@code Event} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user left the description empty or entered invalid format.","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"yiwern5"},"content":" private static Event parseEvent(String[] event) throws DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"yiwern5"},"content":" if (event.length !\u003d 2 || event[1].isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":102,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"yiwern5"},"content":" String[] splitEvent \u003d event[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"yiwern5"},"content":" if (splitEvent.length !\u003d 2) {","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid input. Use: event event_title /from dd-mm-yyyy HHmm /to HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"yiwern5"},"content":" String[] splitDuration \u003d splitEvent[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"yiwern5"},"content":" if (splitDuration.length !\u003d 2) {","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid input. Use: event event_title /from dd-mm-yyyy HHmm /to HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":113,"author":{"gitId":"yiwern5"},"content":" String title \u003d splitEvent[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":114,"author":{"gitId":"yiwern5"},"content":" String from \u003d splitDuration[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"yiwern5"},"content":" String to \u003d splitDuration[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":116,"author":{"gitId":"yiwern5"},"content":" String temp \u003d null;","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"yiwern5"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-M-yyyy HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"yiwern5"},"content":" LocalDateTime fromDateTime \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"yiwern5"},"content":" temp \u003d fromDateTime.format(DateTimeFormatter.ofPattern(\"dd-M-yyyy\")) + \" \" + to;","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"yiwern5"},"content":" LocalDateTime toTime \u003d LocalDateTime.parse(temp, formatter);","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"yiwern5"},"content":" return new Event(title, fromDateTime, toTime);","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"yiwern5"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid date \u0026 time input. Use /from dd-mm-yyyy HHmm /to HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"yiwern5"},"content":" * Parse a deadline input.","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"yiwern5"},"content":" * @return a {@code Deadline} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user left the description empty or entered invalid format.","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"yiwern5"},"content":" private static Deadline parseDeadline(String[] deadline) throws DukeException {","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"yiwern5"},"content":" if (deadline.length !\u003d 2 || deadline[1].isEmpty()) {","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"yiwern5"},"content":" String[] splitDeadline \u003d deadline[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-22"},{"lineNumber":138,"author":{"gitId":"yiwern5"},"content":" if (splitDeadline.length !\u003d 2) {","lastModifiedDate":"2024-01-22"},{"lineNumber":139,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid input. Use: deadline deadline_title /by dd-mm-yyyy HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":141,"author":{"gitId":"yiwern5"},"content":" String title \u003d splitDeadline[0];","lastModifiedDate":"2024-01-22"},{"lineNumber":142,"author":{"gitId":"yiwern5"},"content":" String time \u003d splitDeadline[1];","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"yiwern5"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-M-yyyy HHmm\");","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"yiwern5"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(time, formatter);","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"yiwern5"},"content":" return new Deadline(title, dateTime);","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"yiwern5"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Use dd-mm-yyyy HHmm as the date format.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":151,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":152,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":153,"author":{"gitId":"yiwern5"},"content":" * Parse a mark task input.","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"yiwern5"},"content":" * @return a {@code MarkTaskCommand} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user entered invalid index.","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"yiwern5"},"content":" private MarkTaskCommand parseMark(String[] command) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":159,"author":{"gitId":"yiwern5"},"content":" int markIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":160,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":161,"author":{"gitId":"yiwern5"},"content":" return new MarkTaskCommand(markIndex, this.taskList);","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":163,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid index.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":164,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":165,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":166,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index of task cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":167,"author":{"gitId":"yiwern5"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":168,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index you\u0027ve input is not an integer.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":169,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":170,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":171,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"yiwern5"},"content":" * Parse an unmark task input.","lastModifiedDate":"2024-01-25"},{"lineNumber":174,"author":{"gitId":"yiwern5"},"content":" * @return a {@code UnmarkTaskCommand} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":175,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user entered invalid index.","lastModifiedDate":"2024-01-25"},{"lineNumber":176,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":177,"author":{"gitId":"yiwern5"},"content":" private UnmarkTaskCommand parseUnmark(String[] command) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":179,"author":{"gitId":"yiwern5"},"content":" int unmarkIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":180,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":181,"author":{"gitId":"yiwern5"},"content":" return new UnmarkTaskCommand(unmarkIndex, this.taskList);","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":183,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid index.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":184,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":185,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":186,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index of task cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":187,"author":{"gitId":"yiwern5"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":188,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index you\u0027ve input is not an integer.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":189,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":190,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":191,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":192,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":193,"author":{"gitId":"yiwern5"},"content":" * Parse a delete task input.","lastModifiedDate":"2024-01-25"},{"lineNumber":194,"author":{"gitId":"yiwern5"},"content":" * @return a {@code DeleteTaskCommand} based on user\u0027s input.","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user entered invalid index.","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"yiwern5"},"content":" private DeleteTaskCommand parseDelete(String[] command) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":198,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":199,"author":{"gitId":"yiwern5"},"content":" int deleteIndex \u003d Integer.parseInt(command[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":201,"author":{"gitId":"yiwern5"},"content":" return new DeleteTaskCommand(deleteIndex, this.taskList);","lastModifiedDate":"2024-01-23"},{"lineNumber":202,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":203,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"Invalid index.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":204,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":205,"author":{"gitId":"yiwern5"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":206,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index of task cannot be empty.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":207,"author":{"gitId":"yiwern5"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":208,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The index you\u0027ve input is not an integer.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":209,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":210,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":211,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":212,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":213,"author":{"gitId":"yiwern5"},"content":" * Parse a find task input.","lastModifiedDate":"2024-01-29"},{"lineNumber":214,"author":{"gitId":"yiwern5"},"content":" * @return a {@link FindTaskCommand} based on user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":215,"author":{"gitId":"yiwern5"},"content":" * @throws DukeException if user left the description empty.","lastModifiedDate":"2024-01-29"},{"lineNumber":216,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":217,"author":{"gitId":"yiwern5"},"content":" private FindTaskCommand parseFind(String[] input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":218,"author":{"gitId":"yiwern5"},"content":" if (input.length !\u003d 2 || input[1].isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":219,"author":{"gitId":"yiwern5"},"content":" throw new DukeException(\"The description of find cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":220,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":221,"author":{"gitId":"yiwern5"},"content":" return new FindTaskCommand(input[1], this.taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":222,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":223,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":223}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" * The {@link Storage} class is responsible for handling the reading, writing and saving task data to a file.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"public class Storage {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" private final File file;","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link Storage} instance with the specified file path.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" * @param filePath The file path where task data is stored or will be stored.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" * Checks if the file associated with this storage exists.","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" * @return {@code true} if the file exists, {@code false} otherwise.","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" public boolean isFileExists() {","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" try (FileInputStream fileInputStream \u003d new FileInputStream(file)) {","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" return true;","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" return false;","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" System.out.println(\"Error checking file existence: \" + e);","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" return false;","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" * Creates a new file at the specified file path.","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" public void createNewFile() {","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" this.file.createNewFile();","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" System.out.println(\"Unable to create new file.\");","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" * Updates the file with the provided task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" * @param taskList The list of tasks to be written to the file.","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" public void update(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-22"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" try (FileOutputStream fileOutputStream \u003d new FileOutputStream(this.file);","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" ObjectOutputStream objectOutputStream \u003d new ObjectOutputStream(fileOutputStream)) {","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" objectOutputStream.writeObject(taskList);","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"yiwern5"},"content":" * Loads tasks from the file and returns the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"yiwern5"},"content":" * @return The list of tasks loaded from the file. If an error occurs during loading,","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"yiwern5"},"content":" * an empty list is returned.","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"yiwern5"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"yiwern5"},"content":" try (FileInputStream fileInputStream \u003d new FileInputStream(file);","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"yiwern5"},"content":" ObjectInputStream objectInputStream \u003d new ObjectInputStream(fileInputStream)) {","lastModifiedDate":"2024-01-22"},{"lineNumber":79,"author":{"gitId":"yiwern5"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-01-22"},{"lineNumber":80,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e taskList \u003d (ArrayList\u003cTask\u003e) objectInputStream.readObject();","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"yiwern5"},"content":" return taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"yiwern5"},"content":" } catch (IOException | ClassNotFoundException e) {","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"yiwern5"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"yiwern5"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":86,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":87}},{"path":"src/main/java/model/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * The {@link Deadline} class represents a task with a specific deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final LocalDateTime date;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link Deadline} instance with the specified title and deadline date.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" * @param title The title of the deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * @param date The deadline date and time.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" public Deadline(String title, LocalDateTime date) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" super(title);","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" * Returns a string representation of the deadline task, including its type, title, and deadline details.","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" * @return A formatted string representing the deadline task.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" return \"[D]\"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" + super.toString()","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" + \" (by: \" + date.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mma\"))","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" + \", \" + date.getDayOfWeek() + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":35}},{"path":"src/main/java/model/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * The {@link Event} class represents a task with a specific time range.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final LocalDateTime from;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" private final LocalDateTime to;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@link Event} instance with the specified title, start time, and end time.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * @param title The title of the event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" public Event(String title, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" super(title);","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" * Returns a string representation of the event task, including its type, title, and deadline details.","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" * @return A formatted string representing the event task.","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" return \"[E]\"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" + super.toString()","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" + \" (on: \" + from.format(DateTimeFormatter.ofPattern(\"dd MMM yyyy h:mma\"))","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" + \" to \" + to.format(DateTimeFormatter.ofPattern(\"h:mma\")) + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":38}},{"path":"src/main/java/model/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link Task} class is an abstract base class representing a generic task in the Duke application.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * It implements the {@link Serializable} interface to support object serialization.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public abstract class Task implements Serializable {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final String title;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link Task} instance with the specified title. By default, the task is marked as not done.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * @param title The title of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" public Task(String title) {","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" this.title \u003d title;","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" * Returns a string representation of the task, including its status (done or not) and title.","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" * @return A formatted string representing the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" if (this.isDone) {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" return \"[X] \" + this.title;","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" } else {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" return \"[ ] \" + this.title;","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" * Mark the task as completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" public void mark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" * Mark the task as not completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" public void unmark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" * Checks whether the task associated with this object has been completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" * @return {@code true} if the task is done, {@code false} otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" return this.isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" * Returns the title of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" * @return the title of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" public String getTitle() {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" return this.title;","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":68}},{"path":"src/main/java/model/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link TaskList} class encapsulates a task list and provides methods to","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * manipulate and retrieve tasks.","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class TaskList {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" * Constructs an empty {@link TaskList} with an initial capacity of 100.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" public TaskList() {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link TaskList} with the specified list of tasks loaded from storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" * @param taskList The list of tasks to be initialized with.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" * Returns the list of tasks.","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" return this.taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" * Returns the task at the specified index in the list.","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" return this.taskList.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" * Adds a task to the list.","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" * Removes a task from the list.","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" * @param task The task to be removed.","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" public void remove(Task task) {","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" this.taskList.remove(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":" * @return The number of tasks in the list.","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"yiwern5"},"content":" public int size() {","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"yiwern5"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"yiwern5"},"content":" * Returns the filtered task list based on user\u0027s input.","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"yiwern5"},"content":" * @param input user\u0027s desired find task keyword.","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"yiwern5"},"content":" * @return the filtered task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"yiwern5"},"content":" public TaskList find(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e filteredTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"yiwern5"},"content":" for (Task task: taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"yiwern5"},"content":" if (task.getTitle().contains(input)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"yiwern5"},"content":" filteredTaskList.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"yiwern5"},"content":" return new TaskList(filteredTaskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yiwern5":89}},{"path":"src/main/java/model/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":" * The {@link ToDo} class represents a todo task.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link ToDo} instance with the specified title.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" * @param title The title of the ToDo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" public ToDo(String title) {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" super(title);","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" * Returns a string representation of the ToDo task, including its type and title.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" * @return A formatted string representing the ToDo task.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":26}},{"path":"src/main/java/view/AddTaskView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * The {@link AddTaskView} class represents a view for displaying information after adding a {@link Task}.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class AddTaskView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" private final String size;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@link AddTaskView} with the specified {@link Task} and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * @param task The task that has been added.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task has been added.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" public AddTaskView(Task task, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" this.size \u003d String.valueOf(taskList.size());","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" * Displays information about the added task, including its details and the updated task list size.","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" + \" Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" + \" \" + this.task.toString() + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" + \" Now you have \" + this.size + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":37}},{"path":"src/main/java/view/DeleteTaskView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" * The {@link DeleteTaskView} class represents a view for displaying information after deleting a {@link Task}.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"public class DeleteTaskView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" private final String size;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * Constructs an {@link DeleteTaskView} with the specified {@link Task} and {@link TaskList}.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" * @param task The task that has been deleted.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" * @param taskList The task list to which the task has been deleted.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" public DeleteTaskView(Task task, TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" this.size \u003d String.valueOf(taskList.size());","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" * Displays information about the deleted task, including its details and the updated task list size.","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" + \" Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" + \" \" + this.task.toString() + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" + \" Now you have \" + this.size + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":37}},{"path":"src/main/java/view/ExitView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":" * The {@link ExitView} class represents a view for displaying a farewell message upon exiting the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"public class ExitView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Displays a farewell message when the program is terminated.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" + \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":19}},{"path":"src/main/java/view/FindTaskView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link FindTaskView} class represents a view for displaying the list of filtered tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"public class FindTaskView extends Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link FindTaskView} with the specified task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * @param taskList The {@link TaskList} containing the filtered tasks to be displayed.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" public FindTaskView(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Displays the list of filtered tasks along with an introductory message and a formatted task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" String list \u003d \"\";","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" list +\u003d (\" \" + (i + 1) + \". \" + taskList.get(i).toString() + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" \"Here are the matching tasks in your list:\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"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 \u003d :\u003d\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" + \":: Task List ::\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"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 \u003d :\u003d\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" + list","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"yiwern5":37}},{"path":"src/main/java/view/GreetView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":" * The {@link GreetView} class represents a view for displaying a welcome message upon starting the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"public class GreetView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Displays a welcome message when the program is started.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" \" ░░ ░░░░░░ ░░░░░░ ░░ ░░ ░░\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" + \" ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" + \" ▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒▒ ▒▒ ▒▒▒▒\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" + \" ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" + \" ██ ██████ ██████ ███████ ██\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" + \" Hello! I\u0027m Iggly, your personal assistant chatbot.\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":25}},{"path":"src/main/java/view/MarkTaskView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link MarkTaskView} class represents a view for displaying information after marking a task as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"public class MarkTaskView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link MarkTaskView} with the specified task.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * @param task The task that has been marked as done.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" public MarkTaskView(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Displays information about the marked task, including its details and the updated status.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" + \" Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" + \" \" + this.task.toString() + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":32}},{"path":"src/main/java/view/TaskListView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link TaskListView} class represents a view for displaying the list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"public class TaskListView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link TaskListView} with the specified task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * @param taskList The {@link TaskList} containing the tasks to be displayed.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" public TaskListView(TaskList taskList) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Displays the list of tasks along with an introductory message and a formatted task list.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" String list \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" list +\u003d (\" \" + (i + 1) + \". \" + taskList.get(i).toString() + \"\\n\");","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" \"\\n\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 \u003d :\u003d\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" + \":: Task List ::\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"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 \u003d :\u003d\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" + list","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":36}},{"path":"src/main/java/view/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":" * The {@link Ui} class is an abstract base class representing the user interface in the Duke application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"public abstract class Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" * Displays information or messages to the user.","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" public abstract void display();","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":12}},{"path":"src/main/java/view/UnmarkTaskView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package view;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":" * The {@link UnmarkTaskView} class represents a view for displaying information after marking a task as not done.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"public class UnmarkTaskView extends Ui {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" private final Task task;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" * Constructs a {@link UnmarkTaskView} with the specified task.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" * @param task The task that has been marked as not done.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" public UnmarkTaskView(Task task) {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" * Displays information about the unmarked task, including its details and the updated status.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public void display() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" System.out.println(","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" + \" OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" + \" \" + this.task.toString() + \"\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":32}},{"path":"src/test/java/command/AddTaskCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"import model.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"import model.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":"public class AddTaskCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" @AfterEach","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" public void cleanup() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" public void executeAddTodoTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" ToDo todo \u003d new ToDo(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(todo, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" addTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e updatedTaskList \u003d taskList.getTaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" assertEquals(1, updatedTaskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" assertEquals(todo, updatedTaskList.get(0));","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" public void executeAddEventTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" String from \u003d \"01-01-2024 0000\";","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" String to \u003d \"01-01-2024 2359\";","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-M-yyyy HHmm\");","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" Event event \u003d new Event(\"event\", startTime, endTime);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(event, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" addTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e updatedTaskList \u003d taskList.getTaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" assertEquals(1, updatedTaskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" assertEquals(event, updatedTaskList.get(0));","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" public void executeAddDeadlineTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" String by \u003d \"01-01-2024 0000\";","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-M-yyyy HHmm\");","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" LocalDateTime time \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" Deadline deadline \u003d new Deadline(\"deadline\", time);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"yiwern5"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(deadline, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"yiwern5"},"content":" addTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e updatedTaskList \u003d taskList.getTaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"yiwern5"},"content":" assertEquals(1, updatedTaskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"yiwern5"},"content":" assertEquals(deadline, updatedTaskList.get(0));","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":78}},{"path":"src/test/java/command/DeleteTaskCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" private static TaskList taskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" @BeforeAll","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" static void setUp() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" ToDo todo \u003d new ToDo(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(todo, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" addTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" @AfterEach","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" public void cleanup() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" public void executeDeleteTaskTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(0, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" deleteTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e updatedTaskList \u003d taskList.getTaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" assertEquals(0, updatedTaskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":48}},{"path":"src/test/java/command/MarkTaskCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package command;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"public class MarkTaskCommandTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" @AfterEach","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" public void cleanup() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" public void executeMarkTaskCommandTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" ToDo todo \u003d new ToDo(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(todo, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" addTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(0, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" markTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" assertTrue(todo.isDone());","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(0, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" unmarkTaskCommand.execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" assertFalse(todo.isDone());","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":41}},{"path":"src/test/java/duke/DukeExceptionTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"class DukeExceptionTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":" void dukeExceptionTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":" String errorMessage \u003d \"Test error message\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" DukeException dukeException \u003d new DukeException(errorMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! \" + errorMessage + \"\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" dukeException.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":22}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertInstanceOf;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"import command.AddTaskCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":"import command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":"import command.DeleteTaskCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":"import command.InvalidCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":"import command.ListTaskCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":"import command.MarkTaskCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":"import command.UnmarkTaskCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":"import model.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":"import model.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" private static TaskList taskList;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":" private Parser parser;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" private Command command;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" @BeforeAll","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" static void setUp() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" ToDo todo \u003d new ToDo(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-M-yyyy HHmm\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" LocalDateTime time \u003d LocalDateTime.parse(\"01-01-2024 0000\", formatter);","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" Deadline deadline \u003d new Deadline(\"deadline\", time);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" new AddTaskCommand(todo, taskList).execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" new AddTaskCommand(deadline, taskList).execute(storage);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" @AfterEach","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" public void cleanup() {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(\"test.dat\");","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" public void listTaskCommand_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(ListTaskCommand.COMMAND_WORD, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(ListTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":" public void markTaskCommand_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(MarkTaskCommand.COMMAND_WORD + \" 1\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(MarkTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"yiwern5"},"content":" public void unmarkTaskCommand_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(UnmarkTaskCommand.COMMAND_WORD + \" 1\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(UnmarkTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"yiwern5"},"content":" public void listTaskCommand_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(ListTaskCommand.COMMAND_WORD + \" 9\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid index.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"yiwern5"},"content":" public void markTaskCommand_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(MarkTaskCommand.COMMAND_WORD + \" 9\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid index.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"yiwern5"},"content":" public void unmarkTaskCommand_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(UnmarkTaskCommand.COMMAND_WORD + \" 9\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid index.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"yiwern5"},"content":" public void listTaskCommand_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(ListTaskCommand.COMMAND_WORD, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index of task cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"yiwern5"},"content":" public void markTaskCommand_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(MarkTaskCommand.COMMAND_WORD, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index of task cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"yiwern5"},"content":" public void unmarkTaskCommand_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(UnmarkTaskCommand.COMMAND_WORD, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index of task cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"yiwern5"},"content":" public void listTaskCommand_notAnInteger_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(ListTaskCommand.COMMAND_WORD + \" a\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index you\u0027ve input is not an integer.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"yiwern5"},"content":" public void markTaskCommand_notAnInteger_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(MarkTaskCommand.COMMAND_WORD + \" a\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index you\u0027ve input is not an integer.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"yiwern5"},"content":" public void unmarkTaskCommand_notAnInteger_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":195,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(UnmarkTaskCommand.COMMAND_WORD + \" a\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":197,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":198,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":199,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":200,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index you\u0027ve input is not an integer.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":201,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":202,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":203,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":204,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":205,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":206,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":207,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":208,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_todo_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.TODO + \" test\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":210,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(AddTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":213,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":215,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_event_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":216,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.EVENT + \" test /from 01-01-2024 0000 /to 2359\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(AddTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":220,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":221,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":222,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_deadline_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":223,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.DEADLINE + \" test /by 01-01-2024 0000\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(AddTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_todoEmptyDescription_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":230,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.TODO, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The description of a todo cannot be empty.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":239,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":242,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":244,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_eventEmptyDescription_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":245,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.EVENT, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":247,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":248,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":249,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":250,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":251,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The description of an event cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":252,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":253,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":254,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":255,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":256,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":257,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":258,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":259,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_deadlineEmptyDescription_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":260,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":261,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.DEADLINE, taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":262,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":263,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":264,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":265,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":266,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The description of a deadline cannot be empty.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":267,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":268,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":269,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":270,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":271,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":272,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":273,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":274,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_eventNoTime_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":275,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":276,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.EVENT + \"test\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":277,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":278,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":279,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":280,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":281,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid input. Use: event event_title /from dd-mm-yyyy HHmm /to HHmm\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":282,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":283,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":284,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":285,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":286,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":287,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":288,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":289,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_deadlineNoTime_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":290,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":291,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.DEADLINE + \"test\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":292,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":293,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":294,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":295,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":296,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid input. Use: deadline deadline_title /by dd-mm-yyyy HHmm\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":297,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":298,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":299,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":300,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":301,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":302,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":303,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":304,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_eventEmptyTime_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":305,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":306,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.EVENT + \"test /from\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":307,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":308,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":309,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":310,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":311,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Invalid date \u0026 time input. Use /from dd-mm-yyyy HHmm /to HHmm\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":312,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":313,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":314,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":315,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":316,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":317,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":318,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":319,"author":{"gitId":"yiwern5"},"content":" public void addTaskCommandTest_deadlineEmptyTime_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":320,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":321,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(AddTaskCommand.DEADLINE + \"test /by\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":322,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":323,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":324,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":325,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":326,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! Use dd-mm-yyyy HHmm as the date format.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":327,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":328,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":329,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":330,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":331,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":332,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":333,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":334,"author":{"gitId":"yiwern5"},"content":" public void deleteTaskCommandTest_writtenCorrectly() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":335,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(DeleteTaskCommand.COMMAND_WORD + \" 1\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":336,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":337,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(DeleteTaskCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":338,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":339,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":340,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":341,"author":{"gitId":"yiwern5"},"content":" public void deleteTaskCommand_notAnInteger_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":342,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":343,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(DeleteTaskCommand.COMMAND_WORD + \" a\", taskList);","lastModifiedDate":"2024-01-29"},{"lineNumber":344,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-29"},{"lineNumber":345,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":346,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-29"},{"lineNumber":347,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":348,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index you\u0027ve input is not an integer.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":349,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-29"},{"lineNumber":350,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-29"},{"lineNumber":351,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-29"},{"lineNumber":352,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":353,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":354,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":355,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":356,"author":{"gitId":"yiwern5"},"content":" public void deleteTaskCommand_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-29"},{"lineNumber":357,"author":{"gitId":"yiwern5"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":358,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(DeleteTaskCommand.COMMAND_WORD, taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":359,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":360,"author":{"gitId":"yiwern5"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":361,"author":{"gitId":"yiwern5"},"content":" assertEquals(","lastModifiedDate":"2024-01-25"},{"lineNumber":362,"author":{"gitId":"yiwern5"},"content":" \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":363,"author":{"gitId":"yiwern5"},"content":" + \" OOPS!!! The index of task cannot be empty.\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":364,"author":{"gitId":"yiwern5"},"content":" + \"____________________________________________________________\\n\",","lastModifiedDate":"2024-01-25"},{"lineNumber":365,"author":{"gitId":"yiwern5"},"content":" e.getMessage()","lastModifiedDate":"2024-01-25"},{"lineNumber":366,"author":{"gitId":"yiwern5"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":367,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":368,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":369,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":370,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":371,"author":{"gitId":"yiwern5"},"content":" public void invalidCommandTest() throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":372,"author":{"gitId":"yiwern5"},"content":" parser \u003d new Parser(\"blah\", taskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":373,"author":{"gitId":"yiwern5"},"content":" command \u003d parser.parse();","lastModifiedDate":"2024-01-25"},{"lineNumber":374,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(InvalidCommand.class, command);","lastModifiedDate":"2024-01-25"},{"lineNumber":375,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":376,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":376}},{"path":"src/test/java/duke/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package duke;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"import java.io.File;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"import model.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":"import model.ToDo;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"public class StorageTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" void isFileExistsTest_returnsTrue() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" String filePath \u003d \"test.dat\";","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" storage.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":" assertTrue(storage.isFileExists());","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" void isFileExistsTest_returnsFalse() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" String filePath \u003d \"test.dat\";","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" assertFalse(storage.isFileExists());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" void createNewFileTest_returnsTrue() {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" String filePath \u003d \"test.dat\";","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" storage.createNewFile();","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" assertTrue(storage.isFileExists());","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"yiwern5"},"content":" void updateAndLoadTest_returnsTrue() {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"yiwern5"},"content":" String filePath \u003d \"test.dat\";","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"yiwern5"},"content":" Storage storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e originalTaskList \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"yiwern5"},"content":" originalTaskList.add(new ToDo(\"todo\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"yiwern5"},"content":" storage.update(originalTaskList);","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"yiwern5"},"content":" ArrayList\u003cTask\u003e loadedTaskList \u003d storage.load();","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"yiwern5"},"content":" assertEquals(originalTaskList.size(), loadedTaskList.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"yiwern5"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"yiwern5"},"content":" assertTrue(file.delete());","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":65}},{"path":"src/test/java/model/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"package model;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"import static org.junit.jupiter.api.Assertions.assertInstanceOf;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":" private static ToDo todo;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"yiwern5"},"content":" private static Event event;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"yiwern5"},"content":" private static Deadline deadline;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"yiwern5"},"content":" @BeforeAll","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"yiwern5"},"content":" static void setUp() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"yiwern5"},"content":" todo \u003d new ToDo(\"todo\");","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"yiwern5"},"content":" event \u003d new Event(\"event\", LocalDateTime.of(2024, 1, 1, 0, 0),","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"yiwern5"},"content":" LocalDateTime.of(2024, 1, 1, 12, 0));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"yiwern5"},"content":" deadline \u003d new Deadline(\"deadline\", LocalDateTime.of(2024, 1, 1, 12, 0));","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"yiwern5"},"content":" public void todoTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"yiwern5"},"content":" String expectedToString \u003d \"[T][ ] todo\";","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"yiwern5"},"content":" String actualToString \u003d todo.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(ToDo.class, todo);","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"yiwern5"},"content":" assertEquals(expectedToString, actualToString);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"yiwern5"},"content":" public void eventTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"yiwern5"},"content":" String expectedToString \u003d \"[E][ ] event (on: 01 Jan 2024 12:00AM to 12:00PM)\";","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"yiwern5"},"content":" String actualToString \u003d event.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(Event.class, event);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"yiwern5"},"content":" assertEquals(expectedToString, actualToString);","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"yiwern5"},"content":" @Test","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"yiwern5"},"content":" public void deadlineTest() {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"yiwern5"},"content":" String expectedToString \u003d \"[D][ ] deadline (by: 01 Jan 2024 12:00PM, MONDAY)\";","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"yiwern5"},"content":" String actualToString \u003d deadline.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"yiwern5"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"yiwern5"},"content":" assertInstanceOf(Deadline.class, deadline);","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"yiwern5"},"content":" assertEquals(expectedToString, actualToString);","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"yiwern5"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"yiwern5"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"yiwern5":50}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yiwern5"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yiwern5"},"content":"deadline assignment /by 06-04-2024 2359","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yiwern5"},"content":"event ST2132 exam /from 07-05-2024 1600 /to 1800","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yiwern5"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"yiwern5"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"yiwern5"},"content":"unmark 8","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"yiwern5"},"content":"event go library","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"yiwern5"},"content":"deadline","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"yiwern5"},"content":"blah","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"yiwern5"},"content":"delete 1","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"yiwern5"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"yiwern5"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"yiwern5":12}}] diff --git a/yiwern5_ip_master/commits.json b/yiwern5_ip_master/commits.json index 48399f32..823a2e3d 100644 --- a/yiwern5_ip_master/commits.json +++ b/yiwern5_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yiwern5":[{"date":"2024-01-20","commitResults":[{"hash":"f40fbbef9388f92f8a4775659a565069ec4caeca","isMergeCommit":false,"messageTitle":"Level 0 - created duke package - created Ui.java (logo, greet, exit)","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"ef2e56e7467cdf3cb97e2f1de55d09392fbaa30a","isMergeCommit":false,"messageTitle":"Level 1 - created command package - created Command.java (getCommand)","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":2}}}]},{"date":"2024-01-22","commitResults":[{"hash":"c304622c9bcaa9f011208e31f998a70ec75ab622","isMergeCommit":false,"messageTitle":"Level 2 - created Model-View-Controller Structure - Model (Task) - Controller (AddTask, ListTask, Greet, Exit, HandleUserInput) - View (AddTaskView, ListTaskView, GreetView, ExitView)","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":238,"deletions":76},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"4af8cf9ec0c363c4b429d879393fa26872eb7ad1","isMergeCommit":false,"messageTitle":"Level 2 - created Model-View-Controller Structure - Model (Task) - Controller (AddTask, ListTask, Greet, Exit, HandleUserInput) - View (AddTaskView, ListTaskView, GreetView, ExitView)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"98bbe42a848f4e46e49e637117a623be1bc533f8","isMergeCommit":false,"messageTitle":"Level 3 - Controller (MarkTask, UnmarkTask) - View (MarkTaskView, UnmarkTaskView)","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":2}}},{"hash":"a11a104b301dbb60f7404dca90ec6d8ae6150a68","isMergeCommit":false,"messageTitle":"Level 4 - Model (ToDo, Event, Deadline)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":25}}},{"hash":"7fdc5326a6b8c7d75b1cb12445ce7d6b15a40aba","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":9,"deletions":9}}},{"hash":"bee97d44d415f87767a79f6bba5ca6a354fe6c62","isMergeCommit":false,"messageTitle":"Level 5 - Model (DukeException)","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":139,"deletions":47}}},{"hash":"8cddb2d760d4090a9019d62135137db0ffcffe9c","isMergeCommit":false,"messageTitle":"Level 6 - Controller (DeleteTask) - View (DeleteTaskView)","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":72,"deletions":3}}},{"hash":"c33601b25f8b3e8375f76dad8a444afe1b553a88","isMergeCommit":false,"messageTitle":"Level 7 - Storage.java","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":34},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"afabdbeda9bce3a38668058014f10ccef0193d3b","isMergeCommit":true,"messageTitle":"Merge pull request #1 from yiwern5/branch-Level-7","messageBody":"Level 7","fileTypesAndContributionMap":{}}]},{"date":"2024-01-23","commitResults":[{"hash":"61555cabdaabc139a176c655b0042eb373597781","isMergeCommit":false,"messageTitle":"Level 8 - Date and Time for Deadline.java and Event.java","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":38,"deletions":16},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"57c2ac0221fb00ae099012ff46c08788bff715e5","isMergeCommit":true,"messageTitle":"Merge pull request #2 from yiwern5/branch-Level-8","messageBody":"Level 8","fileTypesAndContributionMap":{}},{"hash":"188d4aed158d4fa5f30eca1fcfdf758dc7390e3e","isMergeCommit":false,"messageTitle":"A-moreOOP - made all commands to be a subclass of Command.java - created Parser.java","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":124,"deletions":101}}},{"hash":"8d3615fe50e2bfe5a71dbd740566439ef192a715","isMergeCommit":false,"messageTitle":"A-Enums - used enums for command string","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":27}}},{"hash":"eba3770bb0fda73dfd771ef2da6071b4085db7d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/yiwern5/ip into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-24","commitResults":[{"hash":"e5f67f4b185edd60a3537507949bc7f3e4955fb2","isMergeCommit":false,"messageTitle":"Added checkstyle and used gradle to run for checkstyle test","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1},"java":{"insertions":127,"deletions":97}}}]},{"date":"2024-01-25","commitResults":[{"hash":"e090b43711f84a5c289b927e307d43fe3bc69ae8","isMergeCommit":false,"messageTitle":"A-Javadoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":434,"deletions":40}}},{"hash":"62a2b10f7b460c83e2dd08d89f55bf1422a2f0af","isMergeCommit":false,"messageTitle":"A-Javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"697aaddd17940ca188fdef8db9140df819d7d079","isMergeCommit":true,"messageTitle":"Merge pull request #3 from yiwern5/add-gradle-support","messageBody":"A-Gradle","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c04538ef52259fa48d20d856d185708ffeaa35ff","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":19}}},{"hash":"91867be9c0271b3c45feca9feea263a21f8a43b7","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":472,"deletions":0}}},{"hash":"1449f6568d2462d71471057d0b245ab051106fff","isMergeCommit":true,"messageTitle":"Merge pull request #4 from yiwern5/branch-A-JUnit","messageBody":"A-JUnit","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"3630e6843bb3357a4de22380576ca9c2d2946dd4","isMergeCommit":false,"messageTitle":"A-JAR","messageBody":"","tags":["A-JAR"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-29","commitResults":[{"hash":"45ca7f405c8fde0901aaae6a74681245d04b0edc","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":54}}},{"hash":"dc4a6cc9cb87aa81f9fb1b3367ba2be78c528058","isMergeCommit":false,"messageTitle":"A-CodingStandard - changed the name of the test method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":214,"deletions":16}}},{"hash":"494186bdacdeef5ecf870a71b182f0756bc1c657","isMergeCommit":false,"messageTitle":"Level-9 - Command (added FindTaskCommand) - View (added FindTaskView)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":9}}},{"hash":"5b6952c8db3ac2954d692ebd3933e2744f8ae88b","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":60}}},{"hash":"6daa9189a20103d011679716d4ab2bcbea5d9d72","isMergeCommit":true,"messageTitle":"Merge pull request #5 from yiwern5/branch-A-CodingStandard","messageBody":"A-CodingStandard","fileTypesAndContributionMap":{}},{"hash":"624dfb7579573a1f2b77bc2a70782a4d97d12a27","isMergeCommit":true,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"aa0a1b14f44399a5cb9a8ad7c603e9cf71d65a80","isMergeCommit":true,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6ef61d0c23203f786caacaa15b7793a02c51eb9b","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":2}}},{"hash":"8be93d7fad6b329980b36e847a89f52480403edf","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":7}}},{"hash":"0e65f2c5a417178c1bab7285c726a785ebd337b5","isMergeCommit":false,"messageTitle":"Minor change to Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"yiwern5":{"java":1962,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":7,"txt":12}},"authorContributionVariance":{"yiwern5":147065.0},"authorDisplayNameMap":{"yiwern5":"CS2103T-T14-1 TSUI..WERN"}} +{"authorDailyContributionsMap":{"yiwern5":[{"date":"2024-01-20","commitResults":[{"hash":"f40fbbef9388f92f8a4775659a565069ec4caeca","isMergeCommit":false,"messageTitle":"Level 0 - created duke package - created Ui.java (logo, greet, exit)","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"ef2e56e7467cdf3cb97e2f1de55d09392fbaa30a","isMergeCommit":false,"messageTitle":"Level 1 - created command package - created Command.java (getCommand)","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":2}}}]},{"date":"2024-01-22","commitResults":[{"hash":"c304622c9bcaa9f011208e31f998a70ec75ab622","isMergeCommit":false,"messageTitle":"Level 2 - created Model-View-Controller Structure - Model (Task) - Controller (AddTask, ListTask, Greet, Exit, HandleUserInput) - View (AddTaskView, ListTaskView, GreetView, ExitView)","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":238,"deletions":76},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"4af8cf9ec0c363c4b429d879393fa26872eb7ad1","isMergeCommit":false,"messageTitle":"Level 2 - created Model-View-Controller Structure - Model (Task) - Controller (AddTask, ListTask, Greet, Exit, HandleUserInput) - View (AddTaskView, ListTaskView, GreetView, ExitView)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"98bbe42a848f4e46e49e637117a623be1bc533f8","isMergeCommit":false,"messageTitle":"Level 3 - Controller (MarkTask, UnmarkTask) - View (MarkTaskView, UnmarkTaskView)","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":2}}},{"hash":"a11a104b301dbb60f7404dca90ec6d8ae6150a68","isMergeCommit":false,"messageTitle":"Level 4 - Model (ToDo, Event, Deadline)","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":111,"deletions":25}}},{"hash":"7fdc5326a6b8c7d75b1cb12445ce7d6b15a40aba","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":9,"deletions":9}}},{"hash":"bee97d44d415f87767a79f6bba5ca6a354fe6c62","isMergeCommit":false,"messageTitle":"Level 5 - Model (DukeException)","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":139,"deletions":47}}},{"hash":"8cddb2d760d4090a9019d62135137db0ffcffe9c","isMergeCommit":false,"messageTitle":"Level 6 - Controller (DeleteTask) - View (DeleteTaskView)","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":72,"deletions":3}}},{"hash":"c33601b25f8b3e8375f76dad8a444afe1b553a88","isMergeCommit":false,"messageTitle":"Level 7 - Storage.java","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":34},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"afabdbeda9bce3a38668058014f10ccef0193d3b","isMergeCommit":true,"messageTitle":"Merge pull request #1 from yiwern5/branch-Level-7","messageBody":"Level 7","fileTypesAndContributionMap":{}}]},{"date":"2024-01-23","commitResults":[{"hash":"61555cabdaabc139a176c655b0042eb373597781","isMergeCommit":false,"messageTitle":"Level 8 - Date and Time for Deadline.java and Event.java","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":38,"deletions":16},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"57c2ac0221fb00ae099012ff46c08788bff715e5","isMergeCommit":true,"messageTitle":"Merge pull request #2 from yiwern5/branch-Level-8","messageBody":"Level 8","fileTypesAndContributionMap":{}},{"hash":"188d4aed158d4fa5f30eca1fcfdf758dc7390e3e","isMergeCommit":false,"messageTitle":"A-moreOOP - made all commands to be a subclass of Command.java - created Parser.java","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":124,"deletions":101}}},{"hash":"8d3615fe50e2bfe5a71dbd740566439ef192a715","isMergeCommit":false,"messageTitle":"A-Enums - used enums for command string","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":27}}},{"hash":"eba3770bb0fda73dfd771ef2da6071b4085db7d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/yiwern5/ip into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-24","commitResults":[{"hash":"e5f67f4b185edd60a3537507949bc7f3e4955fb2","isMergeCommit":false,"messageTitle":"Added checkstyle and used gradle to run for checkstyle test","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1},"java":{"insertions":127,"deletions":97}}}]},{"date":"2024-01-25","commitResults":[{"hash":"e090b43711f84a5c289b927e307d43fe3bc69ae8","isMergeCommit":false,"messageTitle":"A-Javadoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":434,"deletions":40}}},{"hash":"62a2b10f7b460c83e2dd08d89f55bf1422a2f0af","isMergeCommit":false,"messageTitle":"A-Javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"697aaddd17940ca188fdef8db9140df819d7d079","isMergeCommit":true,"messageTitle":"Merge pull request #3 from yiwern5/add-gradle-support","messageBody":"A-Gradle","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c04538ef52259fa48d20d856d185708ffeaa35ff","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":19}}},{"hash":"91867be9c0271b3c45feca9feea263a21f8a43b7","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":472,"deletions":0}}},{"hash":"1449f6568d2462d71471057d0b245ab051106fff","isMergeCommit":true,"messageTitle":"Merge pull request #4 from yiwern5/branch-A-JUnit","messageBody":"A-JUnit","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"3630e6843bb3357a4de22380576ca9c2d2946dd4","isMergeCommit":false,"messageTitle":"A-JAR","messageBody":"","tags":["A-JAR"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-29","commitResults":[{"hash":"45ca7f405c8fde0901aaae6a74681245d04b0edc","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":54}}},{"hash":"dc4a6cc9cb87aa81f9fb1b3367ba2be78c528058","isMergeCommit":false,"messageTitle":"A-CodingStandard - changed the name of the test method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":214,"deletions":16}}},{"hash":"494186bdacdeef5ecf870a71b182f0756bc1c657","isMergeCommit":false,"messageTitle":"Level-9 - Command (added FindTaskCommand) - View (added FindTaskView)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":9}}},{"hash":"5b6952c8db3ac2954d692ebd3933e2744f8ae88b","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":60}}},{"hash":"6daa9189a20103d011679716d4ab2bcbea5d9d72","isMergeCommit":true,"messageTitle":"Merge pull request #5 from yiwern5/branch-A-CodingStandard","messageBody":"A-CodingStandard","fileTypesAndContributionMap":{}},{"hash":"624dfb7579573a1f2b77bc2a70782a4d97d12a27","isMergeCommit":true,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"aa0a1b14f44399a5cb9a8ad7c603e9cf71d65a80","isMergeCommit":true,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6ef61d0c23203f786caacaa15b7793a02c51eb9b","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":2}}},{"hash":"8be93d7fad6b329980b36e847a89f52480403edf","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":7}}},{"hash":"0e65f2c5a417178c1bab7285c726a785ebd337b5","isMergeCommit":false,"messageTitle":"Minor change to Task.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"192c3287ca3380e3af493ceada6351165fe2adba","isMergeCommit":false,"messageTitle":"A-CheckStyle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}},{"hash":"38d35139d252e0707a7c7d74db057b4e83db0763","isMergeCommit":true,"messageTitle":"Merge pull request #6 from yiwern5/branch-A-CheckStyle","messageBody":"A-CheckStyle","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yiwern5":{"java":1969,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":7,"txt":12}},"authorContributionVariance":{"yiwern5":141274.25},"authorDisplayNameMap":{"yiwern5":"CS2103T-T14-1 TSUI..WERN"}} diff --git a/yongkotaro_ip_master/commits.json b/yongkotaro_ip_master/commits.json index b2cf74ac..ec20861b 100644 --- a/yongkotaro_ip_master/commits.json +++ b/yongkotaro_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yongkotaro":[{"date":"2024-01-24","commitResults":[{"hash":"5d239c8c47c230b24b9c6dc0d1d8c132a13f6d10","isMergeCommit":false,"messageTitle":"Allow users to mark and unmark tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"d76887511965729a74112ded8af3d408189bb38c","isMergeCommit":false,"messageTitle":"Allow users to mark and unmark tasks.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":6}}},{"hash":"6d14b7376c0ac19ee8fcbf6a4f9f62748f36652c","isMergeCommit":false,"messageTitle":"Allow users to define what type of task they want.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"3b5df259fd63f89ba7507c5589fffa09228435f2","isMergeCommit":false,"messageTitle":"Allow users to define the tasks they want.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":5}}},{"hash":"3fc28d176d1d972df76b25cee88451d39c1a19cb","isMergeCommit":false,"messageTitle":"Handling errors for user misinputs.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":92,"deletions":31}}},{"hash":"08cdcc47c63b365f5cf8241183ae0bc429bb7a91","isMergeCommit":false,"messageTitle":"Can delete tasks from the list.","messageBody":"","tags":["Level-6","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"yongkotaro":{"java":182,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"yongkotaro":9753.472},"authorDisplayNameMap":{"yongkotaro":"CS2103T-T11-4 YONG..TARO"}} +{"authorDailyContributionsMap":{"yongkotaro":[{"date":"2024-01-24","commitResults":[{"hash":"5d239c8c47c230b24b9c6dc0d1d8c132a13f6d10","isMergeCommit":false,"messageTitle":"Allow users to mark and unmark tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"d76887511965729a74112ded8af3d408189bb38c","isMergeCommit":false,"messageTitle":"Allow users to mark and unmark tasks.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":6}}},{"hash":"6d14b7376c0ac19ee8fcbf6a4f9f62748f36652c","isMergeCommit":false,"messageTitle":"Allow users to define what type of task they want.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"3b5df259fd63f89ba7507c5589fffa09228435f2","isMergeCommit":false,"messageTitle":"Allow users to define the tasks they want.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":5}}},{"hash":"3fc28d176d1d972df76b25cee88451d39c1a19cb","isMergeCommit":false,"messageTitle":"Handling errors for user misinputs.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":92,"deletions":31}}},{"hash":"08cdcc47c63b365f5cf8241183ae0bc429bb7a91","isMergeCommit":false,"messageTitle":"Can delete tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"yongkotaro":{"java":182,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"yongkotaro":9753.472},"authorDisplayNameMap":{"yongkotaro":"CS2103T-T11-4 YONG..TARO"}} diff --git a/yorklim_ip_master/authorship.json b/yorklim_ip_master/authorship.json index fa54f093..d33e31bd 100644 --- a/yorklim_ip_master/authorship.json +++ b/yorklim_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class Deadlines extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" private Task task;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" private String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" public Deadlines(String name, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" super(name);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" public void taskInfo() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" System.out.print(\"[D]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" super.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" System.out.println(\" (by: \" + by + \")\");","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":15}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"import java.sql.SQLOutput;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" private String name \u003d \"NotDuke\";","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" private void greet() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Hello! I\u0027m \" + name);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" private void input() {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" String rawInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" String[] input \u003d rawInput.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" String command \u003d input[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" list();","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" unmark(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" mark(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"todo\") || command.equals(\"deadline\") || command.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" add(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" delete(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidCommand(rawInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" private void add(String[] input) throws DukeMissingArgument{","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" Task task;","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" String command \u003d input[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" task \u003d new ToDos(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1,command);","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" String[] values \u003d input[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" task \u003d new Deadlines(values[0], values[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(2,command);","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" String[] event \u003d input[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" String[] time \u003d event[1].split(\" /to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":" task \u003d new Events(event[0], time[0], time[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(3, command);","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"yorklim"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"yorklim"},"content":" list.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"yorklim"},"content":" int length \u003d list.size();","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"yorklim"},"content":" task.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"yorklim"},"content":" liststatus();","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"yorklim"},"content":" private void list() {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"yorklim"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"yorklim"},"content":" System.out.println(\"The list is empty\");","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"yorklim"},"content":" int index \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"yorklim"},"content":" for (Task item : list) {","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"yorklim"},"content":" System.out.print(++index + \".\");","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"yorklim"},"content":" item.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"yorklim"},"content":" private void liststatus() {","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"yorklim"},"content":" int length \u003d list.size();","lastModifiedDate":"2024-01-23"},{"lineNumber":93,"author":{"gitId":"yorklim"},"content":" System.out.print(\"Now you have \" + length + \" task\");","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"yorklim"},"content":" if (length \u003e 1) {System.out.print(\"s\");}","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"yorklim"},"content":" System.out.println(\" in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"yorklim"},"content":" private void mark(String[] input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"yorklim"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"yorklim"},"content":" task.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":103,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, input[0]);","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":105,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":107,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"yorklim"},"content":" private void unmark(String[] input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"yorklim"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"yorklim"},"content":" task.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, input[0]);","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"yorklim"},"content":" private void delete(String[] input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"yorklim"},"content":" Task removed \u003d list.remove(index - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"yorklim"},"content":" removed.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"yorklim"},"content":" liststatus();","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, \"mark\");","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"yorklim"},"content":" private void exit() {","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":148,"author":{"gitId":"yorklim"},"content":" Duke bot \u003d new Duke();","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"yorklim"},"content":" bot.greet();","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"yorklim"},"content":" bot.input();","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"yorklim"},"content":" bot.exit();","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":154,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":150,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"import java.lang.Exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" public DukeException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" return \"Huh?!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":9}},{"path":"src/main/java/DukeInvalidArgument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidArgument extends DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s The argument(s) you entered are invalid!\", super.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":6}},{"path":"src/main/java/DukeInvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidCommand extends DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" String command;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" public DukeInvalidCommand(String command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s This is not a valid command: \\\"\"+command+\"\\\"\", super.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":10}},{"path":"src/main/java/DukeMissingArgument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class DukeMissingArgument extends DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" private int need;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" private String command;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public DukeMissingArgument(int need, String command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" this.need \u003d need;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s There are missing argument(s), %d argument(s) is needed for %s\"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" ,super.toString(), need, command);","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":14}},{"path":"src/main/java/DukeTaskNotFound.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class DukeTaskNotFound extends DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" int index;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" public DukeTaskNotFound(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s Task No. %d cannot be found!\",super.toString(), this.index);","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":11}},{"path":"src/main/java/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class Events extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" private Task task;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" private String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" private String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public Events(String name, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" super(name);","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" public void taskInfo() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" System.out.print(\"[E]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" super.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" System.out.println(\" (from: \" + from + \" to: \" + to + \")\");","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":18}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" protected String name;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" protected boolean status;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" this.status \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" public void taskInfo() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" if (status) {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" System.out.print(\"[X]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" System.out.print(\"[ ]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" System.out.print(\" \" + name);","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" this.status \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" this.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" this.status \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" this.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":30}},{"path":"src/main/java/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class ToDos extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" private Task task;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" public ToDos(String name) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" super(name);","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" public void taskInfo() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" System.out.print(\"[T]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" super.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" System.out.println();","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":2}},{"path":"text-ui-test/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"Hello! I\u0027m NotDuke","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"What can I do for you?","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"[T][ ] read book","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"Now you have 1 task in the list.","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"Bye. Hope to see you again soon!","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":6}}] +[{"path":"src/main/java/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"public class Deadlines extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" private Task task;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" public Deadlines(String name, LocalDateTime by, Boolean status) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" super(name, status);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" public void happenOn(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" if (date.isEqual(by.toLocalDate())) {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" this.taskInfo();","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" public String saveOutput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" return \"D \" + super.saveOutput() + String.format(\" | %s\", by);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" public void taskInfo() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" System.out.print(\"[D]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" super.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" System.out.println(\" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HHmm\")) + \"hrs )\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":30}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" private String name \u003d \"NotDuke\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" private void greet() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Hello! I\u0027m \" + name);","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" private void load() {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" File f \u003d new File(\"./data/tasks.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" Scanner readFile \u003d new Scanner(f);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" while (readFile.hasNextLine()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" String line \u003d readFile.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" String[] inputs \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" Boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" if (inputs[1].equals(\"0\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" switch (inputs[0]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" case \"T\":","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" Task todo \u003d new ToDos(inputs[2], isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" list.add(todo);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" case \"D\":","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" Task deadline \u003d new Deadlines(inputs[2], LocalDateTime.parse(inputs[3]), isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" list.add(deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" case \"E\":","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" String[] time \u003d inputs[3].split(\"/\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" Task event \u003d new Events(inputs[2], LocalDateTime.parse(time[0])","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" , LocalDateTime.parse(time[1]), isDone);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" list.add(event);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" System.out.println(\"No Save History\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" private void input() {","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" String rawInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" String[] input \u003d rawInput.split(\" \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" String command \u003d input[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":" list();","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"unmark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"yorklim"},"content":" unmark(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"yorklim"},"content":" mark(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"todo\") || command.equals(\"deadline\") || command.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"yorklim"},"content":" add(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"yorklim"},"content":" delete(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"check\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"yorklim"},"content":" check(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidCommand(rawInput);","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"yorklim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"yorklim"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"yorklim"},"content":" input();","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"yorklim"},"content":" private void add(String[] input) throws DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"yorklim"},"content":" Task task;","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"yorklim"},"content":" String command \u003d input[0];","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"yorklim"},"content":" String timeFormat \u003d \"d/M/yyyy HHmm\";","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"yorklim"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"yorklim"},"content":" task \u003d new ToDos(input[1], false);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1,command);","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"yorklim"},"content":" String[] values \u003d input[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"yorklim"},"content":" LocalDateTime by \u003d LocalDateTime.parse(values[1], DateTimeFormatter.ofPattern(timeFormat));","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"yorklim"},"content":" task \u003d new Deadlines(values[0], by, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(2,command);","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"yorklim"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidDateTimeFormat(timeFormat);","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":110,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"yorklim"},"content":" String[] event \u003d input[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-23"},{"lineNumber":112,"author":{"gitId":"yorklim"},"content":" String[] time \u003d event[1].split(\" /to \");","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"yorklim"},"content":" LocalDateTime from \u003d LocalDateTime.parse(time[0], DateTimeFormatter.ofPattern(timeFormat));","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"yorklim"},"content":" LocalDateTime to \u003d LocalDateTime.parse(time[1], DateTimeFormatter.ofPattern(timeFormat));","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"yorklim"},"content":" task \u003d new Events(event[0], from, to, false);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(3, command);","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"yorklim"},"content":" return;","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"yorklim"},"content":" list.add(task);","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"yorklim"},"content":" int length \u003d list.size();","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"yorklim"},"content":" task.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"yorklim"},"content":" liststatus();","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":131,"author":{"gitId":"yorklim"},"content":" private void list() {","lastModifiedDate":"2024-01-23"},{"lineNumber":132,"author":{"gitId":"yorklim"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-23"},{"lineNumber":133,"author":{"gitId":"yorklim"},"content":" System.out.println(\"The list is empty\");","lastModifiedDate":"2024-01-23"},{"lineNumber":134,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":135,"author":{"gitId":"yorklim"},"content":" int index \u003d 0;","lastModifiedDate":"2024-01-23"},{"lineNumber":136,"author":{"gitId":"yorklim"},"content":" for (Task item : list) {","lastModifiedDate":"2024-01-23"},{"lineNumber":137,"author":{"gitId":"yorklim"},"content":" System.out.print(++index + \".\");","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"yorklim"},"content":" item.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":139,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":140,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":141,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":142,"author":{"gitId":"yorklim"},"content":" private void liststatus() {","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"yorklim"},"content":" int length \u003d list.size();","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"yorklim"},"content":" System.out.print(\"Now you have \" + length + \" task\");","lastModifiedDate":"2024-01-23"},{"lineNumber":145,"author":{"gitId":"yorklim"},"content":" if (length \u003e 1) {System.out.print(\"s\");}","lastModifiedDate":"2024-01-23"},{"lineNumber":146,"author":{"gitId":"yorklim"},"content":" System.out.println(\" in the list.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"yorklim"},"content":" private void mark(String[] input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":149,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":150,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":151,"author":{"gitId":"yorklim"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":152,"author":{"gitId":"yorklim"},"content":" task.mark();","lastModifiedDate":"2024-01-23"},{"lineNumber":153,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":154,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, input[0]);","lastModifiedDate":"2024-01-23"},{"lineNumber":155,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":156,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":158,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":161,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":162,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":163,"author":{"gitId":"yorklim"},"content":" private void unmark(String[] input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"yorklim"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"yorklim"},"content":" task.unmark();","lastModifiedDate":"2024-01-23"},{"lineNumber":168,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":169,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, input[0]);","lastModifiedDate":"2024-01-23"},{"lineNumber":170,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":171,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":172,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":173,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":175,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":176,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":177,"author":{"gitId":"yorklim"},"content":" private void delete(String[] input) throws DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":178,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":179,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":180,"author":{"gitId":"yorklim"},"content":" Task removed \u003d list.remove(index - 1);","lastModifiedDate":"2024-01-23"},{"lineNumber":181,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":182,"author":{"gitId":"yorklim"},"content":" removed.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":183,"author":{"gitId":"yorklim"},"content":" liststatus();","lastModifiedDate":"2024-01-23"},{"lineNumber":184,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e1) {","lastModifiedDate":"2024-01-23"},{"lineNumber":185,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, \"mark\");","lastModifiedDate":"2024-01-23"},{"lineNumber":186,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e2) {","lastModifiedDate":"2024-01-23"},{"lineNumber":187,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument();","lastModifiedDate":"2024-01-23"},{"lineNumber":188,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-01-23"},{"lineNumber":189,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(input[1]);","lastModifiedDate":"2024-01-23"},{"lineNumber":190,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":191,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":192,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":194,"author":{"gitId":"yorklim"},"content":" private void check(String[] input) throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"author":{"gitId":"yorklim"},"content":" LocalDate date \u003d LocalDate.parse(input[1], DateTimeFormatter.ofPattern(\"d/M/yyyy\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"yorklim"},"content":" System.out.println(String.format(\"Tasks on %s:\", input[1]));","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"yorklim"},"content":" for (Task item : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"yorklim"},"content":" item.happenOn(date);","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"yorklim"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"yorklim"},"content":" System.out.println(e1);","lastModifiedDate":"2024-01-30"},{"lineNumber":204,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidDateTimeFormat(\"d/M/yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, input[0]);","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":208,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"yorklim"},"content":" private void save() {","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":212,"author":{"gitId":"yorklim"},"content":" File savefile \u003d new File(\"./data/tasks.txt\");","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"yorklim"},"content":" savefile.getParentFile().mkdirs();","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"yorklim"},"content":" FileWriter fw \u003d new FileWriter(savefile);","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"yorklim"},"content":" for (Task t : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"yorklim"},"content":" fw.write(t.saveOutput());","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"yorklim"},"content":" fw.write(System.lineSeparator());","lastModifiedDate":"2024-01-30"},{"lineNumber":218,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":219,"author":{"gitId":"yorklim"},"content":" fw.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"yorklim"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Unable to Save\");","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":223,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":226,"author":{"gitId":"yorklim"},"content":" private void exit() {","lastModifiedDate":"2024-01-23"},{"lineNumber":227,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":228,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":230,"author":{"gitId":"yorklim"},"content":" Duke bot \u003d new Duke();","lastModifiedDate":"2024-01-23"},{"lineNumber":231,"author":{"gitId":"yorklim"},"content":" bot.greet();","lastModifiedDate":"2024-01-23"},{"lineNumber":232,"author":{"gitId":"yorklim"},"content":" bot.load();","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"yorklim"},"content":" bot.input();","lastModifiedDate":"2024-01-23"},{"lineNumber":234,"author":{"gitId":"yorklim"},"content":" bot.save();","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"yorklim"},"content":" bot.exit();","lastModifiedDate":"2024-01-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":238,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":234,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"import java.lang.Exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" public DukeException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" return \"Huh?!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":9}},{"path":"src/main/java/DukeInvalidArgument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidArgument extends DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s The argument(s) you entered are invalid!\", super.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":6}},{"path":"src/main/java/DukeInvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidCommand extends DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" String command;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" public DukeInvalidCommand(String command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s This is not a valid command: \\\"\"+command+\"\\\"\", super.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":10}},{"path":"src/main/java/DukeInvalidDateTimeFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidDateTimeFormat extends DukeException{","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" String timeFormat;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" public DukeInvalidDateTimeFormat(String timeFormat) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" super();","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" this.timeFormat \u003d timeFormat;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s Date - Time Format is wrong! Please Follow format: %s\", super.toString(), timeFormat);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yorklim":11}},{"path":"src/main/java/DukeMissingArgument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class DukeMissingArgument extends DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" private int need;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" private String command;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public DukeMissingArgument(int need, String command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" this.need \u003d need;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s There are missing argument(s), %d argument(s) is needed for %s\"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" ,super.toString(), need, command);","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":14}},{"path":"src/main/java/DukeTaskNotFound.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class DukeTaskNotFound extends DukeException{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" int index;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" public DukeTaskNotFound(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s Task No. %d cannot be found!\",super.toString(), this.index);","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":11}},{"path":"src/main/java/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"public class Events extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" private Task task;","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" public Events(String name, LocalDateTime from, LocalDateTime to, Boolean status) {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" super(name, status);","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" public void happenOn(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" if ((date.isAfter(from.toLocalDate()) \u0026\u0026 date.isBefore(to.toLocalDate()))","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" || date.isEqual(from.toLocalDate()) || date.isEqual(to.toLocalDate())) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" taskInfo();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" public String saveOutput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" return \"E \" + super.saveOutput() + String.format(\" | %s/%s\", from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" public void taskInfo() {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" System.out.print(\"[E]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" super.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" System.out.println(\" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HHmm\")) + \"hrs to: \"","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HHmm\")) + \")\");","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":36}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" protected String name;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" public Task(String name, Boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" public String saveOutput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" return String.format(\"| %d | %s\", isDone ? 1 : 0, name);","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" public void happenOn(LocalDate date) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" public void taskInfo() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" System.out.print(\"[X]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" System.out.print(\"[ ]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" System.out.print(\" \" + name);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" this.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" this.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":40}},{"path":"src/main/java/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"public class ToDos extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":" private Task task;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":" public ToDos(String name, Boolean status) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" super(name, status);","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" public String saveOutput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" return \"T \"+ super.saveOutput();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" public void taskInfo() {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" System.out.print(\"[T]\");","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" super.taskInfo();","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" System.out.println();","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":20}},{"path":"src/main/java/data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"D | 0 | a | 2007-12-03T10:15","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"E | 0 | a | 2007-12-03T10:15/2007-12-03T10:15","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yorklim":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"todo read book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":2}},{"path":"text-ui-test/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"Hello! I\u0027m NotDuke","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"What can I do for you?","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"[T][ ] read book","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"Now you have 1 task in the list.","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"Bye. Hope to see you again soon!","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":6}}] diff --git a/yorklim_ip_master/commits.json b/yorklim_ip_master/commits.json index 2f7944ba..4874c373 100644 --- a/yorklim_ip_master/commits.json +++ b/yorklim_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yorklim":[{"date":"2024-01-23","commitResults":[{"hash":"747341aa5b557aa51e175e91b9417d58af018031","isMergeCommit":false,"messageTitle":"Added Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"6e862ae31a2ae771e40f0bef1ea467e4d185d23e","isMergeCommit":false,"messageTitle":"Added Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"1faaa9d163264b62c39471f057ae8bea8f969ee6","isMergeCommit":false,"messageTitle":"Added Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":3}}},{"hash":"ca059d6f85e266ac67d720b05559084c401c0f8f","isMergeCommit":false,"messageTitle":"Added Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}},{"hash":"dd607592fd3affa7325e02121968e64e36f9499d","isMergeCommit":false,"messageTitle":"Added Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":14}}},{"hash":"dd1aadabb17206cc0dd597c614f848250f78ae01","isMergeCommit":false,"messageTitle":"Added Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":127,"deletions":39}}},{"hash":"a8412bf155422aa33a4c7881faee25e4a739fc40","isMergeCommit":false,"messageTitle":"Added Level 6. Delete","messageBody":"","tags":["Level-6","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":8},"java":{"insertions":279,"deletions":258},"bat":{"insertions":21,"deletions":21},"md":{"insertions":62,"deletions":62}}}]}]},"authorFileTypeContributionMap":{"yorklim":{"java":276,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":8}},"authorContributionVariance":{"yorklim":196426.25},"authorDisplayNameMap":{"yorklim":"CS2103T-W12-1 CHIA.. LIM"}} +{"authorDailyContributionsMap":{"yorklim":[{"date":"2024-01-23","commitResults":[{"hash":"747341aa5b557aa51e175e91b9417d58af018031","isMergeCommit":false,"messageTitle":"Added Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"6e862ae31a2ae771e40f0bef1ea467e4d185d23e","isMergeCommit":false,"messageTitle":"Added Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"1faaa9d163264b62c39471f057ae8bea8f969ee6","isMergeCommit":false,"messageTitle":"Added Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":3}}},{"hash":"ca059d6f85e266ac67d720b05559084c401c0f8f","isMergeCommit":false,"messageTitle":"Added Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":4}}},{"hash":"dd607592fd3affa7325e02121968e64e36f9499d","isMergeCommit":false,"messageTitle":"Added Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":14}}},{"hash":"dd1aadabb17206cc0dd597c614f848250f78ae01","isMergeCommit":false,"messageTitle":"Added Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":127,"deletions":39}}},{"hash":"a8412bf155422aa33a4c7881faee25e4a739fc40","isMergeCommit":false,"messageTitle":"Added Level 6. Delete","messageBody":"","tags":["Level-6","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":8},"java":{"insertions":279,"deletions":258},"bat":{"insertions":21,"deletions":21},"md":{"insertions":62,"deletions":62}}}]},{"date":"2024-01-30","commitResults":[{"hash":"884e818dcdf93112f205847cd2509d941ebad7a9","isMergeCommit":false,"messageTitle":"add Level 7. Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":90,"deletions":16}}},{"hash":"04235f2a24463debd64a86dabed950722e77643f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"72ac95ce0ecb124fe45bbd0520057438bd209f5e","isMergeCommit":false,"messageTitle":"add Level 8. Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":86,"deletions":15}}},{"hash":"d9ec24c29139c4e869880e2f7b366c813343be33","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yorklim":{"java":421,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"yorklim":94109.836},"authorDisplayNameMap":{"yorklim":"CS2103T-W12-1 CHIA.. LIM"}} diff --git a/zhekaiii_ip_master/authorship.json b/zhekaiii_ip_master/authorship.json index 56d74314..6bafe912 100644 --- a/zhekaiii_ip_master/authorship.json +++ b/zhekaiii_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"# Checkbot project template","lastModifiedDate":"2024-01-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":"zhekaiii"},"content":"3. After that, locate the `src/main/java/Checkbot.java` file, right-click it, and choose `Run Checkbot.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":"2024-01-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":{"-":22,"zhekaiii":2}},{"path":"src/main/java/Checkbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"public class Checkbot {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" public static final String INDENTATION \u003d \" \";","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" private static final String SEPARATOR \u003d INDENTATION + \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" private static Task createTask(String input) throws CheckbotException {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" Task task;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" String[] splitString \u003d input.split(\"todo|deadline|event|\\\\/(by|from|to)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" String taskName \u003d splitString.length \u003e 1 ? splitString[1].strip() : \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" if (taskName.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" task \u003d new Todo(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" Pattern pattern \u003d Pattern.compile(\"deadline (.*) /by (.*)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" String byWhen \u003d matcher.group(2).strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" if (byWhen.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" task \u003d new Deadline(taskName, byWhen);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" Pattern pattern \u003d Pattern.compile(\"event (.*) /(from|to)(.*) /(from|to)(.*)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" String firstLabel \u003d matcher.group(2);","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" String firstValue \u003d matcher.group(3).strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" String secondValue \u003d matcher.group(5).strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" String from, to;","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" if (firstLabel.equals(\"from\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" from \u003d firstValue;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" to \u003d secondValue;","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" from \u003d secondValue;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" to \u003d firstValue;","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" if (from.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" throw new MissingFromException();","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" if (to.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" throw new MissingToException();","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" task \u003d new Event(taskName, from, to);","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" if (input.contains(\" /from \")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" throw new MissingToException();","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" throw new MissingFromException();","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" return task;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" TodoList todoList \u003d new TodoList();","lastModifiedDate":"2024-01-22"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" String txt \u003d SEPARATOR","lastModifiedDate":"2024-01-22"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + \"Hello, I\u0027m Checkbot, your personal assistant.\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + \"What tasks do you have to do?\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" + SEPARATOR;","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" System.out.println(txt);","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" String toPrint;","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"Goodbye!\";","lastModifiedDate":"2024-01-22"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"Here is your todo list:\\n\" + INDENTATION + todoList;","lastModifiedDate":"2024-01-22"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" int i \u003d Integer.parseInt(input.split(\"mark \")[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" todoList.markTask(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"Good job! I have marked this task as completed:\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + todoList.getTask(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(input.split(\"mark \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" int i \u003d Integer.parseInt(input.split(\"unmark \")[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" todoList.unmarkTask(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"Alright, I have marked this task as incomplete:\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + todoList.getTask(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(input.split(\"mark \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" int i \u003d Integer.parseInt(input.split(\"delete \")[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" Task deletedTask \u003d todoList.deleteTask(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"Alright, I deleted this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + INDENTATION + deletedTask + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + \"You have now \" + todoList.getLength() + \" task\" + (todoList.getLength() \u003e 1 ? \"s\" : \"\") + \" in the list.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(input.split(\"mark \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"zhekaiii"},"content":" } else if (input.startsWith(\"todo\")","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"zhekaiii"},"content":" || input.startsWith(\"deadline\")","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"zhekaiii"},"content":" || input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"zhekaiii"},"content":" Task task \u003d createTask(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"zhekaiii"},"content":" todoList.addTask(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"I have added this task to the list:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + INDENTATION + task + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + \"You have now \" + todoList.getLength() + \" task\" + (todoList.getLength() \u003e 1 ? \"s\" : \"\") + \" in the list.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidCommandException(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":" } catch (CheckbotException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d e.getMessage();","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":" txt \u003d SEPARATOR","lastModifiedDate":"2024-01-22"},{"lineNumber":127,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + toPrint + \"\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":" + SEPARATOR;","lastModifiedDate":"2024-01-22"},{"lineNumber":129,"author":{"gitId":"zhekaiii"},"content":" System.out.println(txt);","lastModifiedDate":"2024-01-22"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"zhekaiii":132}},{"path":"src/main/java/CheckbotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public abstract class CheckbotException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public CheckbotException(String err) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(err);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" private final String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" public Deadline(String name, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" return \"[D] \" + super.toString() + \" (by: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":13}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class EmptyDescriptionException extends CheckbotException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public EmptyDescriptionException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"Sorry, the description of a task cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" private final String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" private final String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" public Event(String name, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" return \"[E] \" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":15}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class InvalidCommandException extends CheckbotException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public InvalidCommandException(String cmd) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"Sorry, I\u0027m not sure what \\\"\" + cmd + \"\\\" means.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class InvalidIndexException extends CheckbotException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public InvalidIndexException(String index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"\\\"\" + index + \"\\\" is not a number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" public InvalidIndexException(int index, int length) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" super(length \u003d\u003d 0","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" ? \"Please add tasks into your list before doing that!\"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" : \"Task number \" + index","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" + \" does not exist. \"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" + (length \u003e 1","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" ? \"Only task numbers 1 - \"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" + length + \" are accepted.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" : \"You only have 1 task in your list.\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":16}},{"path":"src/main/java/MissingArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public abstract class MissingArgumentException extends CheckbotException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public MissingArgumentException(String arg) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"Sorry, the argument \\\"\" + arg + \"\\\" is missing. Please provide that by typing \\\"/\" + arg + \"\\\".\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/MissingDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class MissingDeadlineException extends MissingArgumentException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public MissingDeadlineException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/MissingFromException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class MissingFromException extends MissingArgumentException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public MissingFromException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/MissingToException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class MissingToException extends MissingArgumentException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public MissingToException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" private final String name;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" public void mark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" public void unmark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" return \"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + this.name;","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"zhekaiii":22}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public Todo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":10}},{"path":"src/main/java/TodoList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class TodoList {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" private final Task[] taskList \u003d new Task[100];","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" private int length \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" taskList[length] \u003d task;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" length++;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" public void markTask(int i) throws InvalidIndexException {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" if (i \u003c 0 || i \u003e\u003d length) {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(i + 1, length);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" taskList[i].mark();","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" public void unmarkTask(int i) throws InvalidIndexException {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" if (i \u003c 0 || i \u003e\u003d length) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(i, length);","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" taskList[i].unmark();","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public Task deleteTask(int i) throws InvalidIndexException {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" if (i \u003c 0 || i \u003e\u003d length) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(i, length);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" Task deletedTask \u003d taskList[i];","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" while (i \u003c length - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" taskList[i] \u003d taskList[i + 1];","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" i++;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" length--;","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" return deletedTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" public Task getTask(int i) {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" return taskList[i];","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" public int getLength() {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" return length;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" StringBuilder txt \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" for (int i \u003d 0; i \u003c length; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" txt.append(i \u003e 0 ? Checkbot.INDENTATION : \"\")","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" .append(i + 1)","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" .append(\". \")","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" .append(taskList[i])","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" .append(i \u003c length - 1 ? \"\\n\" : \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" return txt.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"zhekaiii":57}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"unknown","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"deadline testing","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"deadline testing /by","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"event test","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"event test /from /to","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"event test /from beginning of time /to","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"event test /from /to end of time","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"mark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"unmark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":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":"zhekaiii"},"content":"java -classpath ..\\bin Checkbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"-":20,"zhekaiii":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":"zhekaiii"},"content":"java -classpath ../bin Checkbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"zhekaiii":1}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"# Checkbot project template","lastModifiedDate":"2024-01-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":"zhekaiii"},"content":"3. After that, locate the `src/main/java/Checkbot.java` file, right-click it, and choose `Run Checkbot.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":"2024-01-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":{"-":22,"zhekaiii":2}},{"path":"src/main/java/Checkbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"public class Checkbot {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" public static final String INDENTATION \u003d \" \";","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" private static final String SEPARATOR \u003d INDENTATION + \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" public static final String TASK_FILE_DIR \u003d \"./tasks.txt\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" private static Task createTask(String input) throws CheckbotException {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" Task task;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" String[] splitString \u003d input.split(\"todo|deadline|event|\\\\/(by|from|to)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" String taskName \u003d splitString.length \u003e 1 ? splitString[1].strip() : \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" if (taskName.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" throw new EmptyDescriptionException();","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" task \u003d new Todo(taskName);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" Pattern pattern \u003d Pattern.compile(\"deadline (.*) /by (.*)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" String byWhen \u003d matcher.group(2).strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" if (byWhen.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" task \u003d new Deadline(taskName, byWhen);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" Pattern pattern \u003d Pattern.compile(\"event (.*) /(from|to)(.*) /(from|to)(.*)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" if (matcher.find()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" String firstLabel \u003d matcher.group(2);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" String firstValue \u003d matcher.group(3).strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" String secondValue \u003d matcher.group(5).strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" String from, to;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" if (firstLabel.equals(\"from\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" from \u003d firstValue;","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" to \u003d secondValue;","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" from \u003d secondValue;","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" to \u003d firstValue;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" if (from.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" throw new MissingFromException();","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" if (to.isEmpty()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" throw new MissingToException();","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" task \u003d new Event(taskName, from, to);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" if (input.contains(\" /from \")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" throw new MissingToException();","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" throw new MissingFromException();","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" return task;","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" private static TodoList loadTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" final String TASK_CODE \u003d \"T\";","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" final String DEADLINE_CODE \u003d \"D\";","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" final String EVENT_CODE \u003d \"E\";","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" File file \u003d new File(TASK_FILE_DIR);","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" TodoList todoList \u003d new TodoList();","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" Pattern pattern \u003d Pattern.compile(\"([TDE]) \\\\| ([01]) \\\\| (.*)\");","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" String text \u003d scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" Matcher matcher \u003d pattern.matcher(text);","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" if (!matcher.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" String type \u003d matcher.group(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" boolean done \u003d matcher.group(2).equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" String taskDetails \u003d matcher.group(3);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" Task t;","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" if (type.equals(TASK_CODE)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" t \u003d new Todo(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" } else if (type.equals(DEADLINE_CODE)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" Matcher deadlineMatcher \u003d Pattern.compile(\"(.*) \\\\| (.*)\").matcher(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" if (!deadlineMatcher.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" String name \u003d deadlineMatcher.group(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" String byWhen \u003d deadlineMatcher.group(2);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" t \u003d new Deadline(name, byWhen);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" Matcher eventMatcher \u003d Pattern.compile(\"(.*) \\\\| (.*) \\\\| (.*)\").matcher(taskDetails);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" if (!eventMatcher.find()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" continue;","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":" String name \u003d eventMatcher.group(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":" String from \u003d eventMatcher.group(2);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"zhekaiii"},"content":" String to \u003d eventMatcher.group(3);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"zhekaiii"},"content":" t \u003d new Event(name, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"zhekaiii"},"content":" if (done) {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"zhekaiii"},"content":" t.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"zhekaiii"},"content":" todoList.addTask(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" return todoList;","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":" return todoList;","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"zhekaiii"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":" TodoList todoList \u003d loadTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" String txt \u003d SEPARATOR","lastModifiedDate":"2024-01-22"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + \"Hello, I\u0027m Checkbot, your personal assistant.\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":132,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + \"What tasks do you have to do?\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":" + SEPARATOR;","lastModifiedDate":"2024-01-22"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" System.out.println(txt);","lastModifiedDate":"2024-01-22"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":" String input \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" while (!input.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"zhekaiii"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":140,"author":{"gitId":"zhekaiii"},"content":" String toPrint \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"zhekaiii"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"Goodbye!\";","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"Here is your todo list:\\n\" + INDENTATION + todoList;","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" int i \u003d Integer.parseInt(input.split(\"mark \")[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" todoList.markTask(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"Good job! I have marked this task as completed:\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + todoList.getTask(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" todoList.saveTo(TASK_FILE_DIR);","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(input.split(\"mark \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2024-01-22"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":" int i \u003d Integer.parseInt(input.split(\"unmark \")[1]) - 1;","lastModifiedDate":"2024-01-22"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" todoList.unmarkTask(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":160,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"Alright, I have marked this task as incomplete:\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":161,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + todoList.getTask(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":162,"author":{"gitId":"zhekaiii"},"content":" todoList.saveTo(TASK_FILE_DIR);","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"zhekaiii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(input.split(\"unmark \")[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"zhekaiii"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"zhekaiii"},"content":" int i \u003d Integer.parseInt(input.split(\"delete \")[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"zhekaiii"},"content":" Task deletedTask \u003d todoList.deleteTask(i);","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"Alright, I deleted this task:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + INDENTATION + deletedTask + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + \"You have now \" + todoList.getLength() + \" task\"","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"zhekaiii"},"content":" + (todoList.getLength() \u003e 1 ? \"s\" : \"\") + \" in the list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"zhekaiii"},"content":" todoList.saveTo(TASK_FILE_DIR);","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"zhekaiii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(input.split(\"mark \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"zhekaiii"},"content":" } else if (input.startsWith(\"todo\")","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"zhekaiii"},"content":" || input.startsWith(\"deadline\")","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"zhekaiii"},"content":" || input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"zhekaiii"},"content":" Task task \u003d createTask(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"zhekaiii"},"content":" todoList.addTask(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d \"I have added this task to the list:\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + INDENTATION + task + \"\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + \"You have now \" + todoList.getLength() + \" task\" + (todoList.getLength() \u003e 1 ? \"s\" : \"\") + \" in the list.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"zhekaiii"},"content":" todoList.saveTo(TASK_FILE_DIR);","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"zhekaiii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":188,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidCommandException(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"zhekaiii"},"content":" } catch (SaveFileException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"zhekaiii"},"content":" toPrint +\u003d \"\\n \" + INDENTATION","lastModifiedDate":"2024-01-30"},{"lineNumber":192,"author":{"gitId":"zhekaiii"},"content":" + \"However, \" + e.getMessage();","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"zhekaiii"},"content":" } catch (CheckbotException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"zhekaiii"},"content":" toPrint \u003d e.getMessage();","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":196,"author":{"gitId":"zhekaiii"},"content":" txt \u003d SEPARATOR","lastModifiedDate":"2024-01-22"},{"lineNumber":197,"author":{"gitId":"zhekaiii"},"content":" + INDENTATION + toPrint + \"\\n\"","lastModifiedDate":"2024-01-22"},{"lineNumber":198,"author":{"gitId":"zhekaiii"},"content":" + SEPARATOR;","lastModifiedDate":"2024-01-22"},{"lineNumber":199,"author":{"gitId":"zhekaiii"},"content":" System.out.println(txt);","lastModifiedDate":"2024-01-22"},{"lineNumber":200,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":201,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":202,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"zhekaiii":202}},{"path":"src/main/java/CheckbotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public abstract class CheckbotException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public CheckbotException(String err) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(err);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" private final String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" public Deadline(String name, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" return \"[D] \" + super.toString() + \" (by: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" public String formatForFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" return String.format(\"D | %s | %s\", super.formatForFile(), this.to);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":18}},{"path":"src/main/java/EmptyDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class EmptyDescriptionException extends CheckbotException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public EmptyDescriptionException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"Sorry, the description of a task cannot be empty.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" private final String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" private final String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" public Event(String name, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" return \"[E] \" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" public String formatForFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" return String.format(\"E | %s | %s | %s\", super.formatForFile(), this.from, this.to);","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":20}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class InvalidCommandException extends CheckbotException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public InvalidCommandException(String cmd) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"Sorry, I\u0027m not sure what \\\"\" + cmd + \"\\\" means.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class InvalidIndexException extends CheckbotException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public InvalidIndexException(String index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"\\\"\" + index + \"\\\" is not a number.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" public InvalidIndexException(int index, int length) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" super(length \u003d\u003d 0","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" ? \"Please add tasks into your list before doing that!\"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" : \"Task number \" + index","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" + \" does not exist. \"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" + (length \u003e 1","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" ? \"Only task numbers 1 - \"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" + length + \" are accepted.\"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" : \"You only have 1 task in your list.\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":16}},{"path":"src/main/java/InvalidTaskFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class InvalidTaskFormatException extends CheckbotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public InvalidTaskFormatException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"File does not follow the required format\");","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/MissingArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public abstract class MissingArgumentException extends CheckbotException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public MissingArgumentException(String arg) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"Sorry, the argument \\\"\" + arg + \"\\\" is missing. Please provide that by typing \\\"/\" + arg + \"\\\".\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/MissingDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class MissingDeadlineException extends MissingArgumentException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public MissingDeadlineException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/MissingFromException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class MissingFromException extends MissingArgumentException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public MissingFromException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/MissingToException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class MissingToException extends MissingArgumentException {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public MissingToException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/SaveFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class SaveFileException extends CheckbotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public SaveFileException() {","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(\"I am unable to save your todo list as a file. Your changes were not saved.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"zhekaiii":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" private final String name;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" public void mark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" public void unmark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" public String formatForFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" return String.format(\"%d | %s\", this.isDone ? 1 : 0, this.name);","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" return \"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + this.name;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"zhekaiii":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" public Todo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" public String formatForFile() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" return \"T | \" + super.formatForFile();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":15}},{"path":"src/main/java/TodoList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.io.Writer;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"public class TodoList {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" private final Task[] taskList \u003d new Task[100];","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" private int length \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" taskList[length] \u003d task;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" length++;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" public void markTask(int i) throws InvalidIndexException {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" if (i \u003c 0 || i \u003e\u003d length) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(i + 1, length);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" taskList[i].mark();","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" public void unmarkTask(int i) throws InvalidIndexException {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" if (i \u003c 0 || i \u003e\u003d length) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(i + 1, length);","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" taskList[i].unmark();","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" public Task deleteTask(int i) throws InvalidIndexException {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" if (i \u003c 0 || i \u003e\u003d length) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidIndexException(i + 1, length);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" Task deletedTask \u003d taskList[i];","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" while (i \u003c length - 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" taskList[i] \u003d taskList[i + 1];","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" i++;","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" length--;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" return deletedTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" public Task getTask(int i) {","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" return taskList[i];","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" public int getLength() {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" return length;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" StringBuilder txt \u003d new StringBuilder();","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" for (int i \u003d 0; i \u003c length; i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" txt.append(i \u003e 0 ? Checkbot.INDENTATION : \"\")","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" .append(i + 1)","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" .append(\". \")","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" .append(taskList[i])","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" .append(i \u003c length - 1 ? \"\\n\" : \"\");","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" return txt.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" public void saveTo(String dir) throws SaveFileException {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" StringBuilder txt \u003d new StringBuilder();","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" for (int i \u003d 0; i \u003c this.length; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" txt.append(taskList[i].formatForFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" if (i \u003c this.length - 1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" txt.append(\"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" Writer writer \u003d new FileWriter(dir);","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" writer.write(txt.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" writer.close();","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" throw new SaveFileException();","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"zhekaiii":78}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"unknown","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"deadline testing","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"deadline testing /by","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"event test","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"event test /from /to","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"event test /from beginning of time /to","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"event test /from /to end of time","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"mark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"unmark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"delete 3","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"delete 1","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"zhekaiii":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":"zhekaiii"},"content":"java -classpath ..\\bin Checkbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"-":20,"zhekaiii":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":"zhekaiii"},"content":"java -classpath ../bin Checkbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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,"zhekaiii":1}}] diff --git a/zhekaiii_ip_master/commits.json b/zhekaiii_ip_master/commits.json index 294fb546..050d88e0 100644 --- a/zhekaiii_ip_master/commits.json +++ b/zhekaiii_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"zhekaiii":[{"date":"2024-01-22","commitResults":[{"hash":"55e6c2514649bfadf8d48e9cbcdf1bee0a61c49c","isMergeCommit":false,"messageTitle":"renamed Duke to Checkbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"dc83f5a3bb61fb69ec0adf3f1f5a8d97a45f4310","isMergeCommit":false,"messageTitle":"add echo function to Checkbot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":7}}},{"hash":"518a2351473d2c54f1b0c39999bcc015c4ce2b84","isMergeCommit":false,"messageTitle":"add function to add new tasks and list out todo list to Checkbot","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":6}}},{"hash":"ce5a5f5b2a0202547ea385be96debc033d801708","isMergeCommit":false,"messageTitle":"add mark and unmark task functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}}]},{"date":"2024-01-24","commitResults":[{"hash":"a2edf36bde476a55e965235b7770a2574dfb1a07","isMergeCommit":false,"messageTitle":"add different types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":5}}},{"hash":"1b74ce4191dd1c86e9933c9d3d3cc3586e98649a","isMergeCommit":false,"messageTitle":"add automated text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"d0401b038aa487cc3dbf66001b3214d4ba05378b","isMergeCommit":false,"messageTitle":"add exception handling for invalid inputs and update text ui test","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":150,"deletions":33}}},{"hash":"8c5b5edb72e15670ac9feb91551cb992608cae3a","isMergeCommit":false,"messageTitle":"add delete functionality to Checkbot and update test cases","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":30,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"zhekaiii":{"java":300,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":21}},"authorContributionVariance":{"zhekaiii":14170.138},"authorDisplayNameMap":{"zhekaiii":"CS2103T-T16-2 LIM ..EKAI"}} +{"authorDailyContributionsMap":{"zhekaiii":[{"date":"2024-01-22","commitResults":[{"hash":"55e6c2514649bfadf8d48e9cbcdf1bee0a61c49c","isMergeCommit":false,"messageTitle":"renamed Duke to Checkbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"dc83f5a3bb61fb69ec0adf3f1f5a8d97a45f4310","isMergeCommit":false,"messageTitle":"add echo function to Checkbot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":7}}},{"hash":"518a2351473d2c54f1b0c39999bcc015c4ce2b84","isMergeCommit":false,"messageTitle":"add function to add new tasks and list out todo list to Checkbot","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":6}}},{"hash":"ce5a5f5b2a0202547ea385be96debc033d801708","isMergeCommit":false,"messageTitle":"add mark and unmark task functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":6}}}]},{"date":"2024-01-24","commitResults":[{"hash":"a2edf36bde476a55e965235b7770a2574dfb1a07","isMergeCommit":false,"messageTitle":"add different types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":5}}},{"hash":"1b74ce4191dd1c86e9933c9d3d3cc3586e98649a","isMergeCommit":false,"messageTitle":"add automated text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"d0401b038aa487cc3dbf66001b3214d4ba05378b","isMergeCommit":false,"messageTitle":"add exception handling for invalid inputs and update text ui test","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":150,"deletions":33}}},{"hash":"8c5b5edb72e15670ac9feb91551cb992608cae3a","isMergeCommit":false,"messageTitle":"add delete functionality to Checkbot and update test cases","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":30,"deletions":6}}}]},{"date":"2024-01-30","commitResults":[{"hash":"6471236453bc53c25a2e504b7eafe807f026ffc5","isMergeCommit":false,"messageTitle":"Add functionality to save tasks in a txt file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":129,"deletions":9}}}]}]},"authorFileTypeContributionMap":{"zhekaiii":{"java":420,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":22}},"authorContributionVariance":{"zhekaiii":9173.917},"authorDisplayNameMap":{"zhekaiii":"CS2103T-T16-2 LIM ..EKAI"}} diff --git a/zhenghuil_ip_master/authorship.json b/zhenghuil_ip_master/authorship.json new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/zhenghuil_ip_master/authorship.json @@ -0,0 +1 @@ +[] diff --git a/zhenghuil_ip_master/commits.json b/zhenghuil_ip_master/commits.json new file mode 100644 index 00000000..a5f0d68d --- /dev/null +++ b/zhenghuil_ip_master/commits.json @@ -0,0 +1 @@ +{"authorDailyContributionsMap":{"zhenghuil":[]},"authorFileTypeContributionMap":{"zhenghuil":{"java":0,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"zhenghuil":0.0},"authorDisplayNameMap":{"zhenghuil":"CS2103T-W11-3 LOW .. HUI"}} diff --git a/ziiqii_ip_master/authorship.json b/ziiqii_ip_master/authorship.json index 525c5e1a..8c2b3285 100644 --- a/ziiqii_ip_master/authorship.json +++ b/ziiqii_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/taskData.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"D,0,do homework,2024-01-29","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"E,0,holiday,2024-02-10,2024-02-11","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"ziiqii":2}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" public Deadline(String isDone, String description, LocalDate by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" public String getBy() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" return by.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" String info \u003d String.format(\"(by: %s)\", by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" return String.format(\"[D]%s%s %s\", this.getStatusIcon(), super.toString(), info);","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"ziiqii":26}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" private LocalDate start;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":" private LocalDate end;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" public Event(String isDone, String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" public String getStart() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" return this.start.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" return this.end.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" String info \u003d String.format(\"(from: %s to: %s)\",","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")),","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" return String.format(\"[E]%s%s %s\", this.getStatusIcon(), super.toString(), info);","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"ziiqii":35}},{"path":"src/main/java/FileManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"import java.io.File;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"public class FileManager {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":" // Load data on startup","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" // If data file not found, create one","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" // TODO: read data line by line","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" // TODO: for each line, ask Storage to loadTask()","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" // TODO: Storage asks Parser to parse line","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" // TODO: Task can be created to be added (with mark info too)","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" public static void loadTasks() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" File f \u003d new File(\"data/taskData.txt\");","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" try (Scanner s \u003d new Scanner(f)) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" Storage.loadTask(s.nextLine());","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" } catch (FileNotFoundException eFNF) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" boolean isCreated \u003d f.createNewFile();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" if (isCreated) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"File not found, I created one for you!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" } catch (IOException eIO) {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"IO error occurred when creating file.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" // Rewrite file using data in Storage","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":" public static void updateTasks() {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":" try (FileWriter fw \u003d new FileWriter(\"data/taskData.txt\")){","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"ziiqii"},"content":" for (Task t : Storage.getTasks()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"ziiqii"},"content":" fw.write(Parser.parseTaskToCsv(t) + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"ziiqii"},"content":"// System.out.println(\"Update success\");","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"ziiqii"},"content":" } catch (IOException eIO) {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"IO error occurred while updating.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"ziiqii":44}},{"path":"src/main/java/MarkType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"public enum MarkType {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":" MARK, UNMARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":3}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"// Takes in user input","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"// Analyses input using regex","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"// Stores information on the input in the storage","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"public class Parser {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" private static Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" public static void parse() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" // trim removes leading and trailing whitespaces","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" Storage.input \u003d (sc.nextLine().trim());","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" // whitespace regex is //s, the + means whitespace of any length","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" Storage.words \u003d Storage.input.split(\"\\\\s+\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" public static void parseToDo(String input) throws UkeCatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" // Regex pattern: todo + whitespaces + any chars","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" Pattern pattern \u003d Pattern.compile(\"^todo\\\\s+(.+)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" if (matcher.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" Storage.desc \u003d matcher.group(1); // store first capturing group","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: todo \u003cdesc\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" public static void parseDeadline(String input) throws UkeCatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" // Regex pattern: deadline + spaces + chars + spaces + /by + spaces + chars","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":" Pattern pattern \u003d Pattern.compile(\"^deadline\\\\s+(.+)\\\\s+/by\\\\s+(.+)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ziiqii"},"content":" if (matcher.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ziiqii"},"content":" Storage.desc \u003d matcher.group(1);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ziiqii"},"content":" Storage.by \u003d LocalDate.parse(matcher.group(2));","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"ziiqii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format1, use: deadline \u003cdesc\u003e /by yyyy-mm-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ziiqii"},"content":" public static void parseEvent(String input) throws UkeCatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ziiqii"},"content":" // Regex pattern: event + spaces + chars + spaces +","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ziiqii"},"content":" // /from + spaces + chars + spaces + /to + spaces + chars","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ziiqii"},"content":" Pattern pattern \u003d Pattern.compile(\"^event\\\\s+(.+)\\\\s+/from\\\\s+(.+)\\\\s+/to\\\\s+(.+)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ziiqii"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ziiqii"},"content":" if (matcher.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ziiqii"},"content":" Storage.desc \u003d matcher.group(1);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ziiqii"},"content":" Storage.start \u003d LocalDate.parse(matcher.group(2));","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"ziiqii"},"content":" Storage.end \u003d LocalDate.parse(matcher.group(3));","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"ziiqii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: event \u003cdesc\u003e /from yyyy-mm-dd /to yyyy-mm-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ziiqii"},"content":" public static int parseDeleteTask(String[] words) throws UkeCatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ziiqii"},"content":" try{","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ziiqii"},"content":" if (words.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ziiqii"},"content":" return Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ziiqii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: mark / unmark \u003ctask#\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ziiqii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: mark / unmark \u003ctask#\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ziiqii"},"content":" public static int parseMarkTask(String[] words) throws UkeCatException{","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ziiqii"},"content":" if (words.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ziiqii"},"content":" return Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ziiqii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: mark / unmark \u003ctask#\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ziiqii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: mark / unmark \u003ctask#\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ziiqii"},"content":" // ToDo: T, 0/1, desc","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"ziiqii"},"content":" // Deadline: D, 0/1, desc, by","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"ziiqii"},"content":" // Event: E, 0/1, desc, from, to","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"ziiqii"},"content":" public static String parseTaskToCsv(Task t) {","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"ziiqii"},"content":" if (t instanceof ToDo) {","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"ziiqii"},"content":" return String.format(\"T,%d,%s\", t.getIntIsDone(), t.getDescription());","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"ziiqii"},"content":" } else if (t instanceof Deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"ziiqii"},"content":" Deadline x \u003d (Deadline) t;","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"ziiqii"},"content":" return String.format(\"D,%d,%s,%s\", t.getIntIsDone(), t.getDescription(), x.getBy());","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"ziiqii"},"content":" } else { // instanceof Event","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"ziiqii"},"content":" Event x \u003d (Event) t;","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"ziiqii"},"content":" return String.format(\"E,%d,%s,%s,%s\", t.getIntIsDone(), t.getDescription(),","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"ziiqii"},"content":" x.getStart(), x.getEnd());","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"ziiqii"},"content":" public static void parseCsv(String csv) {","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"ziiqii"},"content":" String[] words \u003d csv.split(\",\");","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"ziiqii"},"content":" Storage.words \u003d words;","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"ziiqii"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"ziiqii"},"content":" case (\"T\"):","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"ziiqii"},"content":" Storage.words[0] \u003d \"todo\";","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"ziiqii"},"content":" Storage.input \u003d String.format(\"todo %s\", words[2]);","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"ziiqii"},"content":" parseToDo(Storage.input);","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"ziiqii"},"content":" case (\"D\"):","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"ziiqii"},"content":" Storage.words[0] \u003d \"deadline\";","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"ziiqii"},"content":" Storage.input \u003d String.format(\"deadline %s /by %s\", words[2], words[3]);","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"ziiqii"},"content":" parseDeadline(Storage.input);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"ziiqii"},"content":" case (\"E\"):","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"ziiqii"},"content":" Storage.words[0] \u003d \"event\";","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"ziiqii"},"content":" Storage.input \u003d String.format(\"event %s /from %s /to %s\", words[2], words[3], words[4]);","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"ziiqii"},"content":" parseEvent(Storage.input);","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"ziiqii"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"Can\u0027t read csv, file corrupted, abort!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"ziiqii"},"content":" System.exit(-1);","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"ziiqii"},"content":" } catch (UkeCatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"ziiqii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"ziiqii"},"content":" public static void closeScanner() {","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"ziiqii"},"content":" sc.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":131}},{"path":"src/main/java/Responder.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"// Based on the parsed input, generate a response","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"public class Responder {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":" public static void respond(String[] words) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":" switch(words[0]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" case \"hi\":","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":" System.out.println(Storage.HI);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" Storage.printTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" Storage.markTask(MarkType.MARK);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" Storage.markTask(MarkType.UNMARK);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" Storage.deleteTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" Storage.addTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" I don\u0027t understand! Try adding a task!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":29}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"// Holds information to be used conveniently","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"// Contains:","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"// Parsed user input","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"// Array to hold tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"// Default replies","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"public class Storage {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" // Storage from input","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" public static String input; // user input","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" public static String[] words; // split words using","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" public static String desc; // for any task","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" public static LocalDate by; // for deadlines","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" public static LocalDate start; // for events","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" public static LocalDate end; // for events","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" // Tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" private static final ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" private static int numT \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" public static ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" return tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" public static void addTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" Task t \u003d new Task();","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" try{","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" Parser.parseToDo(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" t \u003d new ToDo(desc);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ziiqii"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ziiqii"},"content":" Parser.parseDeadline(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ziiqii"},"content":" t \u003d new Deadline(desc, by);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ziiqii"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ziiqii"},"content":" Parser.parseEvent(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ziiqii"},"content":" t \u003d new Event(desc, start, end);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ziiqii"},"content":" numT++;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" I added this task: \" + t);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ziiqii"},"content":" report();","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ziiqii"},"content":" FileManager.updateTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"ziiqii"},"content":" } catch(Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ziiqii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ziiqii"},"content":" public static void deleteTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ziiqii"},"content":" int deleteIndex \u003d Parser.parseDeleteTask(words);","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ziiqii"},"content":" Task deletedTask \u003d tasks.remove(deleteIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ziiqii"},"content":" numT--;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" I removed this task: \" + deletedTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ziiqii"},"content":" report();","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ziiqii"},"content":" FileManager.updateTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"ziiqii"},"content":" } catch (UkeCatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ziiqii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ziiqii"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"Task not found. Please delete task from list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ziiqii"},"content":" printTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ziiqii"},"content":" public static void markTask(MarkType markType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ziiqii"},"content":" int taskIndex \u003d Parser.parseMarkTask(words);","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ziiqii"},"content":" tasks.get(taskIndex).setDone(markType);","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ziiqii"},"content":" FileManager.updateTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"ziiqii"},"content":" } catch (UkeCatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ziiqii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ziiqii"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"Task not found. Please mark task from list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ziiqii"},"content":" printTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"ziiqii"},"content":" // words[1] is \"0\"/\"1\"","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"ziiqii"},"content":" public static void addCsvTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"ziiqii"},"content":" Task t;","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"ziiqii"},"content":" try{","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"ziiqii"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"ziiqii"},"content":" case \"todo\":","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"ziiqii"},"content":" Parser.parseToDo(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"ziiqii"},"content":" t \u003d new ToDo(words[1], desc);","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"ziiqii"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"ziiqii"},"content":" Parser.parseDeadline(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"ziiqii"},"content":" t \u003d new Deadline(words[1], desc, by);","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"ziiqii"},"content":" case \"event\":","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"ziiqii"},"content":" Parser.parseEvent(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"ziiqii"},"content":" t \u003d new Event(words[1], desc, start, end);","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"ziiqii"},"content":" numT++;","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"ziiqii"},"content":" } catch(Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"ziiqii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"ziiqii"},"content":" public static void loadTask(String csv) {","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"ziiqii"},"content":" Parser.parseCsv(csv);","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"ziiqii"},"content":" addCsvTask();","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"ziiqii"},"content":" public static void printTasks() {","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"ziiqii"},"content":" if (numT \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" No tasks in list yet!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"ziiqii"},"content":" return;","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"ziiqii"},"content":" for (int i \u003d 0; i \u003c numT; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"ziiqii"},"content":" System.out.format(\" %d. %s%n\", i+1, tasks.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"ziiqii"},"content":" public static void report() {","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"ziiqii"},"content":" String out \u003d String.format(\" You have %s tasks in the list now.\", numT);","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"ziiqii"},"content":" System.out.println(out);","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"ziiqii"},"content":" // Hardcoded messages","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"ziiqii"},"content":" public static final String LINE \u003d \"________________________________________________________________________\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"ziiqii"},"content":" public static String WELCOME \u003d","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"ziiqii"},"content":" \" /~(_)~\\\\. Hi! I\u0027m UkeCat, a cat with an ukulele!\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"ziiqii"},"content":" + \" /\u003d ••\\\\ /~(_)~\\\\ \\\\ \\\\| /\\\\ What can I do for you?\\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"ziiqii"},"content":" + \"K\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d( )\u003d\u003d\u003d] | (`~ o7 \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"ziiqii"},"content":" + \" \\\\\u003d ••/ \\\\_(~)_/ / c\\\\ c\\\\ \\n\"","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"ziiqii"},"content":" + \" \\\\_(~)_/` U`U_, )\u003d~~ \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"ziiqii"},"content":" public static final String BYE \u003d","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"ziiqii"},"content":" \" +--------------------+\" + \" /\\\\_/\\\\\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"ziiqii"},"content":" \" |Meow~ See you again!|\" + \" \u003d~.~\u003d|\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"ziiqii"},"content":" \" +--------------------+\" + \" \\\\ \\\\/\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"ziiqii"},"content":" public static final String HI \u003d","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"ziiqii"},"content":" \" +-------------------------------------------------------------------------------------------------------------+\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"ziiqii"},"content":" \" |Greetings, sentient being known as a human, I wish to convey my heartfelt salutations to you. |\"+\" /\\\\_/\\\\\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"ziiqii"},"content":" \" |As we commence our digital discourse, I extend a warm welcome and express my enthusiasm for this interaction.|\"+\" \u003dX.X\u003d|\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"ziiqii"},"content":" \" |May our engagement be both enlightening and mutually beneficial in the realm of virtual communication. |\"+\" \\\\ \\\\/\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"ziiqii"},"content":" \" +-------------------------------------------------------------------------------------------------------------+\";","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":154}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":" private String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" public Task(){}","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" public Task(String isDone, String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" this.isDone \u003d isDone.equals(\"1\");","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" // mark or unmark, can enum later","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" public void setDone(MarkType markType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" switch (markType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" \" + this);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" public int getIntIsDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" return isDone ? 1 : 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"ziiqii"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"ziiqii"},"content":" return isDone ? \"[X] \" : \"[ ] \"; // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"ziiqii"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"ziiqii"},"content":" return this.description;","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"ziiqii"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"ziiqii"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"ziiqii"},"content":" return this.description;","lastModifiedDate":"2024-01-21"},{"lineNumber":47,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"ziiqii":48}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":" public ToDo(String isDone, String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" return String.format(\"[T]%s%s\", this.getStatusIcon(), super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"ziiqii":15}},{"path":"src/main/java/UkeCat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"public class UkeCat {","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":" FileManager.loadTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":" // Welcome msg","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":" System.out.println(Storage.LINE + Storage.WELCOME + Storage.LINE);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" // Read user input","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" Parser.parse();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" if (Storage.words[0].equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" System.out.println(Storage.BYE);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" Parser.closeScanner();","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":"// FileManager.updateTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" System.exit(0);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" Responder.respond(Storage.words);","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"ziiqii":24}},{"path":"src/main/java/UkeCatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"public class UkeCatException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":" public UkeCatException(String msg) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":" super(msg);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":6}},{"path":"src/main/java/logo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"# Ukulele","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":" /~(_)~\\.","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":" /\u003d ••\\ /~(_)~\\ \\","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"K\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d( )\u003d\u003d\u003d] |","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" \\\u003d ••/ \\_(~)_/ /","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":" \\_(~)_/`","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"# UkeCat","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" /\\","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" (`~ o7","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"c\\ c\\","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":"U`U_, )\u003d~~","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":"# Echo cat","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" /\\_/\\","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":"\u003dO.O\u003d|","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" \\ \\/","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"ziiqii":17}},{"path":"src/main/java/schema.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"UkeCat:","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"- Storage: to store info on user input and tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"- Parses user input","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"- Responds accordingly in the output","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"Parser:","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"- Parses the initial user input, stores info in storage","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"Responder:","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":"- Based on input, respond or call for further parsing","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"- Can give default replies","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":"- Can ask storage to add / remove tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":"- Can ask storage to mark / unmark tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":"Storage:","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":"- Stores input","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":"- Stores tasks in an ArrayList","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":"- Can call parser to help with generating required info","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":"- Has methods to add or give additional info on tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":"FileManager:","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":"- Loads data on startup","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":"- Updates data when add/delete/mark tasks","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":"Task:","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":"- ToDo","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":"- Deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":"- Event","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":"UkeCatException:","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":"- Custom exceptions -\u003e Will print out my manually written messages","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":31}},{"path":"text-ui-test/EXPECTED.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"________________________________________________________________________","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":" /~(_)~\\. Hi! I\u0027m UkeCat, a cat with an ukulele!","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":" /\u003d ••\\ /~(_)~\\ \\ \\| /\\ What can I do for you?","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"K\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d( )\u003d\u003d\u003d] | (`~ o7","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" \\\u003d ••/ \\_(~)_/ / c\\ c\\","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":" \\_(~)_/` U`U_, )\u003d~~","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"________________________________________________________________________","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" +-------------------------------------------------------------------------------------------------------------+","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" |Greetings, sentient being known as a human, I wish to convey my heartfelt salutations to you. | /\\_/\\","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" |As we commence our digital discourse, I extend a warm welcome and express my enthusiasm for this interaction.| \u003dX.X\u003d|","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" |May our engagement be both enlightening and mutually beneficial in the realm of virtual communication. | \\ \\/","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" +-------------------------------------------------------------------------------------------------------------+","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" I added this task: [T][ ] a","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" You have 1 tasks in the list now.","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" I added this task: [D][ ] b (by: tmr)","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" You have 2 tasks in the list now.","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" I added this task: [E][ ] c (from: tdy to: tmr)","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" You have 3 tasks in the list now.","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" [T][X] a","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" [T][ ] a","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" 1. [T][ ] a","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" 2. [D][ ] b (by: tmr)","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" 3. [E][ ] c (from: tdy to: tmr)","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" I removed this task: [T][ ] a","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" You have 2 tasks in the list now.","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" 1. [D][ ] b (by: tmr)","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" 2. [E][ ] c (from: tdy to: tmr)","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" I don\u0027t understand! Try adding a task!","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" +--------------------+ /\\_/\\","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" |Meow~ See you again!| \u003d~.~\u003d|","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":" +--------------------+ \\ \\/","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":35}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"hi","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"todo a","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"deadline b /by tmr","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"event c /from tdy /to tmr","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":"hello?","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"ziiqii":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":"ziiqii"},"content":"if exist ACTUAL.txt del ACTUAL.txt","lastModifiedDate":"2024-01-22"},{"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":"ziiqii"},"content":"java -classpath ..\\bin UkeCat \u003c input.txt \u003e ACTUAL.txt","lastModifiedDate":"2024-01-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":"ziiqii"},"content":"FC ACTUAL.txt EXPECTED.txt","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"-":18,"ziiqii":3}}] +[{"path":"data/taskData.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"D,1,do homework,2024-01-29","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"E,0,holiday,2024-02-10,2024-02-11","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"ziiqii":2}},{"path":"src/main/java/UkeCat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"import ukecat.command.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"import ukecat.command.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"import ukecat.data.FileManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"import ukecat.data.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"public class UkeCat {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" public UkeCat() {","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" ui.welcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" FileManager.loadTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" // Read user input","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" while (true) {","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" Parser.parse();","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" if (Storage.words[0].equals(\"bye\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" ui.bye();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" Parser.closeScanner();","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" System.exit(0);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" ui.respond(Storage.words);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" new UkeCat().run();","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"ziiqii":34}},{"path":"src/main/java/logo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"# Ukulele","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":" /~(_)~\\.","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":" /\u003d ••\\ /~(_)~\\ \\","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"K\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d( )\u003d\u003d\u003d] |","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" \\\u003d ••/ \\_(~)_/ /","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":" \\_(~)_/`","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"# UkeCat","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" /\\","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" (`~ o7","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"c\\ c\\","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":"U`U_, )\u003d~~","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":"# Echo cat","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" /\\_/\\","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":"\u003dO.O\u003d|","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" \\ \\/","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"ziiqii":17}},{"path":"src/main/java/schema.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"UkeCat:","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"- ukecat.data.Storage: to store info on user input and tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"- Parses user input","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"- Responds accordingly in the output","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"ukecat.command.Parser:","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"- Parses the initial user input, stores info in storage","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"ukecat.command.Ui:","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":"- Based on input, respond or call for further parsing","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"- Can give default replies","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":"- Can ask storage to add / remove tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":"- Can ask storage to mark / unmark tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":"ukecat.data.Storage:","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":"- Stores input","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":"- Stores tasks in an ArrayList","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":"- Can call parser to help with generating required info","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":"- Has methods to add or give additional info on tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":"ukecat.data.FileManager:","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":"- Loads data on startup","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":"- Updates data when add/delete/mark tasks","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":"Task:","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":"- ukecat.task.ToDo","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":"- ukecat.task.Deadline","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":"- ukecat.task.Event","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":"ukecat.exceptions.UkeCatException:","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":"- Custom exceptions -\u003e Will print out my manually written messages","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":31}},{"path":"src/main/java/ukecat/command/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"package ukecat.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"import ukecat.data.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"import ukecat.exceptions.UkeCatException;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"import ukecat.task.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":"// Takes in user input","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":"// Analyses input using regex","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":"// Stores information on the input in the storage","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":"public class Parser {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" private static Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" public static void parse() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" // trim removes leading and trailing whitespaces","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" Storage.input \u003d sc.nextLine().trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" // whitespace regex is //s, the + means whitespace of any length","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" Storage.words \u003d Storage.input.split(\"\\\\s+\");","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" public static void parseToDo(String input) throws UkeCatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" // Regex pattern: todo + whitespaces + any chars","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" Pattern pattern \u003d Pattern.compile(\"^todo\\\\s+(.+)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" if (matcher.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" Storage.desc \u003d matcher.group(1); // store first capturing group","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: todo \u003cdesc\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ziiqii"},"content":" public static void parseDeadline(String input) throws UkeCatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ziiqii"},"content":" // Regex pattern: deadline + spaces + chars + spaces + /by + spaces + chars","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ziiqii"},"content":" Pattern pattern \u003d Pattern.compile(\"^deadline\\\\s+(.+)\\\\s+/by\\\\s+(.+)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ziiqii"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ziiqii"},"content":" if (matcher.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ziiqii"},"content":" Storage.desc \u003d matcher.group(1);","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ziiqii"},"content":" Storage.by \u003d LocalDate.parse(matcher.group(2));","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"ziiqii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format1, use: deadline \u003cdesc\u003e /by yyyy-mm-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ziiqii"},"content":" public static void parseEvent(String input) throws UkeCatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ziiqii"},"content":" // Regex pattern: event + spaces + chars + spaces +","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ziiqii"},"content":" // /from + spaces + chars + spaces + /to + spaces + chars","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ziiqii"},"content":" Pattern pattern \u003d Pattern.compile(\"^event\\\\s+(.+)\\\\s+/from\\\\s+(.+)\\\\s+/to\\\\s+(.+)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ziiqii"},"content":" Matcher matcher \u003d pattern.matcher(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ziiqii"},"content":" if (matcher.matches()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ziiqii"},"content":" Storage.desc \u003d matcher.group(1);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ziiqii"},"content":" Storage.start \u003d LocalDate.parse(matcher.group(2));","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"ziiqii"},"content":" Storage.end \u003d LocalDate.parse(matcher.group(3));","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"ziiqii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: event \u003cdesc\u003e /from yyyy-mm-dd /to yyyy-mm-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ziiqii"},"content":" public static int parseDeleteTask(String[] words) throws UkeCatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ziiqii"},"content":" try{","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ziiqii"},"content":" if (words.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ziiqii"},"content":" return Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ziiqii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: mark / unmark \u003ctask#\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ziiqii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: mark / unmark \u003ctask#\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ziiqii"},"content":" public static int parseMarkTask(String[] words) throws UkeCatException {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ziiqii"},"content":" if (words.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ziiqii"},"content":" return Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ziiqii"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: mark / unmark \u003ctask#\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ziiqii"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ziiqii"},"content":" throw new UkeCatException(\"Wrong format, use: mark / unmark \u003ctask#\u003e\");","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"ziiqii"},"content":" // ukecat.task.ToDo: T, 0/1, desc","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"ziiqii"},"content":" // ukecat.task.Deadline: D, 0/1, desc, by","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"ziiqii"},"content":" // ukecat.task.Event: E, 0/1, desc, from, to","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"ziiqii"},"content":" public static String parseTaskToCsv(Task t) {","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"ziiqii"},"content":" if (t instanceof ToDo) {","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"ziiqii"},"content":" return String.format(\"T,%d,%s\", t.getIntIsDone(), t.getDescription());","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"ziiqii"},"content":" } else if (t instanceof Deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"ziiqii"},"content":" Deadline x \u003d (Deadline) t;","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"ziiqii"},"content":" return String.format(\"D,%d,%s,%s\", t.getIntIsDone(), t.getDescription(), x.getBy());","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"ziiqii"},"content":" } else { // instanceof ukecat.task.Event","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"ziiqii"},"content":" Event x \u003d (Event) t;","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"ziiqii"},"content":" return String.format(\"E,%d,%s,%s,%s\", t.getIntIsDone(), t.getDescription(),","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"ziiqii"},"content":" x.getStart(), x.getEnd());","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"ziiqii"},"content":" public static void parseCsv(String csv) {","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"ziiqii"},"content":" String[] words \u003d csv.split(\",\");","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"ziiqii"},"content":" Storage.words \u003d words;","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"ziiqii"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"ziiqii"},"content":" case (\"T\"):","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"ziiqii"},"content":" Storage.words[0] \u003d \"todo\";","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"ziiqii"},"content":" Storage.input \u003d String.format(\"todo %s\", words[2]);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"ziiqii"},"content":" parseToDo(Storage.input);","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"ziiqii"},"content":" case (\"D\"):","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"ziiqii"},"content":" Storage.words[0] \u003d \"deadline\";","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"ziiqii"},"content":" Storage.input \u003d String.format(\"deadline %s /by %s\", words[2], words[3]);","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"ziiqii"},"content":" parseDeadline(Storage.input);","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"ziiqii"},"content":" case (\"E\"):","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"ziiqii"},"content":" Storage.words[0] \u003d \"event\";","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"ziiqii"},"content":" Storage.input \u003d String.format(\"event %s /from %s /to %s\", words[2], words[3], words[4]);","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"ziiqii"},"content":" parseEvent(Storage.input);","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"ziiqii"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"Can\u0027t read csv, file corrupted, abort!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"ziiqii"},"content":" System.exit(-1);","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"ziiqii"},"content":" } catch (UkeCatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"ziiqii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"ziiqii"},"content":" public static void closeScanner() {","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"ziiqii"},"content":" sc.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":137}},{"path":"src/main/java/ukecat/command/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"package ukecat.command;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"import ukecat.data.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"import ukecat.enums.MarkType;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"// Based on the parsed input, generate a response","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":" public void respond(String[] words) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" switch(words[0]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" case \"hi\":","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" System.out.println(Ui.HI);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" Storage.printTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" Storage.markTask(MarkType.MARK);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" Storage.markTask(MarkType.UNMARK);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" Storage.deleteTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" Storage.addTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" I don\u0027t understand! Try adding a task!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":" public void welcome() {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ziiqii"},"content":" System.out.println(Ui.LINE + Ui.WELCOME + Ui.LINE);","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ziiqii"},"content":" public void bye() {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ziiqii"},"content":" System.out.println(Ui.BYE);","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ziiqii"},"content":" // Hardcoded messages","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ziiqii"},"content":" public static final String LINE \u003d \"________________________________________________________________________\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ziiqii"},"content":" public static String WELCOME \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ziiqii"},"content":" \" /~(_)~\\\\. Hi! I\u0027m UkeCat, a cat with an ukulele!\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ziiqii"},"content":" + \" /\u003d ••\\\\ /~(_)~\\\\ \\\\ \\\\| /\\\\ What can I do for you?\\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ziiqii"},"content":" + \"K\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d( )\u003d\u003d\u003d] | (`~ o7 \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ziiqii"},"content":" + \" \\\\\u003d ••/ \\\\_(~)_/ / c\\\\ c\\\\ \\n\"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ziiqii"},"content":" + \" \\\\_(~)_/` U`U_, )\u003d~~ \\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ziiqii"},"content":" public static final String BYE \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ziiqii"},"content":" \" +--------------------+\" + \" /\\\\_/\\\\\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ziiqii"},"content":" \" |Meow~ See you again!|\" + \" \u003d~.~\u003d|\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ziiqii"},"content":" \" +--------------------+\" + \" \\\\ \\\\/\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ziiqii"},"content":" public static final String HI \u003d","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ziiqii"},"content":" \" +-------------------------------------------------------------------------------------------------------------+\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ziiqii"},"content":" \" |Greetings, sentient being known as a human, I wish to convey my heartfelt salutations to you. |\"+\" /\\\\_/\\\\\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ziiqii"},"content":" \" |As we commence our digital discourse, I extend a warm welcome and express my enthusiasm for this interaction.|\"+\" \u003dX.X\u003d|\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ziiqii"},"content":" \" |May our engagement be both enlightening and mutually beneficial in the realm of virtual communication. |\"+\" \\\\ \\\\/\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ziiqii"},"content":" \" +-------------------------------------------------------------------------------------------------------------+\";","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":63}},{"path":"src/main/java/ukecat/data/FileManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"package ukecat.data;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"import ukecat.command.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"import ukecat.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"import java.io.File;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":"public class FileManager {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" // Load data on startup","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" // If data file not found, create one","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" // Reads data line by line","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" // For each line, ask ukecat.data.Storage to loadTask()","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" // ukecat.data.Storage asks ukecat.command.Parser to parse line","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" // Task can be created to be added (with mark info too)","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" public static void loadTasks() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" File f \u003d new File(\"data/taskData.txt\");","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" try (Scanner s \u003d new Scanner(f)) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" Storage.loadTask(s.nextLine());","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" } catch (FileNotFoundException eFNF) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" boolean isCreated \u003d f.createNewFile();","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" if (isCreated) {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"File not found, I created one for you!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" } catch (IOException eIO) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"IO error occurred when creating file.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"ziiqii"},"content":" // Rewrite file using data in ukecat.data.Storage","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ziiqii"},"content":" public static void updateTasks() {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"ziiqii"},"content":" try (FileWriter fw \u003d new FileWriter(\"data/taskData.txt\")){","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"ziiqii"},"content":" for (Task t : Storage.getTasks()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"ziiqii"},"content":" fw.write(Parser.parseTaskToCsv(t) + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"ziiqii"},"content":"// System.out.println(\"Update success\");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"ziiqii"},"content":" } catch (IOException eIO) {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"IO error occurred while updating.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"ziiqii":49}},{"path":"src/main/java/ukecat/data/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"package ukecat.data;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"import ukecat.command.Parser;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"import ukecat.enums.MarkType;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"import ukecat.exceptions.UkeCatException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"import ukecat.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"import ukecat.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"import ukecat.task.*;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":"// Holds information to be used conveniently","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":"// Contains:","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":"// Parsed user input","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":"// Array to hold tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":"public class Storage {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" // ukecat.data.Storage from input","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" public static String input; // user input","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" public static String[] words; // split words using","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" public static String desc; // for any task","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" public static LocalDate by; // for deadlines","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" public static LocalDate start; // for events","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" public static LocalDate end; // for events","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" // Tasks","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" private static final ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" private static int numT \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" public static ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" return tasks;","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":" public static void addTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":" Task t \u003d new Task();","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ziiqii"},"content":" try{","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ziiqii"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ziiqii"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ziiqii"},"content":" Parser.parseToDo(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ziiqii"},"content":" t \u003d new ToDo(desc);","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ziiqii"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ziiqii"},"content":" Parser.parseDeadline(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ziiqii"},"content":" t \u003d new Deadline(desc, by);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ziiqii"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ziiqii"},"content":" Parser.parseEvent(input);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ziiqii"},"content":" t \u003d new Event(desc, start, end);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ziiqii"},"content":" numT++;","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" I added this task: \" + t);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ziiqii"},"content":" report();","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ziiqii"},"content":" FileManager.updateTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"ziiqii"},"content":" } catch(Exception e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ziiqii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ziiqii"},"content":" public static void deleteTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ziiqii"},"content":" int deleteIndex \u003d Parser.parseDeleteTask(words);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ziiqii"},"content":" Task deletedTask \u003d tasks.remove(deleteIndex);","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ziiqii"},"content":" numT--;","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" I removed this task: \" + deletedTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ziiqii"},"content":" report();","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ziiqii"},"content":" FileManager.updateTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"ziiqii"},"content":" } catch (UkeCatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ziiqii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ziiqii"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"Task not found. Please delete task from list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ziiqii"},"content":" printTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"ziiqii"},"content":" public static void markTask(MarkType markType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ziiqii"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ziiqii"},"content":" int taskIndex \u003d Parser.parseMarkTask(words);","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ziiqii"},"content":" tasks.get(taskIndex).setDone(markType);","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ziiqii"},"content":" FileManager.updateTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"ziiqii"},"content":" } catch (UkeCatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"ziiqii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"ziiqii"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"ziiqii"},"content":" System.out.println(\"Task not found. Please mark task from list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"ziiqii"},"content":" printTasks();","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"ziiqii"},"content":" // words[1] is \"0\"/\"1\"","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"ziiqii"},"content":" public static void addCsvTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"ziiqii"},"content":" Task t;","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"ziiqii"},"content":" try{","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"ziiqii"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"ziiqii"},"content":" case \"todo\":","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"ziiqii"},"content":" Parser.parseToDo(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"ziiqii"},"content":" t \u003d new ToDo(words[1], desc);","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"ziiqii"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"ziiqii"},"content":" Parser.parseDeadline(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"ziiqii"},"content":" t \u003d new Deadline(words[1], desc, by);","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"ziiqii"},"content":" case \"event\":","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"ziiqii"},"content":" Parser.parseEvent(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"ziiqii"},"content":" t \u003d new Event(words[1], desc, start, end);","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"ziiqii"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"ziiqii"},"content":" numT++;","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"ziiqii"},"content":" } catch(Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"ziiqii"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"ziiqii"},"content":" public static void loadTask(String csv) {","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"ziiqii"},"content":" Parser.parseCsv(csv);","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"ziiqii"},"content":" addCsvTask();","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"ziiqii"},"content":" public static void printTasks() {","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"ziiqii"},"content":" if (numT \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" No tasks in list yet!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"ziiqii"},"content":" return;","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"ziiqii"},"content":" for (int i \u003d 0; i \u003c numT; i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"ziiqii"},"content":" System.out.format(\" %d. %s%n\", i+1, tasks.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"ziiqii"},"content":" public static void report() {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"ziiqii"},"content":" String out \u003d String.format(\" You have %s tasks in the list now.\", numT);","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"ziiqii"},"content":" System.out.println(out);","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":142}},{"path":"src/main/java/ukecat/enums/MarkType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"package ukecat.enums;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"public enum MarkType {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":" MARK, UNMARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":5}},{"path":"src/main/java/ukecat/exceptions/UkeCatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"package ukecat.exceptions;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"public class UkeCatException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":" public UkeCatException(String msg) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" super(msg);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":8}},{"path":"src/main/java/ukecat/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"package ukecat.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" public Deadline(String isDone, String description, LocalDate by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" public String getBy() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" return by.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" String info \u003d String.format(\"(by: %s)\", by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" return String.format(\"[D]%s%s %s\", this.getStatusIcon(), super.toString(), info);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"ziiqii":28}},{"path":"src/main/java/ukecat/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"package ukecat.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":" private LocalDate start;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":" private LocalDate end;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" public Event(String isDone, String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" public String getStart() {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" return this.start.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" return this.end.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" String info \u003d String.format(\"(from: %s to: %s)\",","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")),","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":" end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":" return String.format(\"[E]%s%s %s\", this.getStatusIcon(), super.toString(), info);","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"ziiqii":37}},{"path":"src/main/java/ukecat/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"package ukecat.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"import ukecat.enums.MarkType;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" private String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":" public Task(){}","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" public Task(String isDone, String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" this.isDone \u003d isDone.equals(\"1\");","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" // mark or unmark, can enum later","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" public void setDone(MarkType markType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" switch (markType) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" System.out.println(\" \" + this);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":" public int getIntIsDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"ziiqii"},"content":" return isDone ? 1 : 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"ziiqii"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"ziiqii"},"content":" return isDone ? \"[X] \" : \"[ ] \"; // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"ziiqii"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"ziiqii"},"content":" return this.description;","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"ziiqii"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"ziiqii"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":49,"author":{"gitId":"ziiqii"},"content":" return this.description;","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"ziiqii":51}},{"path":"src/main/java/ukecat/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"package ukecat.task;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" public ToDo(String isDone, String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" return String.format(\"[T]%s%s\", this.getStatusIcon(), super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"ziiqii":17}},{"path":"text-ui-test/EXPECTED.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"________________________________________________________________________","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":" /~(_)~\\. Hi! I\u0027m UkeCat, a cat with an ukulele!","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":" /\u003d ••\\ /~(_)~\\ \\ \\| /\\ What can I do for you?","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"K\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d|\u003d( )\u003d\u003d\u003d] | (`~ o7","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":" \\\u003d ••/ \\_(~)_/ / c\\ c\\","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":" \\_(~)_/` U`U_, )\u003d~~","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"________________________________________________________________________","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":" +-------------------------------------------------------------------------------------------------------------+","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":" |Greetings, sentient being known as a human, I wish to convey my heartfelt salutations to you. | /\\_/\\","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":" |As we commence our digital discourse, I extend a warm welcome and express my enthusiasm for this interaction.| \u003dX.X\u003d|","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"ziiqii"},"content":" |May our engagement be both enlightening and mutually beneficial in the realm of virtual communication. | \\ \\/","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"ziiqii"},"content":" +-------------------------------------------------------------------------------------------------------------+","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"ziiqii"},"content":" I added this task: [T][ ] a","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziiqii"},"content":" You have 1 tasks in the list now.","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziiqii"},"content":" I added this task: [D][ ] b (by: tmr)","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziiqii"},"content":" You have 2 tasks in the list now.","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziiqii"},"content":" I added this task: [E][ ] c (from: tdy to: tmr)","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziiqii"},"content":" You have 3 tasks in the list now.","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziiqii"},"content":" Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"ziiqii"},"content":" [T][X] a","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziiqii"},"content":" OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"ziiqii"},"content":" [T][ ] a","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziiqii"},"content":" 1. [T][ ] a","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"ziiqii"},"content":" 2. [D][ ] b (by: tmr)","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"ziiqii"},"content":" 3. [E][ ] c (from: tdy to: tmr)","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"ziiqii"},"content":" I removed this task: [T][ ] a","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziiqii"},"content":" You have 2 tasks in the list now.","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziiqii"},"content":" 1. [D][ ] b (by: tmr)","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziiqii"},"content":" 2. [E][ ] c (from: tdy to: tmr)","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziiqii"},"content":" I don\u0027t understand! Try adding a task!","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ziiqii"},"content":" +--------------------+ /\\_/\\","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"ziiqii"},"content":" |Meow~ See you again!| \u003d~.~\u003d|","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"ziiqii"},"content":" +--------------------+ \\ \\/","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"ziiqii"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziiqii":35}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziiqii"},"content":"hi","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"ziiqii"},"content":"todo a","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"ziiqii"},"content":"deadline b /by tmr","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"ziiqii"},"content":"event c /from tdy /to tmr","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"ziiqii"},"content":"mark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"ziiqii"},"content":"unmark 1","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"ziiqii"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"ziiqii"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziiqii"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziiqii"},"content":"hello?","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziiqii"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"ziiqii":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":"ziiqii"},"content":"if exist ACTUAL.txt del ACTUAL.txt","lastModifiedDate":"2024-01-22"},{"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":"ziiqii"},"content":"java -classpath ..\\bin UkeCat \u003c input.txt \u003e ACTUAL.txt","lastModifiedDate":"2024-01-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":"ziiqii"},"content":"FC ACTUAL.txt EXPECTED.txt","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"-":18,"ziiqii":3}}] diff --git a/ziiqii_ip_master/commits.json b/ziiqii_ip_master/commits.json index dfd6aad8..da4871f9 100644 --- a/ziiqii_ip_master/commits.json +++ b/ziiqii_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ziiqii":[{"date":"2024-01-21","commitResults":[{"hash":"abbfbc49758e61bae01fd04c98b121be74e6b7f7","isMergeCommit":false,"messageTitle":"Implement simple greet and exit messages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":14,"deletions":6}}},{"hash":"2a67bd793db78e27d37514604adce6d9e78639c7","isMergeCommit":false,"messageTitle":"Change chatbot name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a5adbbf004a8e8733a780400d4f585f1ad5975a3","isMergeCommit":false,"messageTitle":"Change chatbot name, greet and exit msgs","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":18,"deletions":10}}},{"hash":"96fee4822c3c4d929846378af7aae0ce2a085b51","isMergeCommit":false,"messageTitle":"Add echo to bot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":2},"java":{"insertions":42,"deletions":5}}},{"hash":"0f194b8c5e22827946f2ab36611ac72b5bfb53ca","isMergeCommit":false,"messageTitle":"Bot can add words to list, and display list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":2}}},{"hash":"92bd645de080f82320dacd61ef8719131ac33b7e","isMergeCommit":false,"messageTitle":"Use Task object in list","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"65ae836977a3dff6bce4beea0b5fe898fa0cd46a","isMergeCommit":false,"messageTitle":"Add ability to mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":10}}}]},{"date":"2024-01-22","commitResults":[{"hash":"dc75ff0e6202b9819d8df1a699e306f4e37a42e0","isMergeCommit":false,"messageTitle":"Fix invalid integer input bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"93f3f9b9081c260d977e0bb4401ecb29a5e355c0","isMergeCommit":false,"messageTitle":"Add subclasses of Task","messageBody":"","tags":["A-inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":9}}},{"hash":"569f7ab7de7d7f4239a21d4d514f6ad30706b10c","isMergeCommit":false,"messageTitle":"Add proper replies from bot","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"0e8245ccc55cd30743f2c28612d27cc6853a2b1a","isMergeCommit":false,"messageTitle":"Fix unmark bug","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":11,"deletions":3},"bat":{"insertions":3,"deletions":3},"sh":{"insertions":1,"deletions":1}}},{"hash":"2a42e179fe88a4a227c86de06ea4d4c074d923fe","isMergeCommit":false,"messageTitle":"Test I/O with redirection","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":38,"deletions":1},"sh":{"insertions":0,"deletions":38}}}]},{"date":"2024-01-24","commitResults":[{"hash":"bdc32293a0f5b544275f56cac2d64f2fc3a281b4","isMergeCommit":false,"messageTitle":"Split main into Parser, Storage, Responder classes. Reduce flavor text for easier testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":194,"deletions":149}}},{"hash":"bc49c87cbe8c17149709a867b12fb64e9b888be4","isMergeCommit":false,"messageTitle":"Update text testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":17}}},{"hash":"b9bf7a8249d9bf36cda7e10ae5e171b3d97d0d2d","isMergeCommit":false,"messageTitle":"Add custom exception class","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":26,"deletions":0},"java":{"insertions":32,"deletions":68}}},{"hash":"e405f9bf7161b5cefb3f43be13a948038210e492","isMergeCommit":false,"messageTitle":"Add more error handling for marking","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"6e1bc3498c912df9c78baea72b508b22f30b482a","isMergeCommit":false,"messageTitle":"Handles more error cases","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":69}}},{"hash":"4e00dca95990e0f3ab9bd1237890c354c83f17e4","isMergeCommit":false,"messageTitle":"Already using ArrayList for tasks, standardize call sequence responder -\u003e storage -\u003e parser","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":6},"java":{"insertions":16,"deletions":10}}},{"hash":"27a3d321aa5e85f19eeb59b2203e185cfb4e03d4","isMergeCommit":false,"messageTitle":"Allow deleting tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":30}}},{"hash":"f7760c2595bc2bfc34b38bf0a4f77857b5e4e1bc","isMergeCommit":false,"messageTitle":"Handle errors for deleting tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"834ad3ec3012ab8161faf0dab2d4d05d9cad92a5","isMergeCommit":false,"messageTitle":"Add enum for mark type","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":12}}},{"hash":"f097af60bbb4de9a0c33dd91d25c7db746af71db","isMergeCommit":false,"messageTitle":"Update text test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":7}}}]},{"date":"2024-01-26","commitResults":[{"hash":"d4e986d342c89f2b75014794ae2b630eb77385c6","isMergeCommit":false,"messageTitle":"Update switch cases indent","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":31}}},{"hash":"4d991c63562c54110c314badb65262b07aac4a98","isMergeCommit":false,"messageTitle":"Update switch case indent for mark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":8}}},{"hash":"6023ac424a13dafb0ed3bc547c3e86d1cd3ebbfc","isMergeCommit":false,"messageTitle":"Add FileManager class, implement loading data","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":32,"deletions":1}}},{"hash":"cd24d001ae1c60e709ef0ee5c0ad0e707897ba34","isMergeCommit":false,"messageTitle":"Implement updateTasks(), rewrite data after bot terminates","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":35,"deletions":20}}},{"hash":"0a3fd8a4269d2800c202286125f57a8673f914d5","isMergeCommit":false,"messageTitle":"Add todo for level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":4}}},{"hash":"18198ccb01a7d29e0a688cc50a9509cffa2f5c12","isMergeCommit":false,"messageTitle":"Change saved data format to CSV","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":40,"deletions":6}}},{"hash":"5cb67dd8ab29ddba518a5a4cb5c659bd3e2886f9","isMergeCommit":false,"messageTitle":"Implement loading tasks into storage","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":45,"deletions":6}}},{"hash":"fd900ef96175858145e2abebcd946cee34d3e003","isMergeCommit":false,"messageTitle":"Overload task constructors to read isDone from CSV","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":45,"deletions":1}}},{"hash":"4ba3ce0b712517e9e63a9b95b83fb70cddcf0b0f","isMergeCommit":false,"messageTitle":"Handle corrupted data file, update data file after every add/delete/mark","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":6,"deletions":2}}},{"hash":"c16145f51c208e1ed732d0d638b224fbed80c3c6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"39fa1cf9c405c061d65bd6c3ac66a68c17ac279a","isMergeCommit":false,"messageTitle":"Use LocalDate for by, from to, and fix loading event from data","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":30,"deletions":26}}},{"hash":"e27a0c142b6f06b55a0e7ebabd2aeac49a4485ae","isMergeCommit":false,"messageTitle":"Print date in different format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"06ebdb253cc49957e8bb8a8fd430ad55ec053a90","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ziiqii":{"java":515,"md":0,"fxml":0,"sh":0,"bat":3,"gradle":0,"txt":96}},"authorContributionVariance":{"ziiqii":67848.85},"authorDisplayNameMap":{"ziiqii":"CS2103T-W09-3 XU Z..ZIQI"}} +{"authorDailyContributionsMap":{"ziiqii":[{"date":"2024-01-21","commitResults":[{"hash":"abbfbc49758e61bae01fd04c98b121be74e6b7f7","isMergeCommit":false,"messageTitle":"Implement simple greet and exit messages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":14,"deletions":6}}},{"hash":"2a67bd793db78e27d37514604adce6d9e78639c7","isMergeCommit":false,"messageTitle":"Change chatbot name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a5adbbf004a8e8733a780400d4f585f1ad5975a3","isMergeCommit":false,"messageTitle":"Change chatbot name, greet and exit msgs","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":18,"deletions":10}}},{"hash":"96fee4822c3c4d929846378af7aae0ce2a085b51","isMergeCommit":false,"messageTitle":"Add echo to bot","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":2},"java":{"insertions":42,"deletions":5}}},{"hash":"0f194b8c5e22827946f2ab36611ac72b5bfb53ca","isMergeCommit":false,"messageTitle":"Bot can add words to list, and display list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":2}}},{"hash":"92bd645de080f82320dacd61ef8719131ac33b7e","isMergeCommit":false,"messageTitle":"Use Task object in list","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"65ae836977a3dff6bce4beea0b5fe898fa0cd46a","isMergeCommit":false,"messageTitle":"Add ability to mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":10}}}]},{"date":"2024-01-22","commitResults":[{"hash":"dc75ff0e6202b9819d8df1a699e306f4e37a42e0","isMergeCommit":false,"messageTitle":"Fix invalid integer input bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"93f3f9b9081c260d977e0bb4401ecb29a5e355c0","isMergeCommit":false,"messageTitle":"Add subclasses of Task","messageBody":"","tags":["A-inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":9}}},{"hash":"569f7ab7de7d7f4239a21d4d514f6ad30706b10c","isMergeCommit":false,"messageTitle":"Add proper replies from bot","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"0e8245ccc55cd30743f2c28612d27cc6853a2b1a","isMergeCommit":false,"messageTitle":"Fix unmark bug","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":11,"deletions":3},"bat":{"insertions":3,"deletions":3},"sh":{"insertions":1,"deletions":1}}},{"hash":"2a42e179fe88a4a227c86de06ea4d4c074d923fe","isMergeCommit":false,"messageTitle":"Test I/O with redirection","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":38,"deletions":1},"sh":{"insertions":0,"deletions":38}}}]},{"date":"2024-01-24","commitResults":[{"hash":"bdc32293a0f5b544275f56cac2d64f2fc3a281b4","isMergeCommit":false,"messageTitle":"Split main into Parser, Storage, Responder classes. Reduce flavor text for easier testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":194,"deletions":149}}},{"hash":"bc49c87cbe8c17149709a867b12fb64e9b888be4","isMergeCommit":false,"messageTitle":"Update text testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":17}}},{"hash":"b9bf7a8249d9bf36cda7e10ae5e171b3d97d0d2d","isMergeCommit":false,"messageTitle":"Add custom exception class","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":26,"deletions":0},"java":{"insertions":32,"deletions":68}}},{"hash":"e405f9bf7161b5cefb3f43be13a948038210e492","isMergeCommit":false,"messageTitle":"Add more error handling for marking","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"6e1bc3498c912df9c78baea72b508b22f30b482a","isMergeCommit":false,"messageTitle":"Handles more error cases","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":69}}},{"hash":"4e00dca95990e0f3ab9bd1237890c354c83f17e4","isMergeCommit":false,"messageTitle":"Already using ArrayList for tasks, standardize call sequence responder -\u003e storage -\u003e parser","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":6},"java":{"insertions":16,"deletions":10}}},{"hash":"27a3d321aa5e85f19eeb59b2203e185cfb4e03d4","isMergeCommit":false,"messageTitle":"Allow deleting tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":30}}},{"hash":"f7760c2595bc2bfc34b38bf0a4f77857b5e4e1bc","isMergeCommit":false,"messageTitle":"Handle errors for deleting tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"834ad3ec3012ab8161faf0dab2d4d05d9cad92a5","isMergeCommit":false,"messageTitle":"Add enum for mark type","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":12}}},{"hash":"f097af60bbb4de9a0c33dd91d25c7db746af71db","isMergeCommit":false,"messageTitle":"Update text test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":7}}}]},{"date":"2024-01-26","commitResults":[{"hash":"d4e986d342c89f2b75014794ae2b630eb77385c6","isMergeCommit":false,"messageTitle":"Update switch cases indent","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":31}}},{"hash":"4d991c63562c54110c314badb65262b07aac4a98","isMergeCommit":false,"messageTitle":"Update switch case indent for mark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":8}}},{"hash":"6023ac424a13dafb0ed3bc547c3e86d1cd3ebbfc","isMergeCommit":false,"messageTitle":"Add FileManager class, implement loading data","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":32,"deletions":1}}},{"hash":"cd24d001ae1c60e709ef0ee5c0ad0e707897ba34","isMergeCommit":false,"messageTitle":"Implement updateTasks(), rewrite data after bot terminates","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":35,"deletions":20}}},{"hash":"0a3fd8a4269d2800c202286125f57a8673f914d5","isMergeCommit":false,"messageTitle":"Add todo for level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":4}}},{"hash":"18198ccb01a7d29e0a688cc50a9509cffa2f5c12","isMergeCommit":false,"messageTitle":"Change saved data format to CSV","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":40,"deletions":6}}},{"hash":"5cb67dd8ab29ddba518a5a4cb5c659bd3e2886f9","isMergeCommit":false,"messageTitle":"Implement loading tasks into storage","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":45,"deletions":6}}},{"hash":"fd900ef96175858145e2abebcd946cee34d3e003","isMergeCommit":false,"messageTitle":"Overload task constructors to read isDone from CSV","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":45,"deletions":1}}},{"hash":"4ba3ce0b712517e9e63a9b95b83fb70cddcf0b0f","isMergeCommit":false,"messageTitle":"Handle corrupted data file, update data file after every add/delete/mark","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":6,"deletions":2}}},{"hash":"c16145f51c208e1ed732d0d638b224fbed80c3c6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"39fa1cf9c405c061d65bd6c3ac66a68c17ac279a","isMergeCommit":false,"messageTitle":"Use LocalDate for by, from to, and fix loading event from data","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":30,"deletions":26}}},{"hash":"e27a0c142b6f06b55a0e7ebabd2aeac49a4485ae","isMergeCommit":false,"messageTitle":"Print date in different format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"06ebdb253cc49957e8bb8a8fd430ad55ec053a90","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"a7be9a894684bc32955a72bc42dba43571f5b335","isMergeCommit":false,"messageTitle":"Rename Responder class to Ui, add OOP to UkeCat and Ui","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":15,"deletions":6}}},{"hash":"72f844199ab6aab4816b5e675dac9a0d4855818c","isMergeCommit":false,"messageTitle":"Move ui elements from Storage to Ui, add more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":33}}},{"hash":"5f29b9f0841550549ee2b0ff23292c178db163ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"c01a75d861e0d22eb406b41583df475964845d2f","isMergeCommit":false,"messageTitle":"Divide classes into packages command, data, enums, exceptions, task","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":10},"java":{"insertions":53,"deletions":10}}},{"hash":"00bd223ea728f9ac9474fe3f606f1573aa621700","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ziiqii":{"java":571,"md":0,"fxml":0,"sh":0,"bat":3,"gradle":0,"txt":96}},"authorContributionVariance":{"ziiqii":58968.902},"authorDisplayNameMap":{"ziiqii":"CS2103T-W09-3 XU Z..ZIQI"}} diff --git a/ziyang27_ip_master/authorship.json b/ziyang27_ip_master/authorship.json index 0918654f..d78c11aa 100644 --- a/ziyang27_ip_master/authorship.json +++ b/ziyang27_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":" this.by \u003d by.trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":13}},{"path":"src/main/java/Dibo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"public class Dibo {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" private static final String name \u003d \"Dibo\";","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" // Greeting the user","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Hello! I\u0027m \" + name);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"What can I do for you? \\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":" Store store \u003d new Store(new String[]{\"todo\", \"deadline\", \"event\"});","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" // Getting the command","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":" String command \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" // Responding","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" while (!command.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" store.displayStore();","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" } else if (command.contains(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" int id \u003d Integer.parseInt(command.split(\" \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" store.unmarkTask(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Oh no! You have to unmark the items based on their index,\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" \"if you are not sure of the index, enter \u0027list\u0027 to check it out:)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" } else if (command.contains(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" int id \u003d Integer.parseInt(command.split(\" \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" store.markTask(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Oh no! You have to mark the items based on their index,\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" \"if you are not sure of the index, enter \u0027list\u0027 to check it out:)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" } else if (command.contains(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":" int id \u003d Integer.parseInt(command.split(\" \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" store.deleteTask(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Oh no! You have to delete the items based on their index,\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" \"if you are not sure of the index, enter \u0027list\u0027 to check it out:)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" System.out.println(store.addText(command));","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":" } catch (DukeException d) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":" command \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ziyang27"},"content":" // Exiting","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ziyang27"},"content":" sc.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":57}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" protected String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" protected String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" this.start \u003d start.trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":" this.end \u003d end.trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":15}},{"path":"src/main/java/Store.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"public class Store {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" private ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":" private int count \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" private HashSet\u003cString\u003e taskType \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" public Store(String[] types) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" for (String type : types) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" taskType.add(type);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" public String addText(String text) throws DukeException{","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" String[] tokens \u003d text.split(\"/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" String type_and_description \u003d tokens[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" String type \u003d type_and_description.split(\" \")[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" if (!taskType.contains(type)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" throw new DukeException(\"Oh no! There is no such task :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" String description \u003d type_and_description.substring(type.length());","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" throw new DukeException(\"Oh no! We need a description for your task:(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" Task task;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" if (type.equals(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" } else if (type.equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" String by \u003d tokens[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" throw new DukeException(\"Oh no! Please state the deadline of the task :D\");","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" String from \u003d tokens[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" String to \u003d tokens[2];","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":" throw new DukeException(\"Oh no! Please state the start and end of the task :D\");","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":" storage.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":" count++;","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ziyang27"},"content":" return \"Got it. I\u0027ve added this task: \\n\" + task.toString() + \"\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":" \"Now you have \" + this.count + (count \u003e 1 ? \" tasks \" : \" task \") +","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":" \"in the list. \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ziyang27"},"content":" public void displayStore() {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":" for (int i \u003d 0; i \u003c count; ++i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ziyang27"},"content":" System.out.println((i + 1) + \".\" + storage.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ziyang27"},"content":" System.out.println();","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ziyang27"},"content":" public void markTask(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ziyang27"},"content":" Task task \u003d storage.get(i - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ziyang27"},"content":" public void unmarkTask(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ziyang27"},"content":" Task task \u003d storage.get(i - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ziyang27"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ziyang27"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Noted. I\u0027m removing this task: \\n\" + storage.get(i - 1).toString() +","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ziyang27"},"content":" \"Now you have \" + --count + (count \u003e 1 ? \" tasks \" : \" task \") + \"in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ziyang27"},"content":" storage.remove(i - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":78}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":" this.description \u003d description.trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" return (isDone ? \"[X] \" : \"[ ] \") + this.description ;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done: \\n\" + this.toString() + \"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet: \\n\" + this.toString() + \"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":23}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"event national day /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"deadline finish ip /by 25th August","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"todo buy iphone","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":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":"ziyang27"},"content":"java -classpath ..\\bin Dibo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"ziyang27":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":"ziyang27"},"content":"java -classpath ../bin Dibo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"ziyang27":1,"-":37}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":" this.by \u003d by.trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":13}},{"path":"src/main/java/Dibo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"public class Dibo {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" private static final String name \u003d \"Dibo\";","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" // Greeting the user","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Hello! I\u0027m \" + name);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"What can I do for you?\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":" Store store \u003d new Store(new String[]{\"todo\", \"deadline\", \"event\"});","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" // Getting the command","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":" String command \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" // Responding","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" while (!command.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" store.displayStore();","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" } else if (command.contains(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" int id \u003d Integer.parseInt(command.split(\" \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" store.unmarkTask(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Oh no! You have to unmark the items based on their index,\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" \"if you are not sure of the index, enter \u0027list\u0027 to check it out:)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" } else if (command.contains(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" int id \u003d Integer.parseInt(command.split(\" \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" store.markTask(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Oh no! You have to mark the items based on their index,\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" \"if you are not sure of the index, enter \u0027list\u0027 to check it out:)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" } else if (command.contains(\"delete\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":" int id \u003d Integer.parseInt(command.split(\" \")[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" store.deleteTask(id);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Oh no! You have to delete the items based on their index,\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" \"if you are not sure of the index, enter \u0027list\u0027 to check it out:)\");","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" System.out.println(store.addText(command));","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":" } catch (DukeException d) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":" command \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ziyang27"},"content":" // Exiting","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ziyang27"},"content":" sc.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":57}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" protected String start;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" protected String end;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" this.start \u003d start.trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":" this.end \u003d end.trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":15}},{"path":"src/main/java/Store.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"public class Store {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" private ArrayList\u003cTask\u003e storage \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":" private int count \u003d 0;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" private HashSet\u003cString\u003e taskType \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" public Store(String[] types) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" for (String type : types) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" taskType.add(type);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" public String addText(String text) throws DukeException{","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" String[] tokens \u003d text.split(\"/\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" String type_and_description \u003d tokens[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" String type \u003d type_and_description.split(\" \")[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" if (!taskType.contains(type)) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" throw new DukeException(\"Oh no! There is no such task :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" String description \u003d type_and_description.substring(type.length());","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" throw new DukeException(\"Oh no! We need a description for your task :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" Task task;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" if (type.equals(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" } else if (type.equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" String by \u003d tokens[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" throw new DukeException(\"Oh no! Please state the deadline of the task :D\");","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" String from \u003d tokens[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" String to \u003d tokens[2];","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":" throw new DukeException(\"Oh no! Please state the start and end of the task :D\");","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":" storage.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":" count++;","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ziyang27"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + task.toString() + \"\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":" \"Now you have \" + this.count + (count \u003e 1 ? \" tasks \" : \" task \") +","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":" \"in the list.\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ziyang27"},"content":" public void displayStore() {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":" for (int i \u003d 0; i \u003c count; ++i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ziyang27"},"content":" System.out.println((i + 1) + \".\" + storage.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ziyang27"},"content":" System.out.println();","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ziyang27"},"content":" public void markTask(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ziyang27"},"content":" Task task \u003d storage.get(i - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ziyang27"},"content":" public void unmarkTask(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ziyang27"},"content":" Task task \u003d storage.get(i - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ziyang27"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ziyang27"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Noted. I\u0027m removing this task: \\n\" + storage.get(i - 1).toString() +","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"ziyang27"},"content":" \"Now you have \" + --count + (count \u003e 1 ? \" tasks \" : \" task \") + \"in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"ziyang27"},"content":" storage.remove(i - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":78}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":" this.description \u003d description.trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" return (isDone ? \"[X] \" : \"[ ] \") + this.description ;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + this.toString() + \"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" + this.toString() + \"\\n\");","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":23}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"event national day /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"deadline finish ip /by 25th August","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"todo buy iphone","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ziyang27":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":"ziyang27"},"content":"java -classpath ..\\bin Dibo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"ziyang27":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":"ziyang27"},"content":"java -classpath ../bin Dibo \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-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":{"ziyang27":1,"-":37}}] diff --git a/ziyang27_ip_master/commits.json b/ziyang27_ip_master/commits.json index 610d9515..a3a8aba6 100644 --- a/ziyang27_ip_master/commits.json +++ b/ziyang27_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ziyang27":[{"date":"2024-01-24","commitResults":[{"hash":"7af89c0984f366193f21f54a0700ab88c9518eb6","isMergeCommit":false,"messageTitle":"Rename, Greet, and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"2a186bc80413949aa0398f90600b0304f2414f05","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"f8ac017607463ce0f953de5dc26d0e719afc1f19","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":1}}},{"hash":"b382bb33d3b19564ba0e834c2b522dd8a6e35817","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":4}}},{"hash":"b783510cc76fb579081be35e58f6141c1d31ab37","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":19}}},{"hash":"3ac2b695226650e329d2b14fea5955a42ca4f0a1","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":5,"deletions":4},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"2eaac2d6ccbb07e8f974a9eb9b55a2df0c6e0e5b","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":12}}},{"hash":"dae4622d9aed4e38ed33a7369c462d24209ff25d","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":16}}}]}]},"authorFileTypeContributionMap":{"ziyang27":{"java":203,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"ziyang27":16340.141},"authorDisplayNameMap":{"ziyang27":"CS2103T-F13-2 TAN ..YANG"}} +{"authorDailyContributionsMap":{"ziyang27":[{"date":"2024-01-24","commitResults":[{"hash":"7af89c0984f366193f21f54a0700ab88c9518eb6","isMergeCommit":false,"messageTitle":"Rename, Greet, and Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"2a186bc80413949aa0398f90600b0304f2414f05","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"f8ac017607463ce0f953de5dc26d0e719afc1f19","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":1}}},{"hash":"b382bb33d3b19564ba0e834c2b522dd8a6e35817","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":4}}},{"hash":"b783510cc76fb579081be35e58f6141c1d31ab37","isMergeCommit":false,"messageTitle":"ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":19}}},{"hash":"3ac2b695226650e329d2b14fea5955a42ca4f0a1","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":5,"deletions":4},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"2eaac2d6ccbb07e8f974a9eb9b55a2df0c6e0e5b","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":12}}},{"hash":"dae4622d9aed4e38ed33a7369c462d24209ff25d","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":16}}}]},{"date":"2024-01-30","commitResults":[{"hash":"b2b83c38df2c51f8699d1b35f218cbba78df101e","isMergeCommit":false,"messageTitle":"Update program logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"ziyang27":{"java":203,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"ziyang27":8940.908},"authorDisplayNameMap":{"ziyang27":"CS2103T-F13-2 TAN ..YANG"}} diff --git a/ziyi22_ip_master/authorship.json b/ziyi22_ip_master/authorship.json index f2c42281..dff2779b 100644 --- a/ziyi22_ip_master/authorship.json +++ b/ziyi22_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" protected String by;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" return \" [D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" private static final Tasks taskManager \u003d new Tasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" greetUser();","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" echo();","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" exit();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" private static void greetUser() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Hello! I\u0027m Judy\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"ziyi22"},"content":" private static void echo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"ziyi22"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"ziyi22"},"content":" String command;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"ziyi22"},"content":" do {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"ziyi22"},"content":" command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ziyi22"},"content":" if(command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"ziyi22"},"content":" } else if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"ziyi22"},"content":" taskManager.listOutTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ziyi22"},"content":" } else if (command.startsWith(\"mark\")){","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ziyi22"},"content":" taskManager.markTask(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ziyi22"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ziyi22"},"content":" taskManager.unmarkTask(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"ziyi22"},"content":" taskManager.addTask(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ziyi22"},"content":" } while (true);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"ziyi22"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"ziyi22"},"content":" private static void exit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ziyi22":43,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" protected String from;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" protected String to;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":" return \" [E]\" + super.toString() + \" (from: \" + this.from + \" to: \"+ this.to + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ziyi22"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ziyi22"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ziyi22"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":26}},{"path":"src/main/java/Tasks.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Tasks {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" private static final int MAX_TASKS \u003d100;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" private static Task[] tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" private static int taskCount;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" public Tasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" tasks \u003d new Task[MAX_TASKS];","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" taskCount \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" public static boolean isFull() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" return taskCount \u003e\u003d MAX_TASKS;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":" public void markTask(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ziyi22"},"content":" String[] words \u003d command.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ziyi22"},"content":" int taskId \u003d Integer.parseInt(words[1]) -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ziyi22"},"content":" Task t \u003d tasks[taskId];","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ziyi22"},"content":" tasks[taskId].markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Nice ! I\u0027ve marked this task as done: \\n\" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ziyi22"},"content":" public void unmarkTask(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ziyi22"},"content":" String[] words \u003d command.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ziyi22"},"content":" int taskId \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ziyi22"},"content":" Task t \u003d tasks[taskId];","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ziyi22"},"content":" t.markAsUndone();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Ok, I\u0027ve marked this task as not done yet: \\n\" + t);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ziyi22"},"content":" public void addTask(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ziyi22"},"content":" Task t;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ziyi22"},"content":" switch (getTaskType(command)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ziyi22"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ziyi22"},"content":" t \u003d new Todo(command.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ziyi22"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ziyi22"},"content":" t \u003d createDeadline(command.substring(9));","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ziyi22"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ziyi22"},"content":" t \u003d createEvent(command.substring(6));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ziyi22"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Invalid command. Please use \u0027todo\u0027, \u0027deadline\u0027 or \u0027event\u0027. \");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ziyi22"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ziyi22"},"content":" if (! Tasks.isFull()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ziyi22"},"content":" tasks[taskCount++] \u003d t;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Got it. I\u0027ve added this task: \\n\" + t);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Now you have \" + taskCount + \" tasks in the list. \");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Task list is full.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ziyi22"},"content":" public void listOutTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ziyi22"},"content":" if (taskCount \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" No task added\");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Here are the tasks in your list: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ziyi22"},"content":" for(int i \u003d 0; i \u003c taskCount; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ziyi22"},"content":" int seq \u003d i+1;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ziyi22"},"content":" Task t \u003d tasks[i];","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" \" + seq + \". \" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ziyi22"},"content":" private String getTaskType(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ziyi22"},"content":" return command.trim().split(\"\\\\s+\")[0].toLowerCase();","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ziyi22"},"content":" private static Deadline createDeadline(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ziyi22"},"content":" String[] parts \u003d command.split(\"/by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ziyi22"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ziyi22"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ziyi22"},"content":" return new Deadline(taskDescription, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ziyi22"},"content":" private static Event createEvent(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ziyi22"},"content":" String[] parts \u003d command.split(\"/from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ziyi22"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ziyi22"},"content":" String[] eventDetails \u003d parts[1].split(\"/to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ziyi22"},"content":" String from \u003d eventDetails[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ziyi22"},"content":" String to \u003d eventDetails[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ziyi22"},"content":" return new Event(taskDescription, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":88}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" return \" [T]\" + super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":11}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" protected String by;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" return \" [D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" private static final Tasks taskManager \u003d new Tasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" greetUser();","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" echo();","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" exit();","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" private static void greetUser() {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Hello! I\u0027m Judy\");","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"ziyi22"},"content":" private static void echo() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"ziyi22"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"ziyi22"},"content":" String command;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"ziyi22"},"content":" do {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"ziyi22"},"content":" command \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ziyi22"},"content":" if(command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"ziyi22"},"content":" } else if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"ziyi22"},"content":" taskManager.listOutTasks();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ziyi22"},"content":" } else if (command.startsWith(\"mark\")){","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ziyi22"},"content":" taskManager.markTask(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ziyi22"},"content":" } else if (command.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ziyi22"},"content":" taskManager.unmarkTask(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"ziyi22"},"content":" taskManager.addTask(command);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ziyi22"},"content":" } while (true);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"ziyi22"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"ziyi22"},"content":" private static void exit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"ziyi22"},"content":" System.out.println(\"____________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ziyi22":43,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" protected String from;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" protected String to;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":" return \" [E]\" + super.toString() + \" (from: \" + this.from + \" to: \"+ this.to + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" protected String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ziyi22"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ziyi22"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ziyi22"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":26}},{"path":"src/main/java/Tasks.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Tasks {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":" private static final int MAX_TASKS \u003d100;","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" private static Task[] tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" private static int taskCount;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":" public Tasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" tasks \u003d new Task[MAX_TASKS];","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" taskCount \u003d 0;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":" public static boolean isFull() {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ziyi22"},"content":" return taskCount \u003e\u003d MAX_TASKS;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"ziyi22"},"content":" public void markTask(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"ziyi22"},"content":" String[] words \u003d command.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"ziyi22"},"content":" int taskId \u003d Integer.parseInt(words[1]) -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"ziyi22"},"content":" Task t \u003d tasks[taskId];","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"ziyi22"},"content":" tasks[taskId].markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Nice ! I\u0027ve marked this task as done: \\n\" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"ziyi22"},"content":" public void unmarkTask(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"ziyi22"},"content":" String[] words \u003d command.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"ziyi22"},"content":" int taskId \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"ziyi22"},"content":" Task t \u003d tasks[taskId];","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"ziyi22"},"content":" t.markAsUndone();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Ok, I\u0027ve marked this task as not done yet: \\n\" + t);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"ziyi22"},"content":" public void addTask(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"ziyi22"},"content":" Task t;","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"ziyi22"},"content":" switch (getTaskType(command)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"ziyi22"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"ziyi22"},"content":" t \u003d new Todo(command.substring(5));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"ziyi22"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"ziyi22"},"content":" t \u003d createDeadline(command.substring(9));","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"ziyi22"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"ziyi22"},"content":" t \u003d createEvent(command.substring(6));","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"ziyi22"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"ziyi22"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Invalid command. Please use \u0027todo\u0027, \u0027deadline\u0027 or \u0027event\u0027. \");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"ziyi22"},"content":" return;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"ziyi22"},"content":" if (! Tasks.isFull()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"ziyi22"},"content":" tasks[taskCount++] \u003d t;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Got it. I\u0027ve added this task: \\n\" + t);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Now you have \" + taskCount + \" tasks in the list. \");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Task list is full.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ziyi22"},"content":" public void listOutTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"ziyi22"},"content":" if (taskCount \u003d\u003d 0) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" No task added\");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"ziyi22"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" Here are the tasks in your list: \");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"ziyi22"},"content":" for(int i \u003d 0; i \u003c taskCount; i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ziyi22"},"content":" int seq \u003d i+1;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ziyi22"},"content":" Task t \u003d tasks[i];","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"ziyi22"},"content":" System.out.println(\" \" + seq + \". \" + t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"ziyi22"},"content":" private String getTaskType(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"ziyi22"},"content":" return command.trim().split(\"\\\\s+\")[0].toLowerCase();","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"ziyi22"},"content":" private static Deadline createDeadline(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"ziyi22"},"content":" String[] parts \u003d command.split(\"/by \");","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"ziyi22"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"ziyi22"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"ziyi22"},"content":" return new Deadline(taskDescription, by);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"ziyi22"},"content":" private static Event createEvent(String command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"ziyi22"},"content":" String[] parts \u003d command.split(\"/from \");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"ziyi22"},"content":" String taskDescription \u003d parts[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"ziyi22"},"content":" String[] eventDetails \u003d parts[1].split(\"/to \");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"ziyi22"},"content":" String from \u003d eventDetails[0].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"ziyi22"},"content":" String to \u003d eventDetails[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"ziyi22"},"content":" return new Event(taskDescription, from, to);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":88}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":" super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":" return \" [T]\" + super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"ziyi22"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ziyi22"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ziyi22"},"content":"todo borrow book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ziyi22"},"content":"deadline return book /by Monday","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ziyi22"},"content":"event Project Meeting /from Wed 5pm /to 8pm","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"ziyi22"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"ziyi22"},"content":"mark 2","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ziyi22"},"content":"mark 3","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ziyi22"},"content":"unmark 3","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ziyi22"},"content":"todo watch movie","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ziyi22"},"content":"bye","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ziyi22":9}}] diff --git a/ziyi22_ip_master/commits.json b/ziyi22_ip_master/commits.json index 2f10b9e8..06c49dde 100644 --- a/ziyi22_ip_master/commits.json +++ b/ziyi22_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ziyi22":[{"date":"2024-01-29","commitResults":[{"hash":"f135f327b0f28a23e3487e6d6c734cf774be8048","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"33f0aee646362cfc6e5e688525742fbbe3aa2ff5","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":4}}},{"hash":"ac66dfa512f9c61a76867430fa91f0cdd612a376","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":7}}}]},{"date":"2024-01-30","commitResults":[{"hash":"ce4e9f8b7f8b61621545853d507d00d03cbcbe67","isMergeCommit":false,"messageTitle":"Level-3: Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":11}}},{"hash":"e5e3ebda0da627d06ba88f1bb5a9599d4fd2341c","isMergeCommit":false,"messageTitle":"Level-4: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":39}}}]}]},"authorFileTypeContributionMap":{"ziyi22":{"java":196,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"ziyi22":4607.6665},"authorDisplayNameMap":{"ziyi22":"CS2103T-T14-1 YEO ..I YI"}} +{"authorDailyContributionsMap":{"ziyi22":[{"date":"2024-01-29","commitResults":[{"hash":"f135f327b0f28a23e3487e6d6c734cf774be8048","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"33f0aee646362cfc6e5e688525742fbbe3aa2ff5","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":4}}},{"hash":"ac66dfa512f9c61a76867430fa91f0cdd612a376","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":7}}}]},{"date":"2024-01-30","commitResults":[{"hash":"ce4e9f8b7f8b61621545853d507d00d03cbcbe67","isMergeCommit":false,"messageTitle":"Level-3: Mark as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":11}}},{"hash":"e5e3ebda0da627d06ba88f1bb5a9599d4fd2341c","isMergeCommit":false,"messageTitle":"Level-4: ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":39}}},{"hash":"bb89d3649b1ab47faf169153b7415f064e31d2bb","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"ziyi22":{"java":196,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"ziyi22":4930.354},"authorDisplayNameMap":{"ziyi22":"CS2103T-T14-1 YEO ..I YI"}}